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

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

Wichtig

Azure Database for PostgreSQL – Single Server wird eingestellt. Es wird dringend empfohlen, ein Upgrade auf Azure Database for PostgreSQL – Flexibler Server auszuführen. Weitere Informationen zum Migrieren zu Azure Database for PostgreSQL – Flexibler Server finden Sie unter Was geschieht mit Azure Database for PostgreSQL – Single Server?.

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

Festlegen des Microsoft Entra-Administratorbenutzers

Nur Microsoft Entra-Administratorbenutzer können Benutzer für die Microsoft Entra ID-basierte Authentifizierung erstellen/aktivieren. Es wird empfohlen, den Microsoft Entra-Administrator nicht für reguläre Datenbankvorgänge zu verwenden, da er über erhöhte Benutzerberechtigungen verfügt (z. B. CREATEDB).

Führen Sie die folgenden Schritte aus, um den Microsoft Entra-Administrator (Benutzer oder Gruppe) festzulegen

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

Legen Sie einen Microsoft Entra-Admin fest.

  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 PostgreSQL-Server ein neuer Benutzer mit vollständigen Administratorberechtigungen hinzugefügt. Der Microsoft Entra-Administratorbenutzer in Azure Database for PostgreSQL übt die Rolle azure_ad_admin aus. Es kann nur ein Microsoft Entra-Administrator pro PostgreSQL-Server erstellt werden, und die Auswahl eines anderen Administrators überschreibt den vorhandenen Microsoft Entra-Administrator, der für den Server konfiguriert wurde. Sie können eine Microsoft Entra-Gruppe anstelle eines einzelnen Benutzers festlegen, damit mehrere Administratoren vorhanden sein können.

Es kann nur ein Microsoft Entra-Administrator pro PostgreSQL-Server erstellt werden, und die Auswahl eines anderen Administrators überschreibt den vorhandenen Microsoft Entra-Administrator, der für den Server konfiguriert wurde. Sie können eine Microsoft Entra-Gruppe anstelle eines einzelnen Benutzers festlegen, damit mehrere Administratoren vorhanden sein können. Beachten Sie, dass Sie sich dann zu Verwaltungszwecken mit dem Gruppennamen anmelden.

Herstellen einer Verbindung mit Azure-Datenbank für PostgreSQL mithilfe der Microsoft Entra ID

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

Authentifizierungsablauf

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

Zurzeit haben wir die folgenden Clients getestet:

  • psql-Befehlszeile (Verwenden Sie die PGPASSWORD-Variable, um das Token zu übergeben: Weitere Informationen finden Sie unter Schritt 3.)
  • Azure Data Studio (mit der PostgreSQL-Erweiterung)
  • Andere libpq-basierte Clients (z.B. gängige Anwendungsframeworks und ORMs)
  • PgAdmin (Verbindung bei der Servererstellung deaktivieren. Weitere Informationen finden Sie in Schritt 4.)

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.

Authentifizieren mit Microsoft Entra ID als einzelner Benutzer

Schritt 1: Anmelden beim Azure-Abonnement des Benutzers

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 PostgreSQL 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

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 PostgreSQL-Dienst bestimmt ist.

Schritt 3: Verwenden des Tokens als Kennwort für die Anmeldung mit psql für Clients

Beim Herstellen einer Verbindung müssen Sie das Zugriffstoken als PostgreSQL-Benutzerkennwort verwenden.

Wenn der psql-Befehlszeilenclient verwendet wird, muss das Zugriffstoken über die Umgebungsvariable PGPASSWORD übergeben werden, da das Zugriffstoken die Kennwortlänge überschreitet, die psql direkt annehmen kann:

Windows-Beispiel:

set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'

Beispiel für Linux/macOS:

export PGPASSWORD=<copy/pasted TOKEN value from step 2>

Nun können Sie eine Verbindung mit Azure Database for PostgreSQL wie gewohnt initiieren:

psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com@mydb dbname=postgres sslmode=require"

Schritt 4: Verwenden des Tokens als Kennwort für die Anmeldung mit PgAdmin

Führen Sie die folgenden Schritte aus, um mithilfe eines Microsoft Entra-Tokens eine Verbindung mit pgAdmin herzustellen:

  1. Deaktivieren Sie bei der Servererstellung die Option „Jetzt verbinden“.
  2. Geben Sie Ihre Serverdetails auf der Registerkarte „Verbindung“ ein, und speichern Sie sie.
  3. Wählen Sie im Browsermenü die Option zum Herstellen einer Verbindung mit dem Azure Database for PostgreSQL-Server aus.
  4. Geben Sie das AD-Tokenkennwort ein, wenn Sie dazu aufgefordert werden.

Wichtige Aspekte beim Herstellen einer Verbindung:

  • user@tenant.onmicrosoft.com ist der Name des Microsoft Entra-Benutzers
  • Achten Sie darauf, die genaue Schreibweise des Microsoft Entra-Benutzers zu verwenden, da bei den Namen für Microsoft Entra Benutzer und -Gruppen die Groß-/Kleinschreibung beachtet wird.
  • Verwenden Sie \ als Escapezeichen vor Leerzeichen, falls der Name Leerzeichen enthält.
  • 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 PostgreSQL abzurufen.

Sie sind jetzt über Microsoft Entra-Authentifizierung bei Ihrem Azure Database for PostgreSQL-Server authentifiziert.

Authentifizieren mit Microsoft Entra ID als Gruppenmitglied

Schritt 1: Erstellen von Microsoft Entra-Gruppen in Azure-Datenbank für PostgreSQL

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 USER <new_user> IN ROLE azure_ad_user;

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.

Schritt 2: Anmelden beim Azure-Abonnement des Benutzers

Authentifizieren Sie sich mit der Microsoft Entra ID mithilfe des Azure CLI-Tools. Dieser Schritt ist in Azure Cloud Shell nicht erforderlich. Der Benutzer muss Mitglied der Microsoft Entra-Gruppe sein.

az login

Schritt 3: 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 2 für den Zugriff auf Azure Database for PostgreSQL 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

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

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

Schritt 4: Verwenden des Tokens als Kennwort für die Anmeldung mit psql oder PgAdmin (siehe die obigen Schritte für die Benutzerverbindung)

Wichtige Überlegungen beim Herstellen einer Verbindung als Gruppenmitglied:

  • groupname@mydb ist der Name der Microsoft Entra-Gruppe, mit 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 der Microsoft Entra-Gruppe geschrieben ist und verwenden Sie ihn so.
  • Bei Microsoft Entra-Benutzer- und Gruppennamen wird die Groß-/Kleinschreibung beachtet
  • Verwenden Sie beim Herstellen einer Verbindung als Gruppe nur den Gruppennamen (z. B. „GroupName@mydb“) und nicht den Alias eines Gruppenmitglieds.
  • Verwenden Sie als Escapezeichen vor Leerzeichen, falls der Name Leerzeichen enthält.
  • 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 PostgreSQL abzurufen.

Sie sind jetzt bei Ihrem PostgreSQL-Server über Microsoft Entra-Authentifizierung authentifiziert.

Erstellen von Microsoft Entra-Benutzern in der Azure-Datenbank für PostgreSQL

Um Ihrer Azure Database for PostgreSQL-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 PostgreSQL-Instanz als Microsoft Entra-Administratorbenutzer an.
  3. Erstellen Sie die Rolle <user>@yourtenant.onmicrosoft.com in Azure Database for PostgreSQL.
  4. Erklären Sie <user>@yourtenant.onmicrosoft.com zum Mitglied der Rolle azure_ad_user. Es darf nur Microsoft Entra-Benutzern erteilt werden.

Beispiel:

CREATE USER "user1@yourtenant.onmicrosoft.com" IN ROLE azure_ad_user;

Hinweis

Die Authentifizierung eines Benutzers über Microsoft Entra ID verleiht dem Benutzer keine Berechtigung für den Zugriff auf Objekte innerhalb der Azure Database for PostgreSQL-Datenbank. Sie müssen dem Benutzer die erforderlichen Berechtigungen manuell erteilen.

Tokenüberprüfung

Microsoft Entra ID-Authentifizierung in Azure Database for PostgreSQL stellt sicher, dass der Benutzer auf dem PostgreSQL-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 PostgreSQL-Ressource (und nicht für eine andere Azure-Ressource).

Migrieren vorhandener PostgreSQL-Benutzer zur Microsoft Entra ID-basierten Authentifizierung

Sie können die Microsoft Entra-Authentifizierung für vorhandene Benutzer aktivieren. Es müssen zwei Fälle berücksichtigt werden:

Fall 1: PostgreSQL-Benutzername entspricht dem Microsoft Entra-Benutzerprinzipalnamen

In dem unwahrscheinlichen Fall, dass Ihre vorhandenen Benutzer bereits den Microsoft Entra-Benutzernamen entsprechen, können Sie ihnen die Rolle azure_ad_user zuweisen, um sie für die Microsoft Entra-Authentifizierung zu aktivieren:

GRANT azure_ad_user TO "existinguser@yourtenant.onmicrosoft.com";

Sie sind jetzt in der Lage, sich mit Microsoft Entra-Anmeldeinformationen anzumelden, anstatt ihr zuvor konfiguriertes PostgreSQL-Benutzerkennwort zu verwenden.

Fall 2: Der Name des PostgreSQL-Benutzernamens unterscheidet sich vom Microsoft Entra-Benutzerprinzipalnamen

Wenn ein PostgreSQL-Benutzer entweder nicht in Microsoft Entra ID vorhanden ist oder einen anderen Benutzernamen aufweist, können Sie Microsoft Entra-Gruppen verwenden, um sich als dieser PostgreSQL-Benutzer zu authentifizieren. Sie können vorhandene Azure Database for PostgreSQL-Benutzer zu Microsoft Entra ID migrieren, indem Sie eine Microsoft Entra-Gruppe mit einem Namen erstellen, der mit dem PostgreSQL-Benutzer übereinstimmt, und dem vorhandenen PostgreSQL-Benutzer dann die Rolle azure_ad_user zuweisen:

GRANT azure_ad_user TO <new_user>;

Dabei wird davon ausgegangen, dass Sie eine Gruppe „DBReadUser“ in Microsoft Entra ID erstellt haben. Benutzer, die zu dieser Gruppe gehören, können sich nun bei der Datenbank als dieser Benutzer anmelden.

Nächste Schritte