Использование идентификатора Microsoft Entra для проверки подлинности с помощью База данных Azure для PostgreSQL — гибкий сервер

Область применения: гибкий сервер Базы данных Azure для PostgreSQL

В этой статье описана настройка доступа идентификатора Microsoft Entra для проверки подлинности с помощью гибкого сервера База данных Azure для PostgreSQL. Вы также узнаете, как использовать токен Microsoft Entra с База данных Azure для PostgreSQL гибким сервером.

Проверку подлинности Microsoft Entra можно настроить для База данных Azure для PostgreSQL гибкого сервера во время подготовки сервера или более поздней версии. Только пользователи-администраторы Microsoft Entra могут создавать или предоставлять возможность пользователям выполнять проверку подлинности Microsoft Entra ID. Не рекомендуется использовать администратор Microsoft Entra для регулярных операций базы данных, так как эта роль имеет повышенные разрешения пользователя (например, CREATEDB).

У вас может быть несколько пользователей администратора Microsoft Entra с гибким сервером База данных Azure для PostgreSQL. Пользователи администратора Microsoft Entra могут быть пользователями, группой или субъектом-службой.

Необходимые компоненты

Настройка требований к сети

Идентификатор Microsoft Entra — это мультитенантное приложение. Для выполнения определенных операций требуется исходящее подключение, например добавление групп администрирования Microsoft Entra. Кроме того, для работы подключения Microsoft Entra требуется сетевое правило, в зависимости от топологии сети:

  • Общедоступный доступ (разрешенные IP-адреса): дополнительные правила сети не требуются.

  • Частный доступ (с интеграцией виртуальной сети):

    • Необходимо правило группы безопасности сети для исходящей сети (NSG), чтобы разрешить трафик виртуальной сети только для доступа к тегу AzureActiveDirectory службы.
    • Если вы используете таблицу маршрутов, необходимо создать правило с тегом AzureActiveDirectory службы назначения и следующим прыжком Internet.
    • При необходимости, если вы используете прокси-сервер, можно добавить новое правило брандмауэра, чтобы разрешить трафик HTTP/S достичь только тега AzureActiveDirectory службы.
  • Пользовательский DNS. При использовании пользовательского DNS в виртуальная сеть (виртуальная сеть) необходимо учитывать дополнительные рекомендации. В таких случаях важно обеспечить разрешение следующих конечных точек на соответствующие IP-адреса: login.microsoftonline.com: эта конечная точка используется для проверки подлинности. Убедитесь, что пользовательская настройка DNS позволяет разрешать login.microsoftonline.com правильным IP-адресам graph.microsoft.com: эта конечная точка используется для доступа к API Microsoft Graph. Убедитесь, что настраиваемая настройка DNS позволяет разрешить разрешение graph.microsoft.com правильным IP-адресам.

Чтобы настроить администратора Microsoft Entra во время подготовки сервера:

  1. На портале Azure во время подготовки сервера выберите Проверка подлинности Microsoft Entra и PostgreSQL или Только проверка подлинности Microsoft Entra в качестве способа проверки подлинности.
  2. На вкладке "Задать администратор" выберите допустимого пользователя Microsoft Entra, группу, субъект-службу или управляемое удостоверение в клиенте клиента, чтобы быть администратором Microsoft Entra.

При необходимости можно добавить локальную учетную запись администратора PostgreSQL, если вы предпочитаете использовать метод проверки подлинности PostgreSQL и Microsoft Entra.

Примечание.

Во время подготовки сервера можно добавить только одного пользователя администратора Azure. После создания сервера можно добавить нескольких пользователей администратора Microsoft Entra.

Screenshot that shows selections for setting a Microsoft Entra admin during server provisioning.]

Чтобы задать администратора Microsoft Entra после создания сервера, выполните следующие действия.

  1. В портал Azure выберите экземпляр гибкого сервера База данных Azure для PostgreSQL, который требуется включить для идентификатора Microsoft Entra.
  2. В разделе "Безопасность" выберите "Проверка подлинности". Затем выберите проверку подлинности PostgreSQL и Microsoft Entra или проверку подлинности Microsoft Entra только в качестве метода проверки подлинности в соответствии с вашими требованиями.
  3. Выберите "Добавить Администратор Microsoft Entra". Затем выберите допустимого пользователя Microsoft Entra, группу, субъект-службу или управляемое удостоверение в клиенте клиента, чтобы быть администратором Microsoft Entra.
  4. Выберите Сохранить.

