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


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

Область применения: 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. Кроме того, вместо собственной проверки подлинности PostgreSQL в кластере можно включить проверку подлинности Идентификатора Microsoft Entra. После подготовки кластера можно изменить методы проверки подлинности, включенные в кластере. Если включена проверка подлинности идентификатора Microsoft Entra, вы можете добавить несколько пользователей Идентификатора Microsoft Entra в кластер Azure Cosmos DB для PostgreSQL и сделать любого из них администраторами. Пользователь идентификатора Microsoft Entra может быть пользователем или субъектом-службой.

Выбор метода проверки подлинности

Необходимо использовать портал Azure для настройки методов проверки подлинности в кластере Azure Cosmos DB для PostgreSQL.

Выполните следующие действия в кластере Azure Cosmos DB для PostgreSQL, чтобы включить или отключить проверку подлинности Идентификатора Microsoft Entra и собственную проверку подлинности PostgreSQL.

  1. На странице кластера в заголовке управления кластерами выберите проверку подлинности , чтобы открыть параметры управления проверкой подлинности.
  2. В разделе "Методы проверки подлинности" выберите только проверку подлинности PostgreSQL, проверку подлинности Microsoft Entra ID или проверку подлинности PostgreSQL и Идентификатор Microsoft Entra ID в качестве метода проверки подлинности в соответствии с вашими требованиями.

После завершения настройки проверки подлинности идентификатора Microsoft Entra или добавления собственных ролей PostgreSQL на той же странице проверки подлинности .

Настройка проверки подлинности идентификатора Записи Майкрософт

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

Пользователям необходимо разрешить вход в Azure Cosmos DB для PostgreSQL в клиенте Идентификатора Microsoft Entra ID. Эти действия необходимо выполнить один раз для клиента идентификатора Microsoft Entra, который будет использоваться для проверки подлинности в кластерах Azure Cosmos DB для PostgreSQL.

Внимание

Для внесения изменений необходимы разрешения администратора клиента идентификатора Microsoft Entra ID. Ознакомьтесь с рекомендациями по устранению неполадок с разрешениями.

  1. Найдите идентификатор Microsoft Entra в портал Azure.
  2. Откройте службу Microsoft Entra ID.
  3. На странице "Обзор" службы идентификатора Microsoft Entra в разделе "Обзор" найдите идентификатор приложения b4fa09d8-5da5-4352-83d9-05c2a4cf4cf431.
  4. В результатах поиска выберите корпоративное приложение Azure Cosmos DB для PostgreSQL AAD Authentication.
  5. В корпоративном приложении Azure Cosmos DB для PostgreSQL AAD Authentication выберите страницу "Свойства ".
  6. Установите для пользователей значение "Да"и сохраните это изменение.

Примечание.

Для редактирования свойств корпоративного приложения, таких как "Включено для входа пользователей", требуются разрешения, предоставленные глобальным администраторам, администратору облачных приложений или ролям администратора приложений. См . список встроенных ролей Microsoft Entra.

Добавление администраторов идентификатора Microsoft Entra в кластер Azure Cosmos DB для PostgreSQL

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

  1. В разделе проверки подлинности идентификатора Microsoft Entra id выберите "Добавить администраторов идентификатора Майкрософт".
  2. На панели "Выбор администраторов идентификатора Microsoft Entra ID" выберите одного или нескольких допустимых пользователей Microsoft Entra ID или корпоративного приложения в текущем клиенте AD, чтобы быть администратором идентификатора Microsoft Entra в кластере Azure Cosmos DB для PostgreSQL.
  3. Нажмите кнопку "Выбрать ", чтобы подтвердить свой выбор.
  4. На странице проверки подлинности нажмите кнопку "Сохранить" на панели инструментов, чтобы сохранить изменения или продолжить добавление собственных ролей PostgreSQL.

Настройка собственной проверки подлинности PostgreSQL

Чтобы добавить роли Postgres в кластер, выполните следующие действия на странице проверки подлинности :

  1. В разделе проверки подлинности PostgreSQL выберите "Добавить роль PostgreSQL".
  2. Введите имя роли и пароль. Выберите Сохранить.
  3. На странице проверки подлинности выберите "Сохранить на панели инструментов", чтобы сохранить изменения или продолжить добавление пользователей администратора идентификатора Microsoft Entra.

Собственный пользователь PostgreSQL создается на узле координатора кластера и распространяется на все рабочие узлы. Роли, созданные с помощью портал Azure, имеют атрибут LOGIN, что означает, что они истинные пользователи, которые могут войти в базу данных.

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

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

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

  • Командная строка psql: используйте PGPASSWORD переменную для передачи маркера.
  • Другие клиенты на основе libpq: примеры включают общие платформы приложений и реляционные сопоставителя объектов (ORMs).
  • pgAdmin: Clear Connect now at server creation.

Используйте следующие процедуры для проверки подлинности с помощью идентификатора 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, для доступа к 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 минут. Истекает срок действия маркера, определяющий фактическое время окончания срока действия маркера.

Использование маркера в качестве пароля для входа в клиент 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 для подписки для проверки подлинности Идентификатора Microsoft Entra. Если необходимо выполнить проверку подлинности роли 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

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

  1. Снимите флажок "Подключиться " при создании сервера.
  2. Введите сведения о сервере на вкладке "Подключение " и сохраните его.
    1. Убедитесь, что допустимый пользователь идентификатора Microsoft Entra указан в имени пользователя.
  3. В меню объекта pgAdmin выберите "Подключить сервер".
  4. Введите пароль маркера идентификатора Microsoft Entra при появлении запроса.

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

  • 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.

Изменение привилегий для ролей пользователей

Новые роли пользователей обычно используются для предоставления доступа к базе данных с ограниченными привилегиями. Чтобы изменить привилегии пользователя, используйте стандартные команды PostgreSQL, применяя такие средства, как PgAdmin или psql. Дополнительные сведения см. в разделе "Подключение к кластеру".

Например, чтобы разрешить PostgreSQL db_user читать mytable, предоставьте разрешение:

GRANT SELECT ON mytable TO db_user;

Чтобы предоставить те же разрешения роли user@tenant.onmicrosoft.com идентификатора Microsoft Entra, используйте следующую команду:

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";

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