Настройка внешней аутентификации OAuth для Redshift
Эта функция в настоящее время доступна только для провайдеров удостоверений Okta и Entra ID.
Тарифные планы Enterprise и Enterprise+ в dbt поддерживают аутентификацию OAuth через внешних провайдеров. Когда включена функция External OAuth, пользователи могут авторизоваться с помощью своих учётных данных, используя единый вход (SSO) через поставщика удостоверений (IdP). External OAuth предоставляет пользователям доступ к нескольким приложениям, включая dbt, без передачи сервису их статических учётных данных. Это упрощает для пользователей процесс аутентификации в средах разработки и обеспечивает дополнительный уровень безопасности вашей учётной записи dbt.
Начало работы
Процесс настройки внешнего OAuth потребует переключения между вашими учетными записями dbt, IdP и хранилища данных. Откройте их в нескольких вкладках браузера, чтобы ускорить настройку:
- dbt: Вы будете работать преимущественно на странице Account settings —> Integrations. Для настройки интеграции и создания подключений вам понадобятся соответствующие разрешения.
- Поставщики удостоверений:
- Okta: Вы будете работать в нескольких разделах учетной записи Okta, но начать можно с раздела Applications. Вам понадобятся разрешения на создание приложения и сервера авторизации.
- 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 внизу страницы. Скопируйте этот URI в буфер обмена для использования на следующих шагах.
2. Создание приложения Okta
- В панели управления Okta раскройте раздел Applications и нажмите Applications. Затем нажмите кнопку Create app integration.
- Выберите OIDC в качестве метода входа и Web applications в качестве типа приложения. Нажмите Next.
- Задайте приложению подходящее имя, например «Приложение внешней OAuth-аутентификации для dbt», чтобы его было легко распознать.
- В разделе Grant type включите опцию Refresh token.
- Прокрутите страницу вниз до параметра Sign-in redirect URIs. Вставьте URI перенаправления, полученный в dbt на шаге 1.3.
Окно настройки приложения Okta, в котором для URI перенаправления при входе указано значение из dbt.- Сохраните конфигурацию приложения. Вы вернетесь к нему позже, а пока переходите к следующим шагам.
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
-
Вернитесь на страницу Account settings —> Integrations в dbt, на которой вы были в начале. Теперь пора заполнить все поля.
Integration name: Задайте интеграции понятное имя, включающее сведения, позволяющие определить среду Okta, чтобы будущим пользователям не приходилось гадать, к какой среде она относится.Client IDиClient secrets: Скопируйте эти значения со страницы приложения Okta.
- Authorize URL и Token URL: Находятся в URI метаданных.
-
Нажмите Save, чтобы сохранить конфигурацию.
6. Создание нового подключения в dbt
- Перейдите в Account settings и выберите Connections в меню. Нажмите New connection.
- Настройте
Account,DatabaseиWarehouseкак обычно, а в полеOAuth methodвыберите созданный вами внешний OAuth.
- Прокрутите вниз до блока External OAuth и выберите конфигурацию из списка.
- Сохраните подключение, нажав Save. Настройка External OAuth с Okta завершена!
1. Инициализация настроек dbt
- В своей учетной записи dbt перейдите в Account settings (Настройки учетной записи) —> Integrations (Интеграции).
- Прокрутите страницу вниз до раздела Custom integrations (Пользовательские интеграции) и нажмите Add integrations (Добавить интеграции).
- Оставьте это окно открытым. В поле Integration type (Тип интеграции) можно выбрать Entra ID. Найдите Redirect URI (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, найдите имя сервера ресурсов из предыдущих шагов и нажмите на него.
- Убедитесь, что в разделе Permissions установлен флажок
dbt-redshift, и нажмите Add permissions. - Нажмите Grant admin consent, а затем в появившемся модальном окне нажмите Yes.
- В меню слева выберите Certificates and secrets и нажмите New client secret. Задайте имя секрета, установите срок его действия и нажмите Add.
- Примечание: Microsoft не позволяет создавать секреты с бессрочным действием. Максимальный срок — два года. Обязательно зафиксируйте дату истечения срока действия, чтобы обновить секрет до этой даты и избежать сбоев авторизации пользователей.
- Сразу сохраните
valueдля использования на одном из следующих шагов.- Примечание: Entra ID больше не покажет это значение после того, как вы покинете этот экран.
3. Настройка интеграции в dbt
- Вернитесь на страницу Account settings —> Integrations в dbt, которую вы открывали в начале. Теперь можно приступить к заполнению всех полей. При этом потребуется несколько раз переключаться между учетной записью Entra ID и dbt.
Integration name: задайте интеграции понятное имя, содержащее сведения для идентификации среды Entra ID, чтобы в дальнейшем пользователям не приходилось гадать, к какой среде она относится.Client secrets: находится в приложении Client ID на странице Certificates and secrets.Value— этоClient secret. Обратите внимание, что это значение отображается только при создании; если вы вернетесь позже, Microsoft скроет секрет, и вам придется создать его заново.Client ID: скопируйте значение поля «Application (client) ID» на странице обзора приложения Client ID.Authorization URLиToken URL: в приложении Client ID откройте вкладку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 сервера ресурсов.
Настройка 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.
















