Использование Microsoft Entra ID для проверки подлинности с помощью базы данных 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
службы.
- Необходимо правило группы безопасности сети для исходящей сети (NSG), чтобы разрешить трафик виртуальной сети только для доступа к тегу
Пользовательский DNS. При использовании пользовательского DNS в виртуальная сеть (виртуальная сеть) необходимо учитывать дополнительные рекомендации. В таких случаях важно обеспечить разрешение следующих конечных точек на соответствующие IP-адреса: login.microsoftonline.com: эта конечная точка используется для проверки подлинности. Убедитесь, что пользовательская настройка DNS позволяет разрешать login.microsoftonline.com правильным IP-адресам graph.microsoft.com: эта конечная точка используется для доступа к API Microsoft Graph. Убедитесь, что настраиваемая настройка DNS позволяет разрешить разрешение graph.microsoft.com правильным IP-адресам.
Чтобы настроить администратора Microsoft Entra во время подготовки сервера:
- На портале Azure во время подготовки сервера выберите Проверка подлинности Microsoft Entra и PostgreSQL или Только проверка подлинности Microsoft Entra в качестве способа проверки подлинности.
- На вкладке "Задать администратор" выберите допустимого пользователя Microsoft Entra, группу, субъект-службу или управляемое удостоверение в клиенте клиента, чтобы быть администратором Microsoft Entra.
При необходимости можно добавить локальную учетную запись администратора PostgreSQL, если вы предпочитаете использовать метод проверки подлинности PostgreSQL и Microsoft Entra.
Примечание.
Во время подготовки сервера можно добавить только одного пользователя администратора Azure. После создания сервера можно добавить нескольких пользователей администратора Microsoft Entra.
Чтобы задать администратора Microsoft Entra после создания сервера, выполните следующие действия.
- В портал Azure выберите экземпляр гибкого сервера База данных Azure для PostgreSQL, который требуется включить для идентификатора Microsoft Entra.
- В разделе "Безопасность" выберите "Проверка подлинности". Затем выберите проверку подлинности PostgreSQL и Microsoft Entra или проверку подлинности Microsoft Entra только в качестве метода проверки подлинности в соответствии с вашими требованиями.
- Выберите " Добавить администраторов Microsoft Entra". Затем выберите допустимого пользователя Microsoft Entra, группу, субъект-службу или управляемое удостоверение в клиенте клиента, чтобы быть администратором Microsoft Entra.
- Выберите Сохранить.
Внимание
При настройке администратора новый пользователь добавляется в База данных 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 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"
Использование маркера в качестве пароля для входа с помощью PgAdmin
Чтобы подключиться с помощью маркера Microsoft Entra с PgAdmin, выполните следующие действия:
- Откройте Pgadmin и щелкните "Зарегистрировать " в меню слева и выберите "Сервер"
- На вкладке "Общие" укажите имя подключения и снимите флажок "Подключиться".
- Перейдите на вкладку "Подключение" и у База данных Azure для PostgreSQL кажите сведения о гибком экземпляре сервера для имени узла или адреса и имени пользователя и сохранения. имя пользователя — это идентификатор microsoft Entra или электронная почта
- В меню браузера выберите гибкое подключение к серверу База данных Azure для PostgreSQL и нажмите кнопку "Подключить сервер".
- При появлении запроса введите пароль маркера Active Directory.
Ниже приведены некоторые важные рекомендации при подключении:
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 или PgAdmin
Эти рекомендации важны при подключении в качестве члена группы:
- Имя группы — это имя группы Microsoft Entra, которую вы пытаетесь подключить.
- Обязательно используйте точное имя группы Microsoft Entra. Имена пользователей и групп Microsoft Entra чувствительны к регистру.
- При подключении в качестве группы используйте только имя группы, а не псевдоним члена группы.
- Если имя содержит пробелы, используйте обратную косую косую черту (
\
) перед каждым пробелом, чтобы экранировать его. - Срок действия маркера доступа составляет 5 минут до 60 минут. Перед запуском входа в База данных Azure для PostgreSQL рекомендуется получить маркер доступа.
Теперь вы прошли проверку подлинности на сервере PostgreSQL с помощью проверки подлинности Microsoft Entra.
Следующие шаги
- Ознакомьтесь с общими понятиями проверки подлинности Microsoft Entra с помощью База данных Azure для PostgreSQL — гибкий сервер.
- Узнайте, как управлять пользователями Microsoft Entra — База данных Azure для PostgreSQL — гибким сервером.