Screenshot that shows selections for setting a Microsoft Entra admin after server creation.

Внимание

При настройке администратора новый пользователь добавляется в База данных Azure для PostgreSQL гибкий сервер с полными разрешениями администратора.

Подключение База данных Azure для PostgreSQL с помощью идентификатора Microsoft Entra

На следующей высокоуровневой схеме представлен рабочий процесс использования проверки подлинности Microsoft Entra с База данных Azure для PostgreSQL:

Diagram of authentication flow between Microsoft Entra ID, the user's computer, and the server.

Интеграция Microsoft Entra работает со стандартными инструментами PostgreSQL, такими как psql, которые не поддерживают Microsoft Entra и поддерживают только указание имени пользователя и пароля при подключении к PostgreSQL. Как показано на предыдущей схеме, маркер Microsoft Entra передается в качестве пароля.

Мы проверили следующие клиенты:

  • Командная строка psql: используйте PGPASSWORD переменную для передачи маркера.
  • Azure Data Studio: используйте расширение PostgreSQL.
  • Другие клиенты на основе libpq: примеры включают общие платформы приложений и реляционные сопоставителя объектов (ORMs).
  • Pg Администратор. Очистить Подключение теперь при создании сервера.

Проверка подлинности в Microsoft Entra ID

Используйте следующие процедуры для проверки подлинности с помощью идентификатора Microsoft Entra в качестве База данных Azure для PostgreSQL гибкого пользователя сервера. Вы можете следовать инструкциям в Azure Cloud Shell, на виртуальной машине Azure или на локальном компьютере.

Вход в подписку Azure пользователя

Сначала выполните проверку подлинности с помощью идентификатора Microsoft Entra с помощью Azure CLI. Этот шаг не требуется в Azure Cloud Shell.

az login

Команда открывает окно браузера на странице проверки подлинности Microsoft Entra. Для этого необходимо предоставить идентификатор пользователя и пароль Microsoft Entra.

Получение маркера доступа Microsoft Entra

Используйте Azure CLI для получения маркера доступа для пользователя, прошедшего проверку подлинности Microsoft Entra, для доступа к База данных Azure для PostgreSQL. Ниже приведен пример общедоступного облака:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

Предыдущее значение ресурса должно быть указано, как показано ниже. Для других облаков можно найти значение ресурса с помощью следующей команды:

az cloud show

Для Azure CLI версии 2.0.71 и более поздних версий можно указать команду в следующей удобной версии для всех облаков:

az account get-access-token --resource-type oss-rdbms

После успешной проверки подлинности идентификатор Microsoft Entra возвращает маркер доступа:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Маркер представляет собой строку Base64. Он кодирует все сведения об аутентифицированных пользователях и предназначен для службы База данных Azure для PostgreSQL.

Использование маркера в качестве пароля для входа в клиент psql

При подключении рекомендуется использовать маркер доступа в качестве пароля пользователя PostgreSQL.

При использовании клиента командной строки psql маркер доступа необходимо передать через PGPASSWORD переменную среды. Причина заключается в том, что маркер доступа превышает длину пароля, которую psql может принимать напрямую.

Ниже приведен пример Windows:

set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'

Ниже приведен пример Linux или macOS:

export PGPASSWORD=<copy/pasted TOKEN value from step 2>

Вы также можете объединить шаг 2 и шаг 3 вместе с помощью подстановки команд. Получение маркера можно инкапсулировать в переменную и передать непосредственно в качестве значения для PGPASSWORD переменной среды:

export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)

Теперь вы можете инициировать подключение к База данных Azure для PostgreSQL, как правило:

psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com dbname=postgres sslmode=require"

Используйте маркер в качестве пароля для входа с помощью Pg Администратор

Чтобы подключиться с помощью маркера Microsoft Entra с помощью Pg Администратор, выполните следующие действия.

  1. Откройте Pgadmin и щелкните "Зарегистрировать " в меню слева и выберите "Сервер"
  2. На вкладке "Общие" укажите имя подключения и снимите параметр Подключение теперь.
  3. Перейдите на вкладку Подключение ion и укажите сведения о гибком экземпляре сервера База данных Azure для PostgreSQL для имени узла или адреса и имени пользователя и сохранения. имя пользователя — это идентификатор microsoft Entra или электронная почта
  4. В меню браузера выберите подключение База данных Azure для PostgreSQL гибкого сервера и щелкните Подключение Server
  5. При появлении запроса введите пароль маркера Active Directory.

Screenshot that shows login process using PG admin.

Ниже приведены некоторые важные рекомендации при подключении:

  • user@tenant.onmicrosoft.com — userPrincipalName пользователя Microsoft Entra.
  • Обязательно используйте точный способ написания пользователя Azure. Имена пользователей и групп Microsoft Entra чувствительны к регистру.
  • Если имя содержит пробелы, используйте обратную косую косую черту (\) перед каждым пробелом, чтобы экранировать его. Azure CLI можно использовать для получения входа пользователя и задания значения для PGUGSER переменной среды:
    export PGUSER=$(az ad signed-in-user show --query "[userPrincipalName]" -o tsv | sed 's/ /\\ /g')
    
  • Срок действия маркера доступа составляет 5 минут до 60 минут. Перед запуском входа в База данных Azure для PostgreSQL необходимо получить маркер доступа.

Теперь вы прошли проверку подлинности на сервере База данных Azure для PostgreSQL через проверку подлинности Microsoft Entra.

Проверка подлинности с помощью идентификатора Microsoft Entra в качестве члена группы

Создание групп Microsoft Entra на гибком сервере База данных Azure для PostgreSQL

Чтобы включить группу Microsoft Entra для доступа к базе данных, используйте тот же механизм, который использовался для пользователей, но укажите имя группы. Например:

select * from  pgaadauth_create_principal('Prod DB Readonly', false, false).

При входе участников группы они используют маркеры доступа, но указывают имя группы в качестве имени пользователя.

Примечание.

База данных Azure для PostgreSQL гибкий сервер поддерживает управляемые удостоверения и субъекты-службы в качестве членов группы.

Вход в подписку Azure пользователя

Проверка подлинности с помощью идентификатора Microsoft Entra с помощью Azure CLI. Этот шаг не требуется в Azure Cloud Shell. Пользователь должен быть членом группы Microsoft Entra.

az login

Получение маркера доступа Microsoft Entra

Используйте Azure CLI для получения маркера доступа для пользователя, прошедшего проверку подлинности Microsoft Entra, для доступа к База данных Azure для PostgreSQL. Ниже приведен пример общедоступного облака:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

Необходимо указать начальное значение ресурса, как показано ниже. Для других облаков можно найти значение ресурса с помощью следующей команды:

az cloud show

Для Azure CLI версии 2.0.71 и более поздних версий можно указать команду в следующей удобной версии для всех облаков:

az account get-access-token --resource-type oss-rdbms

После успешной проверки подлинности идентификатор Microsoft Entra возвращает маркер доступа:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Используйте маркер в качестве пароля для входа с помощью psql или Pg Администратор

Эти рекомендации важны при подключении в качестве члена группы:

  • Имя группы — это имя группы Microsoft Entra, которую вы пытаетесь подключить.
  • Обязательно используйте точное имя группы Microsoft Entra. Имена пользователей и групп Microsoft Entra чувствительны к регистру.
  • При подключении в качестве группы используйте только имя группы, а не псевдоним члена группы.
  • Если имя содержит пробелы, используйте обратную косую косую черту (\) перед каждым пробелом, чтобы экранировать его.
  • Срок действия маркера доступа составляет 5 минут до 60 минут. Перед запуском входа в База данных Azure для PostgreSQL рекомендуется получить маркер доступа.

Теперь вы прошли проверку подлинности на сервере PostgreSQL с помощью проверки подлинности Microsoft Entra.

Следующие шаги