Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment utiliser la prise en charge de Spring Cloud Azure MySQL pour connecter des applications Spring Boot à Azure Database pour MySQL avec des options d’authentification flexibles, notamment l’authentification sans mot de passe Microsoft Entra.
À partir de la version 4.5.0, Spring Cloud Azure prend en charge différents types d’informations d’identification pour l’authentification auprès du serveur flexible Azure Database pour MySQL.
Version de MySQL prise en charge
La version actuelle du starter doit utiliser la version du serveur flexible Azure Database pour MySQL 5.7 ou 8.0.
Fonctionnalités principales
Connexion sans mot de passe
La connexion sans mot de passe utilise l’authentification Microsoft Entra pour la connexion aux services Azure sans stocker d’informations d’identification dans l’application, ses fichiers de configuration ou dans des variables d’environnement. L’authentification Microsoft Entra est un mécanisme de connexion à Azure Database pour MySQL à l’aide d’identités définies dans l’ID Microsoft Entra. À l’aide de l’authentification Microsoft Entra, vous pouvez gérer les identités utilisateur de base de données et d’autres services Microsoft dans un emplacement central, ce qui simplifie la gestion des autorisations.
Fonctionnement
Spring Cloud Azure crée d’abord l’un des types d’informations d’identification suivants, en fonction de la configuration de l’authentification de l’application :
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredentialDefaultAzureCredential
Si l’application ne trouve aucun de ces types d’informations d’identification, elle obtient DefaultAzureCredential des informations d’identification à partir des propriétés de l’application, des variables d’environnement, des identités managées ou de l’IDE. Pour plus d’informations, consultez l’authentification Spring Cloud Azure.
Le diagramme général suivant résume le fonctionnement de l’authentification à l’aide de l’authentification des informations d’identification OAuth avec Azure Database pour MySQL. Les flèches indiquent les voies de communication.
diagramme
Paramétrage
Spring Cloud Azure pour MySQL prend en charge les deux niveaux suivants d’options de configuration :
Options de configuration d’authentification globale de
credentialet deprofileavec des préfixes despring.cloud.azure.Options de configuration courantes d’Azure Spring Cloud pour MySQL.
Le tableau suivant présente les options de configuration courantes d’Azure Spring Cloud pour MySQL :
| Nom | Descriptif |
|---|---|
spring.datasource.azure.passwordless-enabled |
Indique s’il faut activer les connexions sans mot de passe aux bases de données Azure à l’aide des informations d’identification du jeton Microsoft Entra OAuth2. |
spring.datasource.azure.credential.client-certificate-password |
Mot de passe du fichier de certificat. |
spring.datasource.azure.credential.client-certificate-path |
Chemin d’un fichier de certificat PEM à utiliser lors de l’authentification du principal de service avec Azure. |
spring.datasource.azure.credential.client-id |
ID client à utiliser lors de l’authentification du principal de service avec Azure. Il s’agit d’une propriété héritée. |
spring.datasource.azure.credential.client-secret |
Clé secrète client à utiliser lors de l’authentification du principal de service avec Azure. Il s’agit d’une propriété héritée. |
spring.datasource.azure.credential.managed-identity-enabled |
Indique s’il faut activer l’identité managée pour s’authentifier auprès d’Azure. Si true et que l'client-id est défini, utilisez l’ID client comme ID client d’identité managée affecté par l’utilisateur. La valeur par défaut est false. |
spring.datasource.azure.credential.password |
Mot de passe à utiliser lors de l’exécution de l’authentification par nom d’utilisateur/mot de passe avec Azure. |
spring.datasource.azure.credential.username |
Nom d’utilisateur à utiliser lors de l’exécution de l’authentification par nom d’utilisateur/mot de passe avec Azure. |
spring.datasource.azure.profile.cloud-type |
Nom du cloud Azure auquel se connecter. |
spring.datasource.azure.profile.environment.active-directory-endpoint |
Point de terminaison Microsoft Entra auquel se connecter. |
spring.datasource.azure.profile.tenant-id |
ID de locataire pour les ressources Azure. Les valeurs autorisées pour tenant-id sont : common, organizations, consumersou l’ID de locataire. |
Configuration des dépendances
Ajoutez la dépendance suivante à votre projet. Cette dépendance inclut automatiquement la spring-boot-starter dépendance dans votre projet.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
Remarque
Les connexions sans mot de passe sont prises en charge à partir de la version 4.5.0.
N’oubliez pas d’ajouter le boM spring-cloud-azure-dependencies avec la dépendance précédente. Pour plus d’informations, consultez la section Prise en main du guide de développement Spring Cloud Azure.
Utilisation de base
Les sections suivantes montrent les scénarios d’utilisation classiques de l’application Spring Boot.
Important
La connexion sans mot de passe utilise l’authentification Microsoft Entra. Pour utiliser l’authentification Microsoft Entra, définissez d’abord l’utilisateur administrateur Microsoft Entra. Seul un utilisateur administrateur Microsoft Entra peut créer et activer des utilisateurs pour l’authentification basée sur l’ID Microsoft Entra. Pour plus d’informations, consultez Utiliser Spring Data JDBC avec Azure Database pour MySQL.
Se connecter à Azure MySQL localement sans mot de passe
Pour créer des utilisateurs et accorder des autorisations, consultez la Créer un utilisateur non administrateur MySQL et accorder l’autorisation section Utiliser Spring Data JDBC avec Azure Database pour MySQL.
Configurez les propriétés suivantes dans votre fichier 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
Se connecter à Azure MySQL à l’aide d’un principal de service
Créez un utilisateur Microsoft Entra pour le principal de service et accordez l’autorisation.
Utilisez les commandes suivantes pour configurer des variables d’environnement.
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)Créez un script SQL nommé create_ad_user_sp.sql pour créer un utilisateur non administrateur. Ajoutez le contenu suivant et enregistrez-le localement :
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; EOFUtilisez la commande suivante pour exécuter le script SQL pour créer l’utilisateur non administrateur 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.sqlUtilisez la commande suivante pour supprimer le fichier de script SQL temporaire :
rm create_ad_user_sp.sql
Configurez les propriétés suivantes dans votre fichier 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
Remarque
Les valeurs tenant-id autorisées sont les suivantes : common, organizations, consumersou l’ID de locataire. Pour plus d’informations sur ces valeurs, consultez le Utilisé le point de terminaison incorrect (comptes personnels et d’organisation) section Erreur AADSTS50020 - Le compte d’utilisateur du fournisseur d’identité n’existe pas dans ledu locataire. Pour plus d’informations sur la conversion de votre application monolocataire, consultez Convertir une application monolocataire en multilocataire sur Microsoft Entra ID.
Se connecter à Azure MySQL avec l’identité managée dans Azure Spring Apps
Pour activer l’identité managée, consultez la Affecter l’identité managée à l’aide du portail Azure section de Migrer une application pour utiliser des connexions sans mot de passe avec Azure Database pour MySQL.
Pour accorder des autorisations, consultez la section Attribuer des rôles à l’identité managée section de Migrer une application pour utiliser des connexions sans mot de passe avec Azure Database pour MySQL.
Configurez les propriétés suivantes dans votre fichier 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
Échantillons
Consultez le azure-spring-boot-samples référentiel sur GitHub.