Поделиться через


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

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

Вы можете настроить проверку подлинности Microsoft Entra для гибкого сервера Базы данных Azure для PostgreSQL во время подготовки сервера или более поздней версии. Только администраторы Microsoft Entra могут создавать или включать пользователей для проверки подлинности на основе идентификаторов Майкрософт. Не рекомендуется использовать администратор 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 во время подготовки сервера выберите проверку подлинности PostgreSQL и Microsoft Entra или проверку подлинности Microsoft Entraтолько в качестве метода проверки подлинности.
  2. На вкладке "Задать администратор" выберите допустимого пользователя Microsoft Entra, группу, субъект-службу или управляемое удостоверение в клиенте клиента, чтобы быть администратором Microsoft Entra.

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

Замечание

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

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

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

Это важно

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

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

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

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

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

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

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

Используйте следующие процедуры для проверки подлинности с помощью идентификатора 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... [email protected] dbname=postgres sslmode=require"

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

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

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

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

  • [email protected] — 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 или PgAdmin

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

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

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