Freigeben über


Verwenden von Microsoft Entra ID für die Authentifizierung mit Azure Database for PostgreSQL – Flexible Server

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

In diesem Artikel konfigurieren Sie Microsoft Entra ID-Zugriff für die Authentifizierung flexibler Server mit Azure Database for PostgreSQL. Außerdem erfahren Sie, wie Sie ein Microsoft Entra-Token für flexible Server mit Azure Database for PostgreSQL verwenden.

Sie können die Microsoft Entra-Authentifizierung für flexible Server mit Azure Database for PostgreSQL entweder während der Serverbereitstellung oder später konfigurieren. Nur Microsoft Entra-Administratorbenutzer können Benutzer für die Microsoft Entra ID-basierte Authentifizierung erstellen oder aktivieren. Es wird empfohlen, den Microsoft Entra-Administrator nicht für reguläre Datenbankvorgänge zu verwenden, da diese Rolle über erhöhte Benutzerberechtigungen verfügt (z. B. CREATEDB).

Sie können mehrere Microsoft Entra-Administratorbenutzer für flexible Server in Azure Database for PostgreSQL einrichten. Microsoft Entra-Administratorbenutzer können ein Benutzer, eine Gruppe oder ein Dienstprinzipal sein.

Voraussetzungen

Konfigurieren von Netzwerkanforderungen

Microsoft Entra ID ist eine mehrinstanzenfähige Anwendung. Sie erfordert ausgehende Konnektivität, um bestimmte Vorgänge wie das Hinzufügen von Microsoft Entra-Administratorgruppen durchzuführen. Darüber hinaus benötigen Sie Netzwerkregeln, damit die Microsoft Entra-Konnektivität abhängig von Ihrer Netzwerktopologie funktioniert:

  • Öffentlicher Zugriff (zulässige IP-Adressen): Es sind keine zusätzlichen Netzwerkregeln erforderlich.

  • Privater Zugriff (VNet-Integration):

    • Sie benötigen eine ausgehende NSG-Regel (Netzwerksicherheitsgruppe), um zuzulassen, dass der Datenverkehr des virtuellen Netzwerks nur das AzureActiveDirectory-Diensttag erreicht.
    • Wenn Sie eine Routingtabelle verwenden, müssen Sie eine Regel mit dem Zieldiensttag AzureActiveDirectory und nächster Hop Interneterstellen.
    • Wenn Sie einen Proxy verwenden, fügen Sie optional eine neue Firewallregel hinzu, damit HTTP/S-Datenverkehr nur das AzureActiveDirectory-Diensttag erreicht.
  • Benutzerdefiniertes DNS: Es gibt zusätzliche Überlegungen, wenn Sie ein benutzerdefiniertes DNS in Ihrem virtuellen Netzwerk (VNET) verwenden. In solchen Fällen ist es wichtig, sicherzustellen, dass die folgenden Endpunkte zu ihren entsprechenden IP-Adressen aufgelöst werden: login.microsoftonline.com: Dieser Endpunkt wird für die Authentifizierung verwendet. Stellen Sie sicher, dass Ihr benutzerdefiniertes DNS-Setup das Auflösen von login.microsoftonline.com in die richtigen IP-Adressen ermöglicht graph.microsoft.com: Dieser Endpunkt wird für den Zugriff auf die Microsoft Graph-API verwendet. Stellen Sie sicher, dass Ihr benutzerdefiniertes DNS-Setup die Auflösung von graph.microsoft.com zu den richtigen IP-Adressen zulässt.

Führen Sie die folgenden Schritte aus, um den Microsoft Entra-Administrator während der Serverbereitstellung festzulegen:

  1. Wählen Sie im Azure-Portal während der Serverbereitstellung entweder PostgreSQL- und Microsoft Entra-Authentifizierung oder nur Microsoft Entra-Authentifizierung als Authentifizierungsmethode aus.
  2. Wählen Sie auf der Registerkarte Administrator festlegen einen gültigen Benutzer, eine gültige Gruppe, einen gültigen Dienstprinzipal oder eine gültige verwaltete Identität für Microsoft Entra im Kundenmandanten als Microsoft Entra-Administrator aus.

Sie können optional auch ein lokales PostgreSQL-Administratorkonto hinzufügen, wenn Sie die PostgreSQL- und Microsoft Entra-Authentifizierungsmethode bevorzugen.

Hinweis

Sie können während der Serverbereitstellung nur einen Azure-Administratorbenutzer hinzufügen. Sie können mehrere Microsoft Entra-Administratorbenutzer hinzufügen, nachdem der Server erstellt wurde.

Screenshot der Auswahl zum Festlegen eines Microsoft Entra-Administrators während der Serverbereitstellung.]

Führen Sie die folgenden Schritte aus, um den Microsoft Entra-Administrator nach der Servererstellung festzulegen:

  1. Wählen Sie im Azure-Portal die Instanz für flexible Server von Azure Database for PostgreSQL aus, die Sie für Microsoft Entra ID aktivieren möchten.
  2. Wählen Sie unter Sicherheit die Option Authentifizierung aus. Wählen Sie dann entweder PostgreSQL- und Microsoft Entra-Authentifizierung oder nur Microsoft Entra-Authentifizierung als Authentifizierungsmethode aus, basierend auf Ihren Anforderungen.
  3. Wählen Sie Microsoft Entra-Administratoren hinzufügen aus. Wählen Sie dann einen gültigen Microsoft Entra-Benutzer, eine Gruppe, einen Dienstprinzipal oder eine verwaltete Identität im Kundenmandanten aus, um ein Microsoft Entra-Administrator zu sein.
  4. Wählen Sie Speichern.

Screenshot der Auswahl zum Festlegen eines Microsoft Entra-Administrators nach der Servererstellung.

Wichtig

Beim Festlegen des Administrators wird für den flexiblen Server von Azure Database for PostgreSQL ein neuer Benutzer mit vollständigen Administratorberechtigungen hinzugefügt.

Herstellen einer Verbindung mit Azure Database for PostgreSQL mithilfe von Microsoft Entra ID

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

Diagramm des Authentifizierungsflusses zwischen Microsoft Entra ID, dem Computer des Benutzers und dem Server.

Die Microsoft Entra-Integration funktioniert mit Standard-PostgreSQL-Tools wie psql, die nicht Microsoft Entra-fähig sind und nur die Angabe von Benutzername und Kennwort beim Herstellen einer Verbindung mit PostgreSQL unterstützen. Das Microsoft Entra-Token wird wie im vorherigen Diagramm dargestellt als Kennwort übergeben.

Wir haben die folgenden Clients getestet:

  • psql-Befehlszeile: Verwenden Sie die Variable PGPASSWORD, um das Token zu übergeben.
  • Azure Data Studio: Verwenden Sie die PostgreSQL-Erweiterung.
  • Andere libpq-basierte Clients: Beispiele sind gängige Anwendungsframeworks und ORMs (Object-Relational Mappers, objektrelationale Zuordnungen).
  • PgAdmin: Deaktivieren Sie bei der Servererstellung die Option Jetzt verbinden.

Authentifizierung mit Microsoft Entra ID

Verwenden Sie die folgenden Verfahren, um sich bei Microsoft Entra ID als Benutzer des flexiblen Servers von Azure Database for PostgreSQL zu authentifizieren. Sie können den Schritten in Azure Cloud Shell, auf einer Azure-VM oder auf Ihrem lokalen Computer folgen.

Anmelden beim Azure-Abonnement des Benutzers

Beginnen Sie mit der Authentifizierung bei Microsoft Entra ID mithilfe der Azure CLI. Dieser Schritt ist in Azure Cloud Shell nicht erforderlich.

az login

Der Befehl öffnet ein Browserfenster zur Microsoft Entra-Authentifizierungsseite. Er erfordert, dass Sie Ihre Microsoft Entra-Benutzer-ID und Ihr Kennwort angeben.

Abrufen des Microsoft Entra-Zugriffstokens

Rufen Sie mithilfe der Azure CLI ein Zugriffstoken für den über Azure AD authentifizierten Benutzer für den Zugriff auf Azure Database for PostgreSQL ab. Hier sehen Sie ein Beispiel für die öffentliche Cloud:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

Der oben genannte Ressourcenwert muss wie gezeigt angegeben werden. Für andere Clouds können Sie den Ressourcenwert mit dem folgenden Befehl nachschlagen:

az cloud show

Für Version 2.0.71 oder höher der Azure CLI können Sie den Befehl in der folgenden praktischen Version für alle Clouds angeben:

az account get-access-token --resource-type oss-rdbms

Nach erfolgreicher Authentifizierung gibt Microsoft Entra ID ein Zugriffstoken zurück:

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

Das Token ist eine Base64-Zeichenfolge. Es codiert alle Informationen zum authentifizierten Benutzer und ist für den Azure Database for PostgreSQL-Dienst bestimmt.

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

Beim Herstellen einer Verbindung verwenden Sie am besten das Zugriffstoken als PostgreSQL-Benutzerkennwort.

Wenn Sie den psql-Befehlszeilenclient verwenden, muss das Zugriffstoken über die Umgebungsvariable PGPASSWORD übergeben werden. Der Grund dafür ist, dass das Zugriffstoken die Kennwortlänge überschreitet, die psql direkt annehmen kann.

Hier sehen Sie ein Windows-Beispiel:

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

Hier sehen Sie ein Linux/macOS-Beispiel:

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

Sie können Schritt 2 und Schritt 3 auch mithilfe der Befehlsersetzung kombinieren. Der Tokenabruf kann in einer Variablen gekapselt und direkt als Wert für die Umgebungsvariable PGPASSWORD übergeben werden:

export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)

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

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

Verwenden eines Tokens als Kennwort für die Anmeldung mit PgAdmin

Führen Sie die folgenden Schritte aus, um eine Verbindung mit einem Microsoft Entra-Token mit PgAdmin herzustellen:

  1. Öffnen Sie Pgadmin, klicken Sie im linken Menü auf Registrieren, und wählen Sie Server aus.
  2. Geben Sie auf der Registerkarte Allgemein einen Verbindungsnamen an, und deaktivieren Sie die Option Jetzt verbinden.
  3. Klicken Sie auf die Registerkarte Verbindung. Geben Sie die Instanz Ihres flexiblen Servers von Azure Database for PostgreSQL unter Hostname/Adresse und Benutzernamen an und speichern Sie Ihre Einstellungen. Benutzername ist Ihre Microsoft Entra ID oder E-Mail Adresse
  4. Wählen Sie im Browsermenü Ihre Verbindung zum flexiblen Server von Azure Database for PostgreSQL aus und klicken Sie auf Server verbinden
  5. Geben Sie Ihr Active Directory-Tokenkennwort ein, wenn Sie dazu aufgefordert werden.

Screenshot, der den Anmeldevorgang mithilfe des PG-Administrators zeigt.

Hier sind einige wichtige Überlegungen, die Sie beim Herstellen einer Verbindung berücksichtigen sollten:

  • user@tenant.onmicrosoft.com ist der UserPrincipalName des Microsoft Entra Testbenutzers.
  • Stellen Sie sicher, dass Sie die korrekte Schreibweise des Azure-Benutzers verwenden. Bei Microsoft Entra-Benutzer- und Gruppennamen wird die Groß-/Kleinschreibung beachtet.
  • Verwenden Sie einen umgekehrten Schrägstrich (\) als Escapezeichen vor Leerzeichen, falls der Name Leerzeichen enthält. Sie können die Azure CLI verwenden, um den angemeldeten Benutzer abzurufen und den Wert für die PGUGSER-Umgebungsvariable festzulegen:
    export PGUSER=$(az ad signed-in-user show --query "[userPrincipalName]" -o tsv | sed 's/ /\\ /g')
    
  • Die Gültigkeitsdauer des Zugriffstokens liegt bei 5 bis 60 Minuten. Sie sollten das Zugriffstoken vor dem Initiieren der Anmeldung bei Azure Database for PostgreSQL abrufen.

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

Authentifizieren mit Microsoft Entra ID als Gruppenmitglied

Erstellen von Microsoft Entra-Gruppen im flexiblen Server von Azure Database for 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:

select * from  pgaadauth_create_principal('Prod DB Readonly', false, false).

Wenn sich Gruppenmitglieder anmelden, verwenden sie ihre Zugriffstoken, geben aber den Gruppennamen als Benutzernamen an.

Hinweis

Der flexible Server von Azure Database for PostgreSQL unterstützt verwaltete Identitäten und Dienstprinzipale als Gruppenmitglieder.

Anmelden beim Azure-Abonnement des Benutzers

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

az login

Abrufen des Microsoft Entra-Zugriffstokens

Rufen Sie mithilfe der Azure CLI ein Zugriffstoken für den über Azure AD authentifizierten Benutzer für den Zugriff auf Azure Database for PostgreSQL ab. Hier sehen Sie ein Beispiel für die öffentliche Cloud:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

Sie müssen den Anfangswert der Ressource genau wie gezeigt angeben. Für andere Clouds können Sie den Ressourcenwert mit dem folgenden Befehl nachschlagen:

az cloud show

Für Version 2.0.71 oder höher der Azure CLI können Sie den Befehl in der folgenden praktischen Version für alle Clouds angeben:

az account get-access-token --resource-type oss-rdbms

Nach erfolgreicher Authentifizierung gibt Microsoft Entra ID ein Zugriffstoken zurück:

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

Verwenden eines Tokens als Kennwort für die Anmeldung mit psql oder PgAdmin

Diese Überlegungen sind von grundlegender Bedeutung, wenn Sie eine Verbindung als Gruppenmitglied herstellen:

  • Der Gruppenname ist der Name der Microsoft Entra-Gruppe, mit der Sie eine Verbindung herstellen möchten.
  • Achten Sie darauf, genau die richtige Schreibweise des Microsoft Entra-Gruppennamens zu verwenden. Bei Microsoft Entra-Benutzer- und Gruppennamen wird die Groß-/Kleinschreibung beachtet.
  • Verwenden Sie beim Herstellen einer Verbindung als Gruppe nur den Gruppennamen und nicht den Alias eines Gruppenmitglieds.
  • Verwenden Sie einen umgekehrten Schrägstrich (\) als Escapezeichen vor Leerzeichen, falls der Name Leerzeichen enthält.
  • Die Gültigkeitsdauer des Zugriffstokens liegt bei 5 bis 60 Minuten. Es wird empfohlen, das Zugriffstoken vor dem Initiieren der Anmeldung bei Azure Database for PostgreSQL abzurufen.

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

Nächste Schritte