Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
База данных Azure для PostgreSQL — это реляционная служба баз данных на основе ядра СУБД Postgres с открытым исходным кодом. Это полностью управляемая база данных как услуга, которая может обрабатывать критически важные рабочие нагрузки с прогнозируемой производительностью, безопасностью, высокой доступностью и динамической масштабируемостью.
Начиная с версии 4.5.0, Spring Cloud Azure поддерживает различные типы учетных данных для проверки подлинности на гибком сервере Базы данных Azure для PostgreSQL.
Поддерживаемая версия PostgreSQL
Поддерживаемые версии см. в разделе Поддерживаемые основные версии PostgreSQL в Базе данных Azure для PostgreSQL — гибкий сервер.
Основные функции
Подключение без пароля
Подключение без пароля использует проверку подлинности Microsoft Entra для подключения к службам Azure без хранения учетных данных в приложении, его файлах конфигурации или переменных среды. Проверка подлинности Microsoft Entra — это механизм подключения к базе данных Azure для PostgreSQL с помощью удостоверений, определенных в идентификаторе Microsoft Entra. С помощью проверки подлинности Microsoft Entra можно управлять удостоверениями пользователей базы данных и другими службами Майкрософт в центральном расположении, что упрощает управление разрешениями.
Принцип работы
Spring Cloud Azure сначала создаст один из следующих типов учетных данных в зависимости от конфигурации проверки подлинности приложения:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredentialDefaultAzureCredential
Если ни один из этих типов учетных данных не найден, DefaultAzureCredential учетные данные будут получены из свойств приложения, переменных среды, управляемых удостоверений или интегрированной среды разработки. Дополнительные сведения см. в аутентификации Spring Cloud Azure.
На следующей высокоуровневой схеме показано, как работает проверка подлинности с помощью проверки подлинности учетных данных OAuth с базой данных Azure для PostgreSQL. Стрелки указывают пути связи.
схема
Конфигурация
Spring Cloud Для PostgreSQL поддерживает следующие два уровня конфигурации:
Параметры глобальной конфигурации проверки подлинности
credentialиprofileс префиксамиspring.cloud.azure.Общие параметры конфигурации Spring Cloud для PostgreSQL.
В следующей таблице показаны распространенные параметры конфигурации Azure Spring Cloud для PostgreSQL:
| Имя | Описание |
|---|---|
spring.datasource.azure.passwordless-enabled |
Следует ли включить подключения без пароля к базам данных Azure с помощью учетных данных токена Microsoft Entra OAuth2. |
spring.datasource.azure.credential.client-certificate-password |
Пароль файла сертификата. |
spring.datasource.azure.credential.client-certificate-path |
Путь к файлу сертификата PEM для использования при выполнении проверки подлинности субъекта-службы с помощью Azure. |
spring.datasource.azure.credential.client-id |
Идентификатор клиента, используемый при выполнении проверки подлинности субъекта-службы с помощью Azure. Это устаревшее свойство. |
spring.datasource.azure.credential.client-secret |
Секрет клиента, используемый при выполнении проверки подлинности субъекта-службы с помощью Azure. Это устаревшее свойство. |
spring.datasource.azure.credential.managed-identity-enabled |
Следует ли включить управляемое удостоверение для проверки подлинности в Azure. Если заданы true и client-id, используйте идентификатор клиента в качестве идентификатора клиента, назначаемого пользователем. Значение по умолчанию — false. |
spring.datasource.azure.credential.password |
Пароль, используемый при выполнении проверки подлинности имени пользователя или пароля в Azure. |
spring.datasource.azure.credential.username |
Имя пользователя, используемое при выполнении проверки подлинности имени пользователя или пароля в Azure. |
spring.datasource.azure.profile.cloud-type |
Имя облака Azure для подключения. |
spring.datasource.azure.profile.environment.active-directory-endpoint |
Конечная точка Microsoft Entra для подключения. |
spring.datasource.azure.profile.tenant-id |
Идентификатор клиента для ресурсов Azure. Значения, допустимые для tenant-id: common, organizations, consumersили идентификатор клиента. |
Настройка зависимостей
Добавьте в проект следующую зависимость. Это автоматически включает spring-boot-starter зависимость в проекте транзитивно.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId>
</dependency>
Заметка
С версии 4.5.0поддерживаются бессерверные подключения.
Не забудьте добавить spring-cloud-azure-dependencies BOM вместе с приведенной выше зависимостью. Дополнительные сведения см. в разделе
Базовое использование
В следующих разделах показаны классические сценарии использования приложений Spring Boot.
Важный
Подключение без пароля использует проверку подлинности Microsoft Entra. Чтобы использовать проверку подлинности Microsoft Entra, сначала необходимо задать пользователя администратора Microsoft Entra. Только пользователь администратора Microsoft Entra может создавать и включать пользователей для проверки подлинности на основе идентификаторов Майкрософт. Дополнительные сведения см. в статье Use Spring Data JDBC with Azure Database for PostgreSQL.
Подключение к Azure PostgreSQL локально без пароля
Сведения о создании пользователей и предоставлении разрешений см. в разделе Создание пользователя, отличного от администратора PostgreSQL, и предоставление разрешений раздела Use Spring Data JDBC with Azure Database for PostgreSQL.
Настройте следующие свойства в файле application.yml:
spring: datasource: url: jdbc:postgresql://${AZ_DATABASE_SERVER_NAME}.postgres.database.azure.com:5432/${AZ_DATABASE_NAME}?sslmode=require username: ${AZ_POSTGRESQL_AD_NON_ADMIN_USERNAME} azure: passwordless-enabled: true
Подключение к Azure PostgreSQL с помощью субъекта-службы
Назначьте роль субъекту-службе:
Создайте скрипт SQL с именем create_ad_user_sp.sql для создания пользователя без администратора. Добавьте следующее содержимое и сохраните его локально:
Важный
Убедитесь, что
<service-principal-name>уже существует в клиенте Microsoft Entra, или вы не сможете создать пользователя без администратора.cat << EOF > create_ad_user_sp.sql select * from pgaadauth_create_principal('<service-principal-name>', false, false); EOFИспользуйте следующую команду, чтобы запустить скрипт SQL для создания пользователя, отличного от администратора Microsoft Entra:
psql "host=$AZ_DATABASE_SERVER_NAME.postgres.database.azure.com user=$CURRENT_USERNAME@$AZ_DATABASE_SERVER_NAME dbname=postgres port=5432 password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) sslmode=require" < create_ad_user_sp.sqlТеперь используйте следующую команду, чтобы удалить временный файл скрипта SQL:
rm create_ad_user_sp.sql
Настройте следующие свойства в файле application.yml:
spring: cloud: azure: credential: client-id: ${AZURE_CLIENT_ID} client-secret: ${AZURE_CLIENT_SECRET} profile: tenant-id: <tenant> datasource: url: jdbc:postgresql://${AZ_DATABASE_SERVER_NAME}.postgres.database.azure.com:5432/${AZ_DATABASE_NAME}?sslmode=require username: ${AZ_POSTGRESQL_AD_SP_USERNAME} azure: passwordless-enabled: true
Заметка
Значения, допустимые для tenant-id: common, organizations, consumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе Используется неправильная конечная точка (личные учетные записи и учетные записи организации) ошибки AADSTS50020. Учетная запись пользователя от поставщика удостоверений не существует вклиента. Сведения о преобразовании приложения с одним клиентом см. в статье Преобразование однотенантного приложения в мультитенантное приложение наидентификатора Microsoft Entra.
Подключение к Azure PostgreSQL с помощью управляемого удостоверения в Azure Spring Apps
Чтобы включить управляемое удостоверение, см. раздел Назначение управляемого удостоверения с помощью портала Azure раздела Миграция приложения для использования бессерверных подключений с базой данных Azure для PostgreSQL.
Сведения о предоставлении разрешений см. в разделе Назначение ролей управляемому удостоверению раздела Миграция приложения на использование бессерверных подключений с базой данных Azure для PostgreSQL.
Настройте следующие свойства в файле application.yml:
spring: cloud: azure: credential: managed-identity-enabled: true client-id: ${AZURE_CLIENT_ID} datasource: url: jdbc:postgresql://${AZ_DATABASE_SERVER_NAME}.postgres.database.azure.com:5432/${AZ_DATABASE_NAME}?sslmode=require username: ${AZ_POSTGRESQL_AD_MI_USERNAME} azure: passwordless-enabled: true
Заметка
Дополнительные сведения см. в руководстве по . Развертывание приложения Spring в Azure Spring Apps с подключением без пароля к базе данных Azure
Образцы
См. репозиторий azure-spring-boot-samples на сайте GitHub.