Einrichten der Microsoft Entra-Authentifizierung für Azure Database for MySQL – Flexibler Server.
In diesem Tutorial wird gezeigt, wie Sie die Microsoft Entra-Authentifizierung für Azure Database for MySQL – Flexibler Server einrichten.
In diesem Tutorial lernen Sie Folgendes:
- Konfigurieren des Microsoft Entra-Administrators
- Herstellen einer Verbindung mit Azure Database for MySQL – Flexibler Server mithilfe von Microsoft Entra ID
Voraussetzungen
Ein Azure-Konto mit einem aktiven Abonnement.
Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.
Hinweis
Mit einem kostenlosen Azure-Konto können Sie Azure Database for MySQL – Flexible Server jetzt 12 Monate lang kostenlos testen. Weitere Informationen finden Sie unter Verwenden eines kostenlosen Azure-Kontos, um Azure Database for MySQL – Flexible Server kostenlos zu testen.
Installieren Sie die Azure CLI, oder upgraden Sie sie auf die neueste Version. Weitere Informationen finden Sie unter Installieren der Azure-Befehlszeilenschnittstelle.
Konfigurieren des Microsoft Entra-Administrators
Führen Sie die folgenden Schritte aus, um einen Microsoft Entra-Administratorbenutzer zu erstellen:
Wählen Sie im Azure-Portal die Instanz von Azure Database for MySQL – Flexibler Server aus, die Sie für Microsoft Entra ID aktivieren möchten.
Wählen Sie Authentifizierung im Bereich „Sicherheit“ aus: .
Drei Authentifizierungstypen sind verfügbar:
Nur MySQL-Authentifizierung: MySQL verwendet standardmäßig das integrierte Authentifizierungs-Plug-In „mysql_native_password“, das die Authentifizierung mithilfe der nativen Kennworthashmethode durchführt.
Nur Microsoft Entra-Authentifizierung: Ermöglicht nur die Authentifizierung mit einem Microsoft Entra-Konto. Dabei wird die Authentifizierung über „mysql_native_password“ deaktiviert und der Serverparameter „aad_auth_only“ aktiviert.
MySQL- und Microsoft Entra-Authentifizierung: Ermöglicht die Authentifizierung über ein natives MySQL-Kennwort oder ein Microsoft Entra-Konto. Dabei wird der Serverparameter „aad_auth_only“ deaktiviert.
Identität auswählen: Wählen Sie die benutzerseitig zugewiesene verwaltete Identität aus, oder fügen Sie eine hinzu. Damit die benutzerseitig zugewiesene verwaltete Identität (User-assigned Managed Identity, UMI) als Serveridentität Daten aus Microsoft Graph lesen kann, sind die folgenden Berechtigungen erforderlich. Alternativ können Sie der benutzerseitig zugewiesenen verwalteten Identität die Rolle Verzeichnisleser zuweisen.
- User.Read.All: Ermöglicht den Zugriff auf Microsoft Entra-Benutzerinformationen.
- GroupMember.Read.All: Ermöglicht den Zugriff auf Microsoft Entra-Gruppeninformationen.
- Application.Read.ALL: Ermöglicht den Zugriff auf Informationen zu Microsoft Entra-Dienstprinzipalen (Anwendung).
Wichtig
Nur Benutzer mit mindestens der Rolle Administrator für privilegierte Rollen können diese Berechtigungen zuweisen.
Wählen Sie einen gültigen Microsoft Entra-Benutzer oder eine Microsoft Entra-Gruppe im Kundenmandanten als Microsoft Entra-Administrator aus. Sobald die Unterstützung der Microsoft Entra-Authentifizierung aktiviert wurde, können Microsoft Entra-Administratoren als Sicherheitsprinzipale mit Berechtigungen zum Hinzufügen von Microsoft Entra-Benutzern zum MySQL-Server hinzugefügt werden.
Hinweis
Es kann nur ein Microsoft Entra-Administrator pro MySQL-Server erstellt werden, und die Auswahl eines anderen Administrators überschreibt den vorhandenen Microsoft Entra-Administrator, der für den Server konfiguriert wurde.
Erteilen von Berechtigungen für die benutzerseitig zugewiesene verwaltete Identität
Das folgende PowerShell-Beispielskript erteilt einer UMI die erforderlichen Berechtigungen. In diesem Beispiel werden der UMI umiservertest
Berechtigungen zugewiesen.
Um das Skript auszuführen, müssen Sie sich als Benutzer*in mit der Rolle „Globaler Administrator“ oder „Administrator für privilegierte Rollen“ anmelden.
Das Skript gewährt einer UMI die Berechtigungen User.Read.All
, GroupMember.Read.All
und Application.Read.ALL
für den Zugriff auf 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
Wenn Sie in den abschließenden Schritten des Skripts über mehrere UMIs mit ähnlichen Namen verfügen, müssen Sie den richtigen Wert für $MSI[ ]array
verwenden. z. B. $AAD_SP.ObjectId[0]
.
Überprüfen von Berechtigungen für die benutzerseitig zugewiesene verwaltete Identität
Um die Berechtigungen für eine UMI zu überprüfen, wechseln Sie zum Azure-Portal. Gehen Sie in der Ressource Microsoft Entra ID zu Unternehmensanwendungen. Wählen Sie Alle Anwendungen für Anwendungstyp aus, und suchen Sie nach der erstellten UMI.
Wählen Sie die UMI aus und gehen Sie in die Einstellungen für Berechtigungen unter Sicherheit.
Nachdem Sie der UMI die Berechtigungen erteilt haben, werden sie für alle Server aktiviert, die mit der als Serveridentität zugewiesenen UMI erstellt werden.
Herstellen einer Verbindung mit Azure Database for MySQL – Flexibler Server mithilfe von Microsoft Entra ID
1: Authentifizieren mit Microsoft Entra ID
Beginnen Sie mit der Authentifizierung mit der Microsoft Entra ID mithilfe des Azure CLI-Tools.
(Dieser Schritt ist in Azure Cloud Shell nicht erforderlich.)
Melden Sie sich mit dem Befehl az login beim Azure-Konto an. Beachten Sie die Eigenschaft „ID“, die auf die Abonnement-ID Ihres Azure-Kontos verweist:
az login
Der Befehl öffnet die Microsoft Entra-Authentifizierungsseite in einem Browserfenster. Er erfordert, dass Sie Ihre Microsoft Entra-Benutzer-ID und Ihr Kennwort angeben.
Wenn Sie über mehrere Abonnements verfügen, wählen Sie mithilfe des Befehls „az account set“ das entsprechende Abonnement aus:
az account set --subscription \<subscription id\>
2: Abrufen des Microsoft Entra-Zugriffstokens
Rufen Sie das Azure CLI-Tool auf, um ein Zugriffstoken für den über Microsoft Entra authentifizierten Benutzenden aus Schritt 1 für den Zugriff auf Azure Database for MySQL – Flexibler Server abzurufen.
Beispiel (für die öffentliche Cloud):
az account get-access-token --resource https://ossrdbms-aad.database.windows.net
Der oben genannte Ressourcenwert muss genau wie gezeigt angegeben werden. Für andere Clouds kann der Ressourcenwert wie folgt nachgeschlagen werden:
az cloud show
Für Version 2.0.71 oder höher der Azure CLI kann der Befehl in der folgenden, bequemeren Version für alle Clouds angegeben werden:
az account get-access-token --resource-type oss-rdbms
Mithilfe von PowerShell können Sie den folgenden Befehl verwenden, um ein Zugriffstoken abzurufen:
$accessToken = Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net $accessToken.Token | out-file C:\temp\MySQLAccessToken.txt
Nach erfolgreicher Authentifizierung gibt Microsoft Entra ID ein Zugriffstoken zurück:
{
"accessToken": "TOKEN",
"expiresOn": "...",
"subscription": "...",
"tenant": "...",
"tokenType": "Bearer"
}
Das Token ist eine Base64-Zeichenfolge, die alle Informationen zum authentifizierten Benutzer codiert und für den Azure Database for MySQL-Dienst bestimmt ist.
Die Gültigkeitsdauer des Zugriffstokens liegt zwischen 5 Minuten und 60 Minuten. Es wird empfohlen, das Zugriffstoken abzurufen, bevor Sie die Anmeldung bei Azure Database for MySQL – Flexibler Server initiieren.
- Sie können den folgenden PowerShell-Befehl verwenden, um die Gültigkeitsdauer des Tokens anzuzeigen.
$accessToken.ExpiresOn.DateTime
3. Verwenden eines Tokens als Kennwort für die Anmeldung bei MySQL
Beim Herstellen einer Verbindung müssen Sie das Zugriffstoken als MySQL-Benutzerkennwort verwenden. Wenn Sie GUI-Clients wie MySQL Workbench verwenden, können Sie das Token mit der oben beschriebenen Methode abrufen.
Herstellen einer Verbindung mit Azure Database for MySQL – Flexibler Server mithilfe der MySQL-CLI
Bei Verwenden der CLI können Sie zum Herstellen einer Verbindung die folgende Kurzform verwenden:
Beispiel (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`
Beispiel (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)
Herstellen einer Verbindung mit Azure Database for MySQL – Flexibler Server mithilfe der MySQL-Workbench
- Starten Sie MySQL Workbench, und wählen Sie „Database“ (Datenbank) und dann Connect to database (Verbindung mit Datenbank herstellen) aus.
- Geben Sie im Feld „Hostname“ den MySQL-FQDN ein, z. B. mysql.database.azure.com.
- Geben Sie im Feld „Benutzername“ den Microsoft Entra-Administratornamen für MySQL ein. Beispiel: user@tenant.onmicrosoft.com.
- Klicken Sie im Feld „Password“ (Kennwort) auf Store in Vault (Im Tresor speichern), und fügen Sie das Zugriffstoken aus der Datei ein. Beispiel: C:\temp\MySQLAccessToken.txt.
- Wählen Sie die Registerkarte „Advanced“ (Erweitert) aus, und stellen Sie sicher, dass Sie Enable Cleartext Authentication Plugin (Plug-In für die Klartextauthentifizierung aktivieren) aktivieren.
- Wählen Sie OK aus, um eine Verbindung mit der Datenbank herzustellen.
Wichtige Aspekte beim Herstellen einer Verbindung
user@tenant.onmicrosoft.com
ist der Name des Microsoft Entra-Benutzers oder der Microsoft Entra-Gruppe, mit dem bzw. der Sie die Verbindung herstellen möchten.- Achten Sie genau darauf, wie der Name des Microsoft Entra-Benutzers oder der Microsoft Entra-Gruppe geschrieben ist und verwenden Sie ihn so
- Bei Microsoft Entra-Benutzer- und Gruppennamen wird die Groß-/Kleinschreibung beachtet
- Wenn Sie sich als Gruppe verbinden, verwenden Sie nur den Gruppennamen (z. B.
GroupName
). - Verwenden Sie
\
als Escapezeichen vor Leerzeichen, falls der Name Leerzeichen enthält.
Hinweis
Die Einstellung „enable-cleartext-plugin“ – Sie müssen bei anderen Clients eine ähnliche Konfiguration verwenden, um sicherzustellen, dass das Token ohne Hashing an den Server gesendet wird.
Sie sind jetzt bei Ihrem flexiblen MySQL-Server über Microsoft Entra-Authentifizierung authentifiziert.
Weitere Microsoft Entra-Administratorbefehle
Verwalten des Active Directory-Serveradministrators
az mysql flexible-server ad-admin
Erstellen eines Active Directory-Administrators
az mysql flexible-server ad-admin create
Beispiel: Erstellen eines Active Directory-Administrators mit Benutzer „john@contoso.com“, Administrator-ID „00000000-0000-0000-0000-000000000000“ und Identität „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
Löschen eines Active Directory-Administrators
az mysql flexible-server ad-admin delete
Beispiel: Löschen eines Active Directory-Administrators
az mysql flexible-server ad-admin delete -g testgroup -s testsvr
Auflisten aller Active Directory-Administratoren
az mysql flexible-server ad-admin list
Beispiel: Auflisten von Active Directory-Administratoren
az mysql flexible-server ad-admin list -g testgroup -s testsvr
Abrufen eines Active Directory-Administrators
az mysql flexible-server ad-admin show
Beispiel: Abrufen eines Active Directory-Administrators
az mysql flexible-server ad-admin show -g testgroup -s testsvr
Warten, bis der Active Directory-Administrator bestimmte Bedingungen erfüllt:
az mysql flexible-server ad-admin wait
Beispiele:
- Warten, bis der Active Directory-Administrator vorhanden ist
az mysql flexible-server ad-admin wait -g testgroup -s testsvr --exists
- Warten, bis der Active Directory-Administrator gelöscht wurde
az mysql flexible-server ad-admin wait -g testgroup -s testsvr –deleted
Erstellen von Microsoft Entra-Benutzern in Azure Database for MySQL
Um Ihrer Azure Database for MySQL-Datenbank einen Microsoft Entra-Benutzer hinzuzufügen, führen Sie nach dem Herstellen einer Verbindung die folgenden Schritte aus:
- Stellen Sie zunächst sicher, dass der Microsoft Entra-Benutzer
<user>@yourtenant.onmicrosoft.com
ein gültiger Benutzer im Microsoft Entra-Mandanten ist. - Melden Sie sich bei Ihrer Azure Database for MySQL-Instanz als Microsoft Entra-Administratorbenutzer an.
- Erstellen Sie den Benutzer
<user>@yourtenant.onmicrosoft.com
in Azure Database for MySQL.
Beispiel:
CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';
Bei Benutzernamen mit mehr als 32 Zeichen empfiehlt es sich, stattdessen einen Alias zu verwenden, der beim Herstellen einer Verbindung genutzt wird:
Beispiel:
CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';
Hinweis
- MySQL ignoriert führende und nachgestellte Leerzeichen. Daher sollte der Benutzername keine führenden oder nachgestellten Leerzeichen enthalten.
- Die Authentifizierung eines Benutzers über Microsoft Entra ID verleiht dem Benutzer keine Berechtigung für den Zugriff auf Objekte innerhalb der Azure Database for MySQL-Datenbank. Sie müssen dem Benutzer die erforderlichen Berechtigungen manuell erteilen.
Erstellen von Microsoft Entra-Gruppen in Azure Database for MySQL
Um eine Microsoft Entra-Gruppe für den Zugriff auf Ihre Datenbank zu aktivieren, verwenden Sie den gleichen Mechanismus wie für Benutzer, geben aber stattdessen den Gruppennamen an:
Beispiel:
CREATE AADUSER 'Prod_DB_Readonly';
Wenn sie sich anmelden, verwenden die Gruppenmitglieder ihre persönlichen Zugriffstoken, melden sich aber mit dem Gruppennamen an, der als Benutzername angegeben wurde.
Kompatibilität mit Anwendungstreibern
Die meisten Treiber werden unterstützt. Stellen Sie jedoch sicher, dass die Einstellungen zum Senden des Kennworts in Klartext verwendet werden, damit das Token ohne Änderungen gesendet wird.
C/C++
- libmysqlclient: Unterstützt
- mysql-connector-c++: Unterstützt
Java
- Connector/J (mysql-connector-java): Unterstützt;
useSSL
-Einstellung muss verwendet werden
- Connector/J (mysql-connector-java): Unterstützt;
Python
- Connector/Python: Unterstützt
Ruby
- mysql2: Unterstützt
.NET
- mysql-connector-net: Unterstützt; Plug-In für „mysql_clear_password“ muss hinzugefügt werden
- mysql-net/MySqlConnector: Unterstützt
Node.js
- mysqljs: nicht unterstützt (sendet das Token nicht in Klartext ohne Patch)
- node-mysql2: Unterstützt
Perl
- DBD::mysql: Unterstützt
- Net::MySQL: Nicht unterstützt
Go
- go-sql-driver: Unterstützt;
?tls=true&allowCleartextPasswords=true
zur Verbindungszeichenfolge hinzufügen
- go-sql-driver: Unterstützt;
PHP
mysqli-Erweiterung: Unterstützt
PDO_MYSQL-Treiber: Unterstützt