Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Azure Database pour MySQL est un service de base de données relationnelle alimenté par l’édition de la communauté MySQL. Vous pouvez utiliser un serveur unique ou un serveur flexible pour héberger une base de données MySQL dans Azure. Il s’agit d’une offre de base de données en tant que service entièrement managée qui peut gérer des charges de travail stratégiques avec des performances prévisibles et une scalabilité dynamique.
À 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. Avec 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 aucun de ces types d’informations d’identification n’est trouvé, les informations d’identification DefaultAzureCredential sont obtenues à 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.chemin-de-certificat-client | 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. Cela inclut automatiquement la dépendance spring-boot-starter dans votre projet transitivement.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
Remarque
Les connexions sans mot de passe ont été prises en charge depuis la version 4.5.0.
N’oubliez pas d’ajouter le spring-cloud-azure-dependencies boM avec la dépendance ci-dessus. 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, vous devez d’abord définir 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.
Tout d’abord, utilisez les commandes suivantes pour configurer certaines 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)Ensuite, créez un script SQL appelé 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 maintenant 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 autorisées pour tenant-id sont : 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 référentiel azure-spring-boot-samples sur GitHub.