Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
Azure Cosmos DB для PostgreSQL (с использованием расширения Citus для базы данных PostgreSQL)
В этой статье описана настройка методов проверки подлинности для Azure Cosmos DB для PostgreSQL. Вы управляете пользователями-администраторами Microsoft Entra ID и встроенными ролями PostgreSQL для аутентификации в Azure Cosmos DB для PostgreSQL. Вы также узнаете, как использовать токен удостоверения Microsoft Entra с Azure Cosmos DB для PostgreSQL.
Кластер Azure Cosmos DB для PostgreSQL создается с одной встроенной собственной ролью PostgreSQL с именем citus. После завершения подготовки кластера можно добавить дополнительные собственные роли PostgreSQL.
Вы также можете настроить проверку подлинности Microsoft Entra ID (ранее Azure Active Directory) для Azure Cosmos DB для PostgreSQL. Вы можете включить проверку подлинности Microsoft Entra ID в дополнение к или вместо встроенной проверки подлинности PostgreSQL в вашем кластере. После подготовки кластера можно изменить методы проверки подлинности, включенные в кластере. Если включена проверка подлинности идентификатора Microsoft Entra, вы можете добавить несколько пользователей Идентификатора Microsoft Entra в кластер Azure Cosmos DB для PostgreSQL и сделать любого из них администраторами. Пользователь Microsoft Entra ID может быть пользователем или служебным принципалом.
Выбор метода проверки подлинности
Необходимо использовать портал Azure для настройки методов проверки подлинности в кластере Azure Cosmos DB для PostgreSQL.
Выполните следующие действия в кластере Azure Cosmos DB для PostgreSQL, чтобы включить или отключить проверку подлинности Идентификатора Microsoft Entra и собственную проверку подлинности PostgreSQL.
- На странице кластера в заголовке управления кластерами выберите проверку подлинности , чтобы открыть параметры управления проверкой подлинности.
- В разделе "Методы проверки подлинности" выберите только проверку подлинности PostgreSQL, проверку подлинности Microsoft Entra ID или проверку подлинности PostgreSQL и Идентификатор Microsoft Entra ID в качестве метода проверки подлинности в соответствии с вашими требованиями.
После завершения перейдите к настройке проверки подлинности идентификатора Microsoft Entra или добавлению встроенных ролей PostgreSQL на той же странице проверки подлинности.
Настройка аутентификации Microsoft Entra ID
Требования
Пользователям необходимо разрешить вход в Azure Cosmos DB для PostgreSQL в клиенте Идентификатора Microsoft Entra ID. Эти действия необходимо выполнить один раз для клиента идентификатора Microsoft Entra, который будет использоваться для проверки подлинности в кластерах Azure Cosmos DB для PostgreSQL.
Внимание
Для внесения изменений необходимы разрешения администратора клиента идентификатора Microsoft Entra ID. Ознакомьтесь с рекомендациями по устранению неполадок с разрешениями.
- Найдите идентификатор Microsoft Entra в портал Azure.
- Откройте службу Microsoft Entra ID.
- На странице Обзор службы Microsoft Entra ID в разделе Overview найдите идентификатор приложения b4fa09d8-5da5-4352-83d9-05c2a44cf431.
- В результатах поиска выберите корпоративное приложение Azure Cosmos DB для PostgreSQL AAD Authentication.
- В корпоративном приложении Azure Cosmos DB для PostgreSQL AAD Authentication выберите страницу "Свойства ".
- Установите Доступ для пользователей для входа в значение Да и сохраните изменения.
Примечание.
Для редактирования свойств корпоративного приложения, таких как "Включено для входа пользователей", требуются разрешения, предоставленные роли с привилегиями для обновления свойств корпоративного приложения. Роли, такие как владелец корпоративного приложения, должны иметь разрешение "Обновление свойств корпоративного приложения". Дополнительные сведения см. в статье Роли с минимальными привилегиями в Microsoft Entra, распределенные по задачам - Корпоративные приложения.
Добавьте администраторов Microsoft Entra ID в кластер Azure Cosmos DB для PostgreSQL
Чтобы добавить или удалить роли идентификатора Microsoft Entra в кластере, выполните следующие действия на странице проверки подлинности :
- В разделе идентификации Microsoft Entra ID выберите Добавить администраторов Microsoft Entra ID.
- На панели "Выбор администраторов идентификатора Microsoft Entra ID" выберите одного или нескольких допустимых пользователей Microsoft Entra ID или корпоративного приложения в текущем клиенте AD, чтобы быть администратором идентификатора Microsoft Entra в кластере Azure Cosmos DB для PostgreSQL.
- Нажмите кнопку "Выбрать ", чтобы подтвердить свой выбор.
- На странице проверки подлинности нажмите кнопку "Сохранить" на панели инструментов, чтобы сохранить изменения или продолжить добавление собственных ролей PostgreSQL.
Настройка собственной проверки подлинности PostgreSQL
Чтобы добавить роли Postgres в кластер, выполните следующие действия на странице проверки подлинности :
- В разделе аутентификации PostgreSQL выберите Добавить роль PostgreSQL.
- Введите имя роли и пароль. Выберите Сохранить.
- На странице проверки подлинности выберите "Сохранить на панели инструментов", чтобы сохранить изменения или продолжить добавление пользователей администратора идентификатора Microsoft Entra.
Собственный пользователь PostgreSQL создается на узле координатора кластера и распространяется на все рабочие узлы. Роли, созданные с помощью портал Azure, имеют атрибут LOGIN, что означает, что они истинные пользователи, которые могут войти в базу данных.
Подключение к Azure Cosmos для PostgreSQL с помощью проверки подлинности идентификатора Microsoft Entra
Интеграция идентификатора Microsoft Entra работает со стандартными клиентскими средствами PostgreSQL, такими как psql, которые не знают идентификатора Microsoft Entra и поддерживают только указание имени пользователя и пароля при подключении к PostgreSQL. В таких случаях токен идентификатора Microsoft Entra передается в качестве пароля.
Мы проверили следующие клиенты:
-
Командная строка psql: используйте переменную
PGPASSWORD
для передачи маркера. - Другие клиенты на основе libpq: примеры включают распространённые платформы приложений и объектно-реляционные сопоставители (ORM).
- pgAdmin: Очистить Подключиться сейчас при создании сервера.
Используйте следующие процедуры для проверки подлинности с помощью идентификатора Microsoft Entra в качестве пользователя Azure Cosmos DB для PostgreSQL. Вы можете следовать инструкциям в Azure Cloud Shell, на виртуальной машине Azure или на локальном компьютере.
Вход в подписку Azure пользователя
Сначала выполните проверку подлинности с помощью идентификатора Microsoft Entra с помощью Azure CLI. Этот шаг не требуется в Azure Cloud Shell.
az login
Команда открывает окно браузера на странице проверки подлинности идентификатора Microsoft Entra. Для этого необходимо указать имя пользователя и пароль идентификатора Microsoft Entra.
Имя учетной записи пользователя, используемое для проверки подлинности (например, user@tenant.onmicrosoft.com) является тем, для кого будет создан маркер доступа на следующем шаге.
Получение маркера доступа идентификатора Microsoft Entra
Используйте Azure CLI для получения токена доступа для пользователя, аутентифицированного через Microsoft Entra ID, для доступа к Azure Cosmos для PostgreSQL. Приведем пример:
az account get-access-token --resource https://token.postgres.cosmos.azure.com
После успешной проверки подлинности идентификатор Microsoft Entra возвращает маркер доступа для текущей подписки Azure:
{
"accessToken": "[TOKEN]",
"expiresOn": "[expiration_date_and_time]",
"subscription": "[subscription_id]",
"tenant": "[tenant_id]",
"tokenType": "Bearer"
}
TOKEN — это строка Base64. Он кодирует все сведения об аутентифицированном пользователе и связан со службой Azure Cosmos DB для PostgreSQL. Маркер действителен по крайней мере на 5 минут с максимальным значением 90 минут. expiresOn определяет фактическое время истечения срока действия токена.
Используйте токен в качестве пароля для входа в базу данных через psql клиент.
При подключении рекомендуется использовать маркер доступа в качестве пароля пользователя PostgreSQL.
При использовании клиента командной строки psql маркер доступа необходимо передать через PGPASSWORD
переменную среды. Причина заключается в том, что маркер доступа превышает длину пароля, которую psql может принимать напрямую.
Ниже приведен пример Windows:
set PGPASSWORD=<TOKEN value from the previous step>
$env:PGPASSWORD='<TOKEN value from the previous step>'
Ниже приведен пример Linux или macOS:
export PGPASSWORD=<TOKEN value from the previous step>
Вы также можете объединить предыдущие два шага с помощью подстановки команд. Получение токена можно инкапсулировать в переменную и передать напрямую как значение для переменной среды PGPASSWORD
.
export PGPASSWORD=$(az account get-access-token --resource https://token.postgres.cosmos.azure.com --query "[accessToken]" -o tsv)
Примечание.
Убедитесь, что в переменной PGPASSWORD установлен токен доступа Microsoft Entra ID для вашей подписки для аутентификации Microsoft Entra ID. Если необходимо выполнить проверку подлинности роли Postgres из того же сеанса, вы можете задать переменной PGPASSWORD значение пароля роли Postgres или очистить значение переменной PGPASSWORD, чтобы ввести пароль в интерактивном режиме. Ошибка проверки подлинности произойдет, если в PGPASSWORD будет неправильное значение.
Теперь вы можете инициировать подключение к Azure Cosmos DB для PostgreSQL, используя учетную запись пользователя Microsoft Entra ID, для которой был создан маркер доступа. Это можно сделать так, как вы обычно делаете, с учетной записью пользователя и без параметра «password» в командной строке.
psql "host=mycluster.[uniqueID].postgres.cosmos.azure.com user=user@tenant.onmicrosoft.com dbname=[db_name] sslmode=require"
Используйте маркер в качестве пароля для входа в PgAdmin.
Чтобы подключиться к PgAdmin, используя токен Microsoft Entra ID, выполните следующие действия.
- Снимите флажок "Подключиться " при создании сервера.
- Введите сведения о сервере на вкладке "Подключение " и сохраните его.
- Убедитесь, что указан действительный пользователь учетной записи Microsoft Entra в поле Username.
- В меню объекта pgAdmin выберите "Подключить сервер".
- Введите пароль токена Microsoft Entra ID, когда вас попросят.
Ниже приведены некоторые важные рекомендации при подключении:
-
user@tenant.onmicrosoft.com
— имя пользователя Идентификатора Microsoft Entra. - Обязательно используйте точный способ написания пользователя Azure. Имена пользователей и групп Microsoft Entra ID чувствительны к регистру.
- Если имя содержит пробелы, используйте обратную косую черту (
\
) перед каждым пробелом, чтобы экранировать его. - Срок действия маркера доступа составляет 5 минут до 90 минут. Прежде чем инициировать вход в Azure Cosmos для PostgreSQL, необходимо получить маркер доступа.
Теперь вы прошли проверку подлинности на сервере Azure Cosmos для PostgreSQL с помощью проверки подлинности Идентификатора Microsoft Entra.
Управление встроенными ролями PostgreSQL
Если встроенная проверка подлинности PostgreSQL включена в кластере, вы можете добавлять и удалять роли Postgres в дополнение к встроенной роли citus. Вы также можете сбросить пароль и изменить привилегии Postgres для встроенных ролей.
Как удалить встроенную роль пользователя PostgreSQL или изменить её пароль
Чтобы обновить пользователя, перейдите на страницу проверки подлинности для кластера и выберите многоточие ... рядом с пользователем. Многоточие открывает меню для удаления пользователя или сброса пароля.
Роль citus
— привилегированная, удалить ее невозможно. Однако citus
роль будет отключена, если для кластера выбран метод аутентификации только через Microsoft Entra ID.
Изменение привилегий для ролей пользователей
Новые роли пользователей обычно используются для предоставления доступа к базе данных с ограниченными привилегиями. Чтобы изменить привилегии пользователя, используйте стандартные команды PostgreSQL, применяя такие средства, как PgAdmin или psql. Дополнительные сведения см. в разделе "Подключение к кластеру".
Например, чтобы разрешить PostgreSQL db_user
читать mytable
, предоставьте разрешение:
GRANT SELECT ON mytable TO db_user;
Чтобы предоставить те же разрешения роли Microsoft Entra ID user@tenant.onmicrosoft.com
, используйте следующую команду:
GRANT SELECT ON mytable TO "user@tenant.onmicrosoft.com";
Azure Cosmos DB для PostgreSQL распространяет инструкции GRANT с одной таблицей по всему кластеру, применяя их ко всем рабочим узлам. Также распространяются инструкции GRANT, которые применяются ко всей системе (например, для всех таблиц в схеме):
-- applies to the coordinator node and propagates to worker nodes for Postgres role db_user
GRANT SELECT ON ALL TABLES IN SCHEMA public TO db_user;
Или для роли идентификатора Microsoft Entra
-- applies to the coordinator node and propagates to worker nodes for Azure AD role user@tenant.onmicrosoft.com
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "user@tenant.onmicrosoft.com";