Share via


Einrichten der Microsoft Entra-Authentifizierung für Azure Database for MySQL – Flexibler Server.

GILT FÜR: Azure Database for MySQL – Flexible Server

In diesem Lernprogramm erfahren Sie, wie Sie die Microsoft Entra-Authentifizierung für Azure-Datenbank für den flexiblen Server für MySQL einrichten.

In diesem Tutorial lernen Sie Folgendes:

  • Konfigurieren Sie den Microsoft Entra-Administrator.
  • Verbinden zu Azure Database für MySQL flexiblen Server mit Microsoft Entra ID.

Voraussetzungen

Konfigurieren des Microsoft Entra-Administrators

Führen Sie die folgenden Schritte aus, um einen Microsoft Entra Admin-Benutzer zu erstellen.

  • Wählen Sie im Azure-Portal die Instanz von Azure Database for MySQL flexiblen Server aus, den Sie für Microsoft Entra ID aktivieren möchten.

  • Wählen Sie Authentifizierung im Bereich „Sicherheit“ aus: Diagram of how to configure Microsoft Entra authentication..

  • 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 mit einem systemeigenen MySQL-Kennwort oder einem 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. Weisen Sie der UMI alternativ die Rolle Verzeichnisleser zu.

    • 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 ein Globaler Administrator oder ein Privilegierter Rollenadministrator kann diese Rechte vergeben.

  • Wählen Sie einen gültigen Microsoft Entra-Benutzer oder eine Microsoft Entra-Gruppe im Kundenmandanten aus, um Microsoft Entra-Administrator zu sein. Nachdem die Unterstützung der Microsoft Entra-Authentifizierung aktiviert wurde, können Microsoft Entra-Administratoren als Sicherheitsprinzipale mit der Berechtigung zum Hinzufügen von Microsoft Entra-Benutzern zum MySQL-Server hinzugefügt werden.

    Hinweis

    Pro MySQL-Server kann nur ein Microsoft Entra-Administrator erstellt werden und ein anderer Administrator überschreibt den vorhandenen Microsoft Entra-Administrator, der für den Server konfiguriert ist.

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[0]  -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[0]  -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[0]  -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.

Verbinden zu Azure Database für MySQL flexiblen Server mit Microsoft Entra ID

1 – Authentifizieren mit Der 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 startet ein Browserfenster auf der Microsoft Entra-Authentifizierungsseite. 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 von Microsoft Entra authentifizierten Benutzer aus Schritt 1 abzurufen, um auf azure Database for MySQL flexible Server zuzugreifen.

  • 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 zu erhalten, bevor Sie die Anmeldung bei Azure Database for MySQL flexiblen 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 von 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 Namen des MySQL-Administrators von Microsoft Entra ein. Beispielsweise 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 Gruppe, den Sie herstellen möchten, als
  • 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

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 mit der Microsoft Entra-Authentifizierung bei Ihrem flexiblen MySQL-Server authentifiziert.

Andere 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 der Azure-Datenbank für MySQL

Führen Sie nach dem Herstellen einer Verbindung die folgenden Schritte aus, um ihrer Azure-Datenbank für MySQL einen Microsoft Entra-Benutzer hinzuzufügen:

  1. Stellen Sie zunächst sicher, dass der Microsoft Entra-Benutzer <user>@yourtenant.onmicrosoft.com ein gültiger Benutzer im Microsoft Entra-Mandanten ist.
  2. Melden Sie sich bei Ihrer Azure Database for MySQL-Instanz als Microsoft Entra-Administratorbenutzer an.
  3. 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

  1. MySQL ignoriert führende und nachgestellte Leerzeichen. Daher sollte der Benutzername keine führenden oder nachgestellten Leerzeichen enthalten.
  2. 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 der Azure-Datenbank für MySQL

Wenn Sie eine Microsoft Entra-Gruppe für den Zugriff auf Ihre Datenbank aktivieren möchten, verwenden Sie den genauen Mechanismus für Benutzer, geben Sie 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
  • 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

Nächste Schritte