Freigeben über


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

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

In diesem Tutorial wird gezeigt, wie Sie 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 einem flexiblen Azure Database for MySQL-Server mithilfe von Microsoft Entra ID

Voraussetzungen

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 für flexible Server von Azure Database for MySQL aus, die Sie für Microsoft Entra ID aktivieren möchten.

  • Wählen Sie Authentifizierung im Bereich „Sicherheit“ aus: Diagramm: Konfigurieren der Microsoft Entra-Authentifizierung.

  • 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 einem flexiblen Azure Database for MySQL-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 Benutzer aus Schritt 1 für den Zugriff auf den flexiblen Azure Database for MySQL-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 beim flexiblen Azure Database for MySQL-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 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

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:

  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 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
  • 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
  • PHP

    • mysqli-Erweiterung: Unterstützt

    • PDO_MYSQL-Treiber: Unterstützt

Nächste Schritte