Share via


Verwenden von Microsoft Entra ID für die Authentifizierung mit MySQL

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

Wichtig

Azure Database for MySQL single server is on the retirement path. Es wird dringend empfohlen, ein Upgrade auf azure Database for MySQL flexiblen Server durchzuführen. Weitere Informationen zum Migrieren zu Azure Database for MySQL flexible Server finden Sie unter Was geschieht mit Azure Database for MySQL Single Server?

Dieser Artikel führt Sie durch die Schritte zum Konfigurieren des Zugriffs auf Microsoft Entra ID mit Azure Database for MySQL sowie zum Herstellen einer Verbindung mit einem Microsoft Entra-Token.

Wichtig

Die Microsoft Entra-Authentifizierung ist nur für MySQL Version 5.7 und höher verfügbar.

Festlegen des Microsoft Entra-Administratorbenutzers

Nur Microsoft Entra-Administratorbenutzer können Benutzer für die Microsoft Entra ID-basierte Authentifizierung erstellen/aktivieren. Führen Sie die folgenden Schritte aus, um einen Microsoft Entra-Administratorbenutzer zu erstellen

  1. Wählen Sie im Azure-Portal die Instanz von Azure Database for MySQL aus, die Sie für Microsoft Entra ID aktivieren möchten.
  2. Wählen Sie unter „Einstellungen“ die Option „Active Directory-Administrator“ aus:

set Microsoft Entra administrator

  1. Wählen Sie einen gültigen Microsoft Entra-Benutzer im Kundenmandanten aus, um Microsoft Entra-Administrator zu sein.

Wichtig

Beim Festlegen des Administrators wird dem Azure Database for MySQL-Server ein neuer Benutzer mit vollständigen Administratorberechtigungen hinzugefügt.

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.

Nachdem Sie den Administrator konfiguriert haben, können Sie sich jetzt anmelden:

Herstellen einer Verbindung mit Azure Database for MySQL mithilfe der Microsoft Entra ID

Die folgende allgemeine Abbildung bietet eine Übersicht über den Workflow bei der Verwendung von Microsoft Entra-Authentifizierung mit Azure Database for MySQL:

authentication flow

Wir haben die Microsoft Entra-Integration so konzipiert, dass sie mit gängigen MySQL-Tools wie der mysql-CLI funktioniert, die nicht Microsoft Entra-fähig sind und nur die Angabe von Benutzername und Kennwort beim Herstellen einer Verbindung mit MySQL unterstützen. Wir übergeben das Microsoft Entra-Token als Kennwort, wie in der Abbildung oben gezeigt.

Zurzeit haben wir die folgenden Clients getestet:

  • MySQLWorkbench
  • MySQL-CLI

Wir haben auch die gängigsten Anwendungstreiber getestet. Details finden Sie am Ende dieser Seite.

Dies sind die Schritte, die ein Benutzer oder eine Anwendung für die Authentifizierung mit Microsoft Entra ID ausführen muss, die im Folgenden beschrieben werden:

Voraussetzungen

Sie können den Schritten in Azure Cloud Shell, auf einer Azure-VM oder auf Ihrem lokalen Computer folgen. Stellen Sie sicher, dass die Azure CLI installiert ist.

Schritt 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.

az login

Mit dem Befehl wird ein Browserfenster auf der Seite Microsoft Entra-Authentifizierung gestartet. Es erfordert, dass Sie Ihre Microsoft Entra-Benutzer-ID und das Kennwort angeben.

Schritt 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 Azure Database for MySQL 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

Nachdem die Authentifizierung erfolgreich war, gibt Microsoft Entra ID ein Zugriffstoken zurück:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Das Token ist eine Base-64-Zeichenfolge, die alle Informationen zum authentifizierten Benutzer codiert und die 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 erst kurz vor dem Initiieren der Anmeldung bei Azure Database for MySQL abzurufen. Sie können den folgenden PowerShell-Befehl verwenden, um die Gültigkeitsdauer des Tokens anzuzeigen.

$accessToken.ExpiresOn.DateTime

Schritt 3: Verwenden des 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 MySQLWorkbench verwenden, können Sie das Token mit der oben beschriebenen Methode abrufen.

Verwenden der MySQL CLI

Bei Verwendung 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@mydb \ 
  --enable-cleartext-plugin \ 
  --password=`az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken`

Über MySQL Workbench

  • Starten Sie MySQL Workbench, und klicken Sie auf die Option „Database“ (Datenbank) und dann auf „Connect to database“ (Verbindung mit der Datenbank herstellen).
  • Geben Sie im Feld „hostname“ den MySQL-FQDN ein, z. B. mydb.mysql.database.azure.com.
  • Geben Sie im Feld „username“ (Benutzername) den Namen des MySQL Microsoft Entra-Administrators ein, und fügen Sie daran den MySQL-Servernamen an, nicht den FQDN. Beispiel: user@tenant.onmicrosoft.com@mydb
  • 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“.
  • Klicken Sie auf die Registerkarte „Advanced“ (Erweitert), und stellen Sie sicher, dass Sie „Enable Cleartext Authentication Plugin“ (Plug-In für die Klartextauthentifizierungs aktivieren) aktivieren.
  • Klicken Sie auf „OK“, um die 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
  • Fügen Sie immer den Servernamen nach dem Microsoft Entra-Benutzer-/Gruppennamen an (z. B. @mydb)
  • 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@mydb).
  • Verwenden Sie \ als Escapezeichen vor Leerzeichen, falls der Name Leerzeichen enthält.

Beachten Sie 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 MySQL-Server über Microsoft Entra-Authentifizierung authentifiziert.

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 (weitere Informationen finden Sie in einem späteren Abschnitt zum Herstellen einer Verbindung):

  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 Mitglieder der Gruppe ihre persönlichen Zugriffstoken, melden sich aber mit dem Gruppennamen an, der als Benutzername angegeben wurde.

Tokenüberprüfung

Microsoft Entra-Authentifizierung in Azure Database for MySQL stellt sicher, dass der Benutzer auf dem MySQL-Server vorhanden ist, und überprüft die Gültigkeit des Tokens, indem der Inhalt des Tokens überprüft wird. Die folgenden Tokenvalidierungsschritte werden ausgeführt:

  • Das Token wird von der Microsoft Entra ID signiert und wurde nicht manipuliert
  • Token wurde von der Microsoft Entra ID für den Mandanten ausgestellt, der dem Server zugeordnet ist
  • Das Token ist nicht abgelaufen.
  • Das Token gilt für die Azure Database for MySQL-Ressource (und nicht für eine andere Azure-Ressource).

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