Настройка внешнего OAuth с Redshift EnterpriseEnterprise +
Эта функция в настоящее время доступна только для провайдеров удостоверений Okta и Entra ID.
Тарифные планы dbt Enterprise и Enterprise+ поддерживают аутентификацию OAuth с внешними провайдерами. Когда включена опция External OAuth, пользователи могут авторизовывать свои учетные данные для разработки с помощью единого входа (SSO) через провайдер удостоверений (IdP). External OAuth позволяет пользователям получать доступ к нескольким приложениям, включая dbt, не передавая сервису свои статические учетные данные. Это упрощает процесс аутентификации для сред разработки и обеспечивает дополнительный уровень безопасности для вашей учетной записи dbt.
Начало работы
Процесс настройки внешнего OAuth потребует некоторого взаимодействия между вашими аккаунтами dbt, IdP и хранилища данных. Чтобы ускорить процесс конфигурации, рекомендуется держать их открытыми в нескольких вкладках браузера:
- dbt: Основная работа будет в разделе Account settings —> Integrations. Для настройки интеграции и создания подключений вам потребуются соответствующие права доступа.
- Провайдеры идентификации (Identity providers):
- Okta: Вам предстоит работать в нескольких разделах аккаунта Okta, но начать можно с раздела Applications. Потребуются права на создание приложения и authorization server.
- Entra ID: Требуется администратор с доступом к созданию приложений Entra ID, который также является пользователем в хранилище данных.
- Хранилище данных:
- Redshift: Создайте и управляйте интеграцией с Identity Center совместно с вашим провайдером идентификации.
Если администраторы, отвечающие за эти продукты, — разные люди, лучше координировать работу одновременно, чтобы снизить трение в процессе настройки.
Убедитесь, что ваши администраторы Amazon завершили интеграцию Amazon Identity Center с Okta или Entra ID.
Конфигурация провайдера идентификации
Выберите поддерживаемого провайдера идентификации (IdP), чтобы получить инструкции по настройке внешнего OAuth в его среде и завершению интеграции в dbt:
- Okta
- Entra ID
1. Инициализация настроек dbt
- В вашем аккаунте dbt перейдите в Account settings —> Integrations.
- Прокрутите страницу до раздела Custom integrations и нажмите Add integrations.
- Оставьте это окно открытым. Установите Integration type в значение Okta и обратите внимание на Redirect URI в нижней части страницы. Скопируйте его в буфер обмена — он понадобится на следующих шагах.
2. Создание приложения Okta
- В панели управления Okta раскройте раздел Applications и нажмите Applications. Затем нажмите кнопку Create app integration.
- Выберите OIDC в качестве метода входа и Web applications в качестве типа приложения. Нажмите Next.
- Задайте приложению понятное имя, например “External OAuth app for dbt”, чтобы его было легко идентифицировать.
- В разделе Grant type включите опцию Refresh token.
- Прокрутите страницу до параметра Sign-in redirect URIs. Вставьте redirect URI, полученный из dbt на шаге 1.3.
- Сохраните конфигурацию приложения. Вы вернетесь к нему позже, а пока переходите к следующим шагам.
3. Создание Okta API
- Раскройте раздел Security и выберите API в боковом меню Okta.
- На экране API нажмите Add authorization server. Задайте имя authorization server (подойдет псевдоним вашего аккаунта хранилища данных). В поле Audience скопируйте и вставьте URL входа в хранилище данных. Добавьте описание и нажмите Save.
- На экране конфигурации authorization server откройте Metadata URI в новой вкладке. Информация с этой страницы понадобится на следующих шагах.
- Перейдите на вкладку Scopes и нажмите Add scope. В поле Name укажите
session:role-any. (Необязательно) Настройте Display phrase и Description, затем нажмите Create.
- Откройте вкладку Access policies и нажмите Add policy. Укажите Name и Description, а в поле Assign to выберите The following clients. Начните вводить имя приложения, созданного на шаге 2.3 — оно подставится автоматически. Выберите приложение и нажмите Create Policy.
- На экране access policy нажмите Add rule.
- Задайте правилу понятное имя и прокрутите страницу до раздела token lifetimes. Настройте параметры Access token lifetime is, Refresh token lifetime is и but will expire if not used every в соответствии с политиками вашей организации. Мы рекомендуем значения по умолчанию — 1 час и 90 дней. Более строгие правила увеличивают вероятность того, что пользователям придется чаще проходить повторную аутентификацию.
- Вернитесь на вкладку Settings и оставьте ее открытой в браузере — часть информации понадобится позже.
4. Создание настроек OAuth в хранилище данных
Убедитесь, что администраторы Amazon завершили интеграцию Identity Center с Okta.
Настройте приложение Okta и API в соответствии с конфигурацией Amazon.
5. Настройка интеграции в dbt
-
Вернитесь на страницу dbt Account settings —> Integrations, открытую в начале. Теперь заполните все поля.
Integration name: Укажите описательное имя интеграции, включающее информацию об окружении Okta, чтобы будущим пользователям не приходилось догадываться о ее назначении.Client IDиClient secrets: Получите эти значения на странице приложения Okta.
Authorize URLиToken URL: Эти значения можно найти в metadata URI.
-
Нажмите Save, чтобы сохранить конфигурацию.
6. Создание нового подключения в dbt
- Перейдите в Account settings и выберите Connections в меню. Нажмите New connection.
- Настройте
Account,DatabaseиWarehouseкак обычно, а в полеOAuth methodвыберите созданный вами внешний OAuth.
- Прокрутите страницу до блока External OAuth и выберите нужную конфигурацию из списка.
- Нажмите Save — внешняя OAuth-аутентификация с Okta настроена!
1. Инициализация настроек dbt
- В вашем аккаунте dbt перейдите в Account settings —> Integrations.
- Прокрутите страницу до Custom integrations и нажмите Add integrations.
- Оставьте это окно открытым. Установите Integration type в значение Entra ID и обратите внимание на Redirect URI внизу страницы. Скопируйте его для использования на следующих шагах.
2. Создание приложений Entra ID
В портале Azure необходимо создать два приложения: resource server и client app.
Создание resource server
В вашем аккаунте Entra ID:
-
На странице регистрации приложений нажмите New registration.
- Задайте имя приложения.
- Убедитесь, что Supported account types установлено в значение “Accounts in this organizational directory only (
Org name- Single Tenant).” - Нажмите Register, чтобы перейти к обзору приложения.
-
В левом меню страницы обзора приложения выберите Expose an API.
-
Нажмите Add рядом с Application ID URI — поле будет заполнено автоматически.
-
Нажмите Save.
-
Запишите значение поля
value— оно понадобится позже. -
На той же странице нажмите Add scope:
- Назовите scope
dbt-redshift. - В поле Who can consent? выберите Admins and users.
- В Admin consent display name укажите
dbt-redshiftи добавьте описание. - Убедитесь, что State установлено в Enabled.
- Нажмите Add scope.
- Назовите scope
Создание client app
-
На странице App registration нажмите New registration.
- Задайте имя, однозначно идентифицирующее приложение как client app.
- Убедитесь, что Supported account types установлено в “Accounts in this organizational directory only (
Org name- Single Tenant).” - В поле Redirect URI выберите Web и вставьте Redirect URI из dbt.
- Нажмите Register.
-
На странице обзора приложения выберите API permissions в левом меню и нажмите Add permission.
-
В появившемся окне выберите APIs my organization uses, найдите resource server, созданный ранее, и выберите его.
-
Убедитесь, что разрешение
dbt-redshiftотмечено, и нажмите Add permissions. -
Нажмите Grant admin consent и в модальном окне подтвердите выбор, нажав Yes.
-
В левом меню выберите Certificates and secrets и нажмите New client secret. Укажите имя секрета, срок действия и нажмите Add.
- Примечание: Microsoft не разрешает использовать “forever” в качестве срока действия. Максимальный срок — два года. Крайне важно зафиксировать дату истечения срока действия, чтобы обновить секрет до того, как истечет срок или авторизация пользователя перестанет работать.
-
Сразу запишите значение
valueдля дальнейшего использования.- Примечание: Entra ID больше не покажет это значение после ухода с данной страницы.
3. Настройка интеграции в dbt
- Вернитесь на страницу dbt Account settings —> Integrations, открытую в начале. Здесь потребуется некоторое переключение между аккаунтом Entra ID и dbt.
Integration name: Укажите описательное имя интеграции с информацией об окружении Entra ID.Client secrets: Находится в Client ID на странице Certificates and secrets. ПолеValue— этоClient secret. Учтите, что оно отображается только при создании; Microsoft скрывает секрет при повторном посещении страницы, и его необходимо создавать заново.Client ID: Скопируйте значение Application (client) ID на странице обзора client app.Authorization URLиToken URL: В client app откройте вкладкуEndpoints. Эти URL соответствуют полямOAuth 2.0 authorization endpoint (v2)иOAuth 2.0 token endpoint (v2). Обязательно используйте версию v2 дляOAuth 2.0 authorization endpoint. Не используйте v1. ДляOAuth 2.0 token endpointможно использовать любую версию.Application ID URI: Скопируйте значение поляApplication ID URIсо страницы Overview resource server.
Настройка Trusted Token Issuer в IAM IdC
Trusted token issuer генерирует access token, который используется для идентификации пользователя, а затем аутентифицирует его. Это позволяет сервисам за пределами экосистемы AWS, таким как платформа dbt, подключаться к IAM IdC (и Redshift), используя access tokens, полученные или сгенерированные внешним IdP (Entra ID или Okta).
Следующие шаги описаны в этой статье блога:
- Откройте AWS Management Console и перейдите в IAM Identity Center, затем в раздел Settings.
- Выберите вкладку Authentication и в разделе Trusted token issuers нажмите Create trusted token issuer.
- На странице Set up an external IdP to issue trusted tokens в разделе Trusted token issuer details выполните следующее:
- В поле Issuer URL укажите OIDC discovery URL внешнего IdP, который будет выпускать токены для trusted identity propagation. Обязательно включите завершающий слеш в конце URL.
- В поле Trusted token issuer name укажите имя для идентификации TTI в IAM Identity Center и консоли приложений.
- В разделе Map attributes выполните следующее:
- В поле Identity provider attribute выберите атрибут для сопоставления с атрибутом в identity store Identity Center. Можно выбрать:
- Object Identifier
- Subject
- Other — по нашему опыту, при использовании этого варианта с UPN значение
upnсовпадало сEmail.
Настройка приложения Redshift IdC для использования TTI
Для начала в консоли Amazon Redshift выберите IAM Identity Center connection.
- Выберите приложение Amazon Redshift, созданное в рамках первоначальной настройки.
- Перейдите на вкладку Client connections tab и нажмите Edit.
- В разделе Configure client connections that use third-party IdPs выберите Yes.
- Отметьте checkbox для Trusted token issuer, созданного на предыдущем шаге.
- Введите значение aud claim в разделе Configure selected trusted token issuers. Это должно быть значение Application ID URI, которое вы указали для интеграции в платформе dbt.
Завершение настройки dbt
Если у вас уже есть подключение, убедитесь, что в нем выбран метод аутентификации External OAuth, и выберите интеграцию, созданную ранее. В противном случае создайте новое подключение Redshift, обязательно указав значения для:
- Server Hostname
- OAuth Method
- Database name (это поле находится в разделе Optional Settings)
Это подключение должно быть назначено среде разработки в существующем или новом проекте.
После того как подключение назначено среде разработки, вы можете настроить учетные данные пользователя для этой среды в разделе Account Settings > Your Profile > Credentials > <Your Project Name>. Установите метод аутентификации External OAuth, при необходимости задайте schema и другие поля и сохраните учетные данные. После этого вы сможете нажать кнопку Connect to Redshift.
Проверка подключения в Studio
После инициализации сессии разработки вы можете проверить подключение к Redshift с использованием внешнего OAuth, выполнив команду dbt debug.
















