Configurer l’authentification Microsoft Entra pour Azure Database pour MySQL : serveur flexible
S’APPLIQUE À : Azure Database pour MySQL – Serveur flexible
Ce tutoriel vous montre comment configurer l’authentification Microsoft Entra pour un serveur flexible Azure Database pour MySQL.
Dans ce tutoriel, vous allez apprendre à :
- Configurez l’administrateur Microsoft Entra.
- Connectez-vous au serveur flexible Azure Database pour MySQL à l’aide de Microsoft Entra ID.
Prérequis
Compte Azure avec un abonnement actif.
Si vous n’en avez pas, créez un compte gratuit Azure avant de commencer.
Remarque
Avec un compte gratuit Azure, vous pouvez maintenant essayer le serveur flexible Azure Database pour MySQL pendant 12 mois gratuitement. Pour plus d’informations, consultez Essayer gratuitement le serveur flexible Azure Database pour MySQL.
Installez ou mettez à niveau Azure CLI vers la dernière version. Consultez Installer Azure CLI.
Configurer l’administrateur Microsoft Entra
Pour créer un utilisateur Administrateur Microsoft Entra, suivez les étapes ci-dessous.
Sur le Portail Azure, sélectionnez l’instance de serveur flexible Azure Database pour MySQL que vous souhaitez activer pour Microsoft Entra ID.
Dans le volet Sécurité, sélectionnez Authentification :
Trois types d’authentification sont disponibles :
Authentification MySQL uniquement : par défaut, MySQL utilise le plug-in d’authentification mysql_native_password intégré, qui procède à l’authentification en utilisant la méthode de hachage de mot de passe native.
Authentification Microsoft Entra uniquement : autorise uniquement l’authentification avec un compte Microsoft Entra. Désactive l’authentification mysql_native_password et active le paramètre de serveur aad_auth_only.
Authentification MySQL et Microsoft Entra : autorise l’authentification à l’aide d’un mot de passe MySQL natif ou d’un compte Microsoft Entra. Désactive le paramètre de serveur aad_auth_only.
Sélectionner l’identité : sélectionnez/ajoutez l’identité managée affectée par l’utilisateur. Les autorisations suivantes sont nécessaires pour autoriser l’UMI à lire à partir de Microsoft Graph en tant qu’identité de serveur. Vous pouvez également attribuer à l’identité managée affectée par l’utilisateur le rôle Lecteurs de répertoire.
- User.Read.All : permet d’accéder aux informations utilisateur Microsoft Entra.
- GroupMember.Read.All : permet d’accéder aux informations de groupe Microsoft Entra.
- Application.Read.ALL : permet d’accéder aux informations sur le principal de service Microsoft Entra (application).
Important
Seul un utilisateur disposant au moins du rôle Administrateur de rôle privilégié peut accorder ces autorisations.
Sélectionnez un utilisateur ou un groupe Microsoft Entra valide dans le locataire client pour être Administrateur Microsoft Entra. Une fois la prise en charge de l’authentification Microsoft Entra activée, les administrateurs Microsoft Entra peuvent être ajoutés en tant que principaux de sécurité avec l’autorisation d’ajouter des utilisateurs Microsoft Entra au serveur MySQL.
Remarque
Un seul administrateur Microsoft Entra peut être créé par serveur MySQL, et la sélection d’un autre administrateur remplace l’administrateur Microsoft Entra existant configuré pour le serveur.
Accorder des autorisations à l’Identité managée affectée par l’utilisateur
L’exemple de script PowerShell suivant accorde les autorisations nécessaires pour une Identité managée affectée par l’utilisateur (UMI). Cet exemple affecte des autorisations à l’UMI umiservertest
.
Pour exécuter le script, vous devez vous connecter en tant qu’utilisateur avec un rôle Administrateur général ou Administrateur de rôle privilégié.
Le script accorde les autorisations User.Read.All
, GroupMember.Read.All
et Application.Read.ALL
à une Identité managée affectée par l’utilisateur pour accéder à Microsoft Graph.
# Script to assign permissions to the UMI "umiservertest"
import-module AzureAD
$tenantId = '<tenantId>' # Your Azure AD tenant ID
Connect-AzureAD -TenantID $tenantId
# Log in as a user with a "Global Administrator" or "Privileged Role Administrator" role
# Script to assign permissions to an existing UMI
# The following Microsoft Graph permissions are required:
# User.Read.All
# GroupMember.Read.All
# Application.Read.ALL
# Search for Microsoft Graph
$AAD_SP = Get-AzureADServicePrincipal -SearchString "Microsoft Graph";
$AAD_SP
# Use Microsoft Graph; in this example, this is the first element $AAD_SP[0]
#Output
#ObjectId AppId DisplayName
#-------- ----- -----------
#47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 Microsoft Graph
#44e2d3f6-97c3-4bc7-9ccd-e26746638b6d 0bf30f3b-4a52-48df-9a82-234910c4a086 Microsoft Graph #Change
$MSIName = "<managedIdentity>"; # Name of your user-assigned
$MSI = Get-AzureADServicePrincipal -SearchString $MSIName
if($MSI.Count -gt 1)
{
Write-Output "More than 1 principal found, please find your principal and copy the right object ID. Now use the syntax $MSI = Get-AzureADServicePrincipal -ObjectId <your_object_id>"
# Choose the right UMI
Exit
}
# If you have more UMIs with similar names, you have to use the proper $MSI[ ]array number
# Assign the app roles
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "User.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId -PrincipalId $MSI.ObjectId -ResourceId $AAD_SP.ObjectId -Id $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "GroupMember.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId -PrincipalId $MSI.ObjectId -ResourceId $AAD_SP.ObjectId -Id $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "Application.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId -PrincipalId $MSI.ObjectId -ResourceId $AAD_SP.ObjectId -Id $AAD_AppRole.Id
Dans les dernières étapes du script, si vous avez plusieurs UMI avec des noms similaires, vous devez utiliser le nombre $MSI[ ]array
approprié, par exemple $AAD_SP.ObjectId[0]
.
Vérifier les autorisations de l’identité managée affectée par l’utilisateur
Pour vérifier les autorisations d’une UMI, accédez au portail Azure. Dans la ressource Microsoft Entra ID, allez dans Applications d'entreprise. Sélectionnez Toutes les applications pour Type d’application, puis recherchez l’UMI qui a été créée.
Sélectionnez l’UMI, puis allez dans les paramètres Autorisations sous Sécurité.
Une fois les autorisations accordées à l’Identité managée affectée par l’utilisateur, elles sont activées pour l’ensemble des serveurs créés avec l’Identité managée affectée par l’utilisateur (UMI) attribuée en tant qu’identité de serveur.
Se connecter au serveur flexible Azure Database pour MySQL à l’aide de Microsoft Entra ID
1 – Authentifiez-vous auprès de Microsoft Entra ID
Commencez par vous authentifier auprès de Microsoft Entra ID à l’aide de l’outil Azure CLI.
(Cette étape n’est pas obligatoire dans Azure Cloud Shell.)
Connectez-vous au compte Azure à l’aide de la commande az login. Notez la propriété ID, qui fait référence à l’ID d’abonnement de votre compte Azure :
az login
La commande ouvre une fenêtre de navigateur sur la page d’authentification Microsoft Entra. Pour ce faire, vous devez fournir votre ID d’utilisateur Microsoft Entra et le mot de passe.
Si vous avez plusieurs abonnements, choisissez l’abonnement approprié en utilisant la commande az account set :
az account set --subscription \<subscription id\>
2 – Récupérez le jeton d’accès Microsoft Entra
Appelez l’outil Azure CLI afin d’obtenir un jeton d’accès permettant à l’utilisateur authentifié auprès de Microsoft Entra à l’étape 1 d’accéder au serveur flexible Azure Database pour MySQL.
Exemple (pour le cloud public) :
az account get-access-token --resource https://ossrdbms-aad.database.windows.net
La valeur de la ressource ci-dessus doit être spécifiée exactement comme indiqué. Pour les autres clouds, la valeur de la ressource peut être recherchée à l’aide de ce qui suit :
az cloud show
Pour Azure CLI version 2.0.71 et les versions ultérieures, la commande peut être spécifiée dans la version plus pratique suivante pour tous les clouds :
az account get-access-token --resource-type oss-rdbms
Avec PowerShell, vous pouvez utiliser la commande suivante pour obtenir le jeton d’accès :
$accessToken = Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net $accessToken.Token | out-file C:\temp\MySQLAccessToken.txt
Une fois que l’authentification a réussi, Microsoft Entra ID retourne un jeton d’accès :
{
"accessToken": "TOKEN",
"expiresOn": "...",
"subscription": "...",
"tenant": "...",
"tokenType": "Bearer"
}
Le jeton est une chaîne en base 64 qui code toutes les informations relatives à l’utilisateur authentifié et qui est destinée au service Azure Database pour MySQL.
La validité du jeton d’accès est comprise entre 5 minutes et 60 minutes. Nous vous recommandons d’obtenir le jeton d’accès avant de lancer la connexion au serveur flexible Azure Database pour MySQL.
- Vous pouvez utiliser la commande PowerShell suivante pour voir la validité du jeton.
$accessToken.ExpiresOn.DateTime
3 – Utiliser un jeton comme mot de passe pour la connexion avec MySQL
Lors de la connexion, vous avez besoin d’utiliser le jeton d’accès comme mot de passe utilisateur MySQL. Vous pouvez utiliser la méthode décrite ci-dessus pour récupérer le jeton à l’aide de clients GUI comme MySQL Workbench.
Se connecter au serveur flexible Azure Database pour MySQL avec l’interface CLI MySQL
Quand vous utilisez l’interface CLI, vous pouvez utiliser ce raccourci pour vous connecter :
Exemple (Linux/macOS) :
mysql -h mydb.mysql.database.azure.com \
--user user@tenant.onmicrosoft.com \
--enable-cleartext-plugin \
--password=`az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken`
Exemple (PowerShell) :
mysql -h mydb.mysql.database.azure.com \
--user user@tenant.onmicrosoft.com \
--enable-cleartext-plugin \
--password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)
mysql -h mydb.mysql.database.azure.com \
--user user@tenant.onmicrosoft.com \
--enable-cleartext-plugin \
--password=$((Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net).Token)
Se connecter au serveur flexible Azure Database pour MySQL à l’aide de MySQL Workbench
- Lancez MySQL Workbench et sélectionnez l’option Base de données, puis sélectionnez Se connecter à la base de données.
- Dans le champ de nom d’hôte, entrez le nom de domaine complet MySQL, par exemple mysql.database.azure.com.
- Dans le champ de nom d’utilisateur, entrez le nom de l’administrateur Microsoft Entra MySQL. Par exemple : user@tenant.onmicrosoft.com.
- Dans le champ du mot de passe, sélectionnez Stocker dans le coffre et collez le jeton d’accès à partir du fichier, par exemple C:\temp\MySQLAccessToken.txt.
- Sélectionnez l’onglet Avancé et n’oubliez pas de cocher Activer le plug-in d’authentification en texte clair.
- Sélectionnez OK pour vous connecter à la base de données.
Considérations importantes à prendre en compte lors de la connexion
user@tenant.onmicrosoft.com
est le nom d’utilisateur ou de groupe Microsoft Entra avec lequel vous essayez de vous connecter- Veillez à orthographier correctement le nom d’utilisateur ou de groupe Microsoft Entra.
- Les noms d’utilisateurs et de groupes Microsoft Entra respectent la casse
- Quand vous vous connectez en tant que groupe, utilisez uniquement le nom du groupe (par exemple,
GroupName
) - Si le nom contient des espaces, utilisez
\
avant chaque espace pour le placer dans une séquence d’échappement
Notes
Concernant le paramètre « enable-cleartext-plugin », vous devez utiliser une configuration similaire avec d’autres clients pour vous assurer que le jeton est envoyé au serveur sans être haché.
Vous êtes à présent authentifié auprès de votre serveur flexible MySQL à l’aide de l’authentification Microsoft Entra.
Autres commandes d’administration Microsoft Entra
Gérer l’administrateur Active Directory du serveur
az mysql flexible-server ad-admin
Créer un administrateur Active Directory
az mysql flexible-server ad-admin create
Exemple : Créer un administrateur Active Directory avec l’utilisateur « john@contoso.com », l’ID d’administrateur « 00000000-0000-0000-0000-000000000000 » et l’identité « test-identity »
az mysql flexible-server ad-admin create -g testgroup -s testsvr -u john@contoso.com -i 00000000-0000-0000-0000-000000000000 --identity test-identity
Supprimer un administrateur Active Directory
az mysql flexible-server ad-admin delete
Exemple : Supprimer un administrateur Active Directory
az mysql flexible-server ad-admin delete -g testgroup -s testsvr
Lister tous les administrateurs Active Directory
az mysql flexible-server ad-admin list
Exemple : Lister les administrateurs Active Directory
az mysql flexible-server ad-admin list -g testgroup -s testsvr
Obtenir un administrateur Active Directory
az mysql flexible-server ad-admin show
Exemple : Obtenir l’administrateur Active Directory
az mysql flexible-server ad-admin show -g testgroup -s testsvr
Attendre que l’administrateur Active Directory réponde à certaines conditions
az mysql flexible-server ad-admin wait
Exemples :
- Attendre que l’administrateur Active Directory existe
az mysql flexible-server ad-admin wait -g testgroup -s testsvr --exists
- Attendre que l’administrateur Active Directory soit supprimé
az mysql flexible-server ad-admin wait -g testgroup -s testsvr –deleted
Créer des utilisateurs Microsoft Entra dans Azure Database pour MySQL
Pour ajouter un utilisateur Microsoft Entra à votre base de données Azure Database pour MySQL, effectuez les étapes suivantes après la connexion :
- Tout d’abord, assurez-vous que l’utilisateur
<user>@yourtenant.onmicrosoft.com
Microsoft Entra est un utilisateur valide dans le locataire Microsoft Entra. - Connectez-vous à votre instance Azure Database pour MySQL en tant qu’utilisateur administrateur Microsoft Entra.
- Créer l’utilisateur
<user>@yourtenant.onmicrosoft.com
dans Azure Database pour MySQL.
Exemple :
CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';
Pour les noms d’utilisateur dépassant 32 caractères, il est recommandé d’utiliser un alias à la place, à utiliser lors de la connexion :
Exemple :
CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';
Notes
- MySQL ignore les espaces de début et de fin. Le nom d’utilisateur ne doit donc pas en contenir.
- L’authentification d’un utilisateur par le biais de Microsoft Entra ID ne lui donne pas d’autorisation d’accès aux objets dans la base de données Azure Database pour MySQL. Vous devez accorder manuellement les autorisations requises à l’utilisateur.
Créer des groupes Microsoft Entra dans Azure Database pour MySQL
Pour permettre à un groupe Microsoft Entra d’accéder à votre base de données, utilisez le même mécanisme que pour les utilisateurs, mais spécifiez plutôt le nom du groupe :
Exemple :
CREATE AADUSER 'Prod_DB_Readonly';
Pendant la connexion, les membres du groupe utilisent leurs jetons d’accès personnels, mais se connectent avec le nom du groupe spécifié comme nom d’utilisateur.
Compatibilité avec des pilotes d’application
La plupart des pilotes sont pris en charge, mais veillez à utiliser les paramètres d’envoi du mot de passe en texte clair, afin que le jeton soit envoyé sans modification.
C/C++
- libmysqlclient : Prise en charge
- mysql-connector-c++ : Prise en charge
Java
- Connecteur/J (mysql-connector-java) : Pris en charge, doit utiliser le paramètre
useSSL
- Connecteur/J (mysql-connector-java) : Pris en charge, doit utiliser le paramètre
Python
- Connecteur/Python : Prise en charge
Ruby
- mysql2 : Prise en charge
.NET
- mysql-connector-net : Pris en charge, il faut ajouter un plug-in pour mysql_clear_password
- mysql-net/MySqlConnector : Prise en charge
Node.js
- mysqljs : Non pris en charge (n’envoie pas de jeton en texte clair sans correctif)
- node-mysql2 : Prise en charge
Perl
- DBD::mysql : Prise en charge
- Net::MySQL : Non pris en charge
Go
- go-sql-driver : Pris en charge, ajouter
?tls=true&allowCleartextPasswords=true
à la chaîne de connexion
- go-sql-driver : Pris en charge, ajouter
PHP
Extension mysqli : prise en charge
Pilote PDO_MYSQL : pris en charge
Étapes suivantes
- Passer en revue les concepts de l’Authentification Microsoft Entra avec le serveur flexible Azure Database pour MySQL