Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как использовать spring Cloud Azure поддержку MySQL для подключения приложений Spring Boot к База данных Azure для MySQL с гибкими параметрами проверки подлинности, включая проверку подлинности без пароля Microsoft Entra.
В 4.5.0версии Spring Cloud Azure поддерживает различные типы учетных данных для проверки подлинности на гибком сервере Базы данных Azure для MySQL.
Поддерживаемая версия MySQL
Текущая версия начального сервера должна использовать версию гибкого сервера Базы данных Azure для MySQL 5.7 или 8.0.
Основные функции
Подключение без пароля
Подключение без пароля использует проверку подлинности Microsoft Entra для подключения к службам Azure без хранения учетных данных в приложении, его файлах конфигурации или переменных среды. Проверка подлинности Microsoft Entra — это механизм подключения к базе данных Azure для MySQL с помощью удостоверений, определенных в идентификаторе Microsoft Entra. Используя аутентификацию Microsoft Entra, вы можете управлять идентификаторами пользователей базы данных и другими службами Microsoft в одном централизованном месте, что упрощает управление разрешениями.
Принцип работы
Spring Cloud Azure сначала создает один из следующих типов учетных данных в зависимости от конфигурации проверки подлинности приложения:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredentialDefaultAzureCredential
Если приложение не находит ни одного из этих типов учетных данных, он получает DefaultAzureCredential учетные данные из свойств приложения, переменных среды, управляемых удостоверений или интегрированной среды разработки. Дополнительные сведения см. в аутентификации Spring Cloud Azure.
На следующей высокоуровневой схеме показано, как работает проверка подлинности с помощью проверки подлинности учетных данных OAuth с База данных Azure для MySQL. Стрелки указывают пути связи.
схема
Конфигурация
Azure Spring Cloud для MySQL поддерживает следующие два уровня параметров конфигурации:
Параметры глобальной конфигурации проверки подлинности
credentialиprofileс префиксамиspring.cloud.azure.Распространенные параметры конфигурации Spring Cloud для MySQL.
В следующей таблице показаны распространенные параметры конфигурации Azure Spring Cloud для MySQL:
| Имя | Описание |
|---|---|
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-mysql</artifactId>
</dependency>
Заметка
Подключения без пароля поддерживаются начиная с версии 4.5.0.
Не забудьте добавить BOM spring-cloud-azure-dependencies вместе с предыдущей зависимостью. Дополнительные сведения см. в разделе
Базовое использование
В следующих разделах показаны классические сценарии использования приложений Spring Boot.
Важный
Подключение без пароля использует проверку подлинности Microsoft Entra. Чтобы использовать проверку подлинности Microsoft Entra, сначала задайте пользователя Microsoft Entra администратора. Только пользователь администратора Microsoft Entra может создавать и включать пользователей для проверки подлинности на основе идентификаторов Майкрософт. Дополнительные сведения см. в статье Use Spring Data JDBC with База данных Azure для MySQL.
Подключение к Azure MySQL локально без пароля
Сведения о создании пользователей и предоставлении разрешений см. в разделе Создание пользователя, не отличного от администратора MySQL, и предоставление разрешений раздела Use Spring Data JDBC with База данных Azure для MySQL.
Настройте следующие свойства в файле application.yml:
spring: datasource: url: jdbc:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_NON_ADMIN_USERNAME} azure: passwordless-enabled: true
Подключение к Azure MySQL с помощью субъекта-службы
Создайте Microsoft Entra пользователя для субъекта-службы и предоставьте разрешение.
Используйте следующие команды для настройки переменных среды.
export AZURE_MYSQL_AZURE_AD_SP_USERID=$(az ad sp list \ --display-name <service_principal-name> \ --query '[0].appId' --output tsv) export AZURE_MYSQL_AZURE_AD_SP_USERNAME=<YOUR_MYSQL_AZURE_AD_USERNAME> export AZURE_MYSQL_SERVER_NAME=<YOUR_MYSQL_SERVER_NAME> export AZURE_MYSQL_DATABASE_NAME=<YOUR_MYSQL_DATABASE_NAME> export CURRENT_USERNAME=$(az ad signed-in-user show \ --query userPrincipalName \ --output tsv)Создайте скрипт SQL с именем create_ad_user_sp.sql для создания пользователя без администратора. Добавьте следующее содержимое и сохраните его локально:
cat << EOF > create_ad_user_sp.sql SET aad_auth_validate_oids_in_tenant = OFF; CREATE AADUSER '$AZURE_MYSQL_AZURE_AD_SP_USERNAME' IDENTIFIED BY '$AZURE_MYSQL_AZURE_AD_SP_USERID'; GRANT ALL PRIVILEGES ON $AZURE_MYSQL_DATABASE_NAME.* TO '$AZURE_MYSQL_AZURE_AD_SP_USERNAME'@'%'; FLUSH privileges; EOFИспользуйте следующую команду, чтобы запустить скрипт SQL для создания пользователя, отличного от администратора Microsoft Entra:
mysql -h $AZURE_MYSQL_SERVER_NAME.mysql.database.azure.com --user $CURRENT_USERNAME --enable-cleartext-plugin --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) < 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:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_SP_USERNAME} azure: passwordless-enabled: true
Заметка
Допустимые значенияtenant-id: common, organizationsconsumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе Используется неправильная конечная точка (личные учетные записи и учетные записи организации) ошибки AADSTS50020. Учетная запись пользователя от поставщика удостоверений не существует вклиента. Сведения о преобразовании приложения с одним клиентом см. в статье Преобразование однотенантного приложения в мультитенантное приложение наидентификатора Microsoft Entra.
Подключение к Azure MySQL с помощью управляемого удостоверения в Приложения Azure Spring
Чтобы включить управляемое удостоверение, см. раздел Назначение управляемого удостоверения с помощью портала Azure раздела Миграция приложения для использования бессерверных подключений с базой данных Azure для MySQL.
Сведения о предоставлении разрешений см. в разделе Назначение ролей управляемому удостоверению раздела Миграция приложения на использование бессерверных подключений с базой данных Azure для MySQL.
Настройте следующие свойства в файле application.yml:
spring: datasource: url: jdbc:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_MI_USERNAME} azure: passwordless-enabled: true
Образцы
См. репозиторий azure-spring-boot-samples на сайте GitHub.