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


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

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

Вы можете настроить аутентификацию Microsoft Entra для гибкого экземпляра сервера Azure Database для PostgreSQL либо во время его подготовки, либо позже. Только администраторы Microsoft Entra могут создавать или включать пользователей для проверки подлинности на основе идентификаторов Майкрософт. Не используйте учетную запись администратора Microsoft Entra для выполнения обычных операций с базой данных, так как эта роль обладает повышенными разрешениями пользователя (например, CREATEDB).

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

Предпосылки

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

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

Требования к сети зависят от топологии:

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

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

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

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

Замечание

Во время подготовки сервера можно добавить только одного администратора Microsoft Entra. После создания сервера можно добавить нескольких пользователей администратора 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 работает со стандартными инструментами PostgreSQL, такими как psql, которые не поддерживают Microsoft Entra и поддерживают только указание имени пользователя и пароля при подключении к PostgreSQL.

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

  • Командная строка 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. На вкладке "Подключение" введите сведения о узле. Установите имя пользователя на ваш Microsoft Entra UPN (например, [email protected]). Сохранить.
  4. В дереве выберите сервер и выберите "Подключить сервер".
  5. При появлении запроса вставьте маркер доступа в качестве пароля.

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

  • [email protected] — userPrincipalName пользователя Microsoft Entra.

  • Обязательно используйте точный способ написания пользователя Azure. Имена пользователей и групп Microsoft Entra чувствительны к регистру.

  • Если имя содержит пробелы, используйте обратную косую косую черту (\) перед каждым пробелом, чтобы экранировать его. Azure CLI можно использовать для получения входа пользователя и задания значения для PGUSER переменной среды:

    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. Необходимо быть членом группы, и ее необходимо создать (сопоставить) в базе данных.

Создание субъекта-группы

Создайте субъект группы (роль) в базе данных (замените отображаемое имя по мере необходимости):

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

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

Если включена синхронизация групп (с помощью параметра сервера pgaadauth.enable_group_sync задано значение «ON»), участники должны войти с учетными данными Entra ID, но могут также использовать имя группы в качестве имени пользователя.

  • Имена для входа в группу остаются доступными по соображениям совместимости, но их можно отключить с помощью: ALTER ROLE "ROLE_NAME" NOLOGIN;

  • Роль группы не должна быть удалена для поддержания синхронизации.

  • Группы синхронизируются автоматически каждые 30 минут.

  • Синхронизация вручную может быть активирована с помощью: SELECT * FROM pgaadauth_sync_roles_for_group_members(); (pgaadauth.enable_group_sync параметр должен иметь значение ON).

  • Изменения метаданных группы, таких как имя группы, не синхронизируются

  • Изменения членства в группах синхронизируются

    Замечание

    Управляемые удостоверения и субъекты-службы поддерживаются как члены группы.

Вход в 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 (с учетом регистра).
  • Используйте только имя группы, а не псевдоним члена.
  • Требуется экранировать пробелы, где это необходимо (например, Prod\ DB\ Readonly).
  • Срок действия токена составляет 5–60 минут. Получите его непосредственно перед подключением; Не сохраняйте маркеры в скриптах.

Подсказка

Если аутентификация не удалась, убедитесь, что роль базы данных существует (например, с \du) и проверьте настройку pgaadauth.enable_group_sync.

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