Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel konfigurieren Sie den Microsoft Entra ID-Zugriff für die Authentifizierung mit Azure Database for PostgreSQL. Außerdem erfahren Sie, wie Sie ein Microsoft Entra-Token mit einer flexiblen Azure-Datenbank für eine PostgreSQL-Server Instanz verwenden.
Sie können die Microsoft Entra-Authentifizierung für eine Azure-Datenbank für PostgreSQL-Flexible-Server-Instanz 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. Verwenden Sie den Microsoft Entra-Administrator nicht für reguläre Datenbankvorgänge, da diese Rolle erhöhte Benutzerberechtigungen hat (z. B. CREATEDB).
Sie können über mehrere Microsoft Entra-Administratorbenutzer mit Azure Database für PostgreSQL verfügen. Microsoft Entra-Administratorbenutzer können ein Benutzer, eine Gruppe oder ein Dienstprinzipal sein.
Voraussetzungen
- Sie benötigen ein Azure-Konto mit einem aktiven Abonnement. Kostenlos ein Konto erstellen.
Konfigurieren von Netzwerkanforderungen
Microsoft Entra ID ist eine mehrinstanzenfähige Anwendung. Sie benötigt ausgehende Konnektivität für Vorgänge wie das Hinzufügen von Microsoft Entra-Administratorgruppen.
Netzwerkanforderungen variieren je nach Topologie:
- Öffentlicher Zugriff (zulässige IP-Adressen): Es sind keine zusätzlichen ausgehenden Regeln erforderlich.
-
Privater Zugriff (Integration des virtuellen Netzwerks):
- Fügen Sie eine ausgehende NSG-Regel hinzu, die den Datenverkehr nur zum
AzureActiveDirectoryDienst-Tag zulässt. - **
Wenn Sie eine Routentabelle verwenden, fügen Sie eine Route mit dem Ziel
AzureActiveDirectoryund dem nächsten HopInternethinzu. - Wenn Sie einen Proxy verwenden, lassen Sie nur HTTPS-Datenverkehr an das
AzureActiveDirectoryDiensttag zu.
- Fügen Sie eine ausgehende NSG-Regel hinzu, die den Datenverkehr nur zum
-
Benutzerdefiniertes DNS:
- Stellen Sie sicher, dass diese Hostnamen öffentlich aufgelöst werden:
login.microsoftonline.com(Authentifizierung) undgraph.microsoft.com(Microsoft Graph-API). - Wenn die Lösung fehlschlägt, schlagen Administratorzuweisungs- und Tokenakquisitionsvorgänge fehl.
- Stellen Sie sicher, dass diese Hostnamen öffentlich aufgelöst werden:
Führen Sie die folgenden Schritte aus, um den Microsoft Entra-Administrator während der Serverbereitstellung festzulegen:
- Wählen Sie im Azure-Portal während der Serverbereitstellung entweder PostgreSQL- und Microsoft Entra-Authentifizierung oder nur Microsoft Entra-Authentifizierung als Authentifizierungsmethode aus.
- 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 Microsoft Entra-Administrator hinzufügen. Sie können mehrere Microsoft Entra-Administratorbenutzer hinzufügen, nachdem der Server erstellt wurde.
Führen Sie die folgenden Schritte aus, um den Microsoft Entra-Administrator nach der Servererstellung festzulegen:
- 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.
- 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.
- 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.
- Wählen Sie Speichern aus.
Von Bedeutung
Wenn Sie den Administrator festlegen, wird ihrer flexiblen Azure-Serverinstanz für PostgreSQL ein neuer Benutzer mit vollständigen Administratorberechtigungen hinzugefügt.
Herstellen einer Verbindung mit Azure Database for PostgreSQL mithilfe von Microsoft Entra ID
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.
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
Nutzen Sie die folgenden Verfahren, um sich mit Microsoft Entra ID als Nutzer einer flexiblen Azure-Datenbank für PostgreSQL-Serverinstanz zu authentifizieren.
Sie können mit diesen Anweisungen folgen:
- Azure Cloud Shell
- Virtueller Azure-Computer
- Ihr lokaler Computer
Anmelden bei Azure
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 eines Microsoft Entra-Zugriffstokens
Verwenden Sie die Azure CLI, um ein Zugriffstoken für den authentifizierten Microsoft Entra-Benutzer abzurufen, um auf Azure-Datenbank für PostgreSQL zuzugreifen. 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
Verwenden Sie beim Herstellen einer Verbindung das Zugriffstoken als PostgreSQL-Benutzerkennwort.
Wenn Sie den psql-Befehlszeilenclient verwenden, müssen Sie das Zugriffstoken über die PGPASSWORD Umgebungsvariable übergeben. Das Zugriffstoken ist länger als die Kennwortlänge, die von psql direkt akzeptiert werden 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 ist ein Beispiel für Linux oder macOS:
export PGPASSWORD=<copy/pasted TOKEN value from step 2>
Sie können Schritt 2 und Schritt 3 auch mithilfe der Befehlsersetzung kombinieren. Sie können den Tokenabruf in eine Variable einfügen und direkt als Wert für die PGPASSWORD Umgebungsvariable übergeben:
export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)
Stellen Sie jetzt eine Verbindung mit Azure-Datenbank für PostgreSQL her:
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:
- Öffnen Sie PgAdmin, und wählen Sie "Server> aus.
- Auf der Registerkarte Allgemein geben Sie einen Verbindungsnamen ein und deaktivieren Sie Jetzt verbinden.
- Geben Sie auf der Registerkarte "Verbindung " die Hostdetails ein. Setzen Sie Benutzername auf Ihren Microsoft Entra UPN (z. B.
user@tenant.onmicrosoft.com). Speichern. - Wählen Sie im Baum den Server aus und dann Server verbinden.
- Wenn Sie dazu aufgefordert werden, fügen Sie das Zugriffstoken als Kennwort ein.
Hier sind einige wichtige Überlegungen, die Sie beim Herstellen einer Verbindung berücksichtigen sollten:
user@tenant.onmicrosoft.comist 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 diePGUSER-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
In diesem Abschnitt wird gezeigt, wie Sie mithilfe einer Microsoft Entra-Gruppe eine Verbindung herstellen. Sie müssen Mitglied der Gruppe sein, und die Gruppe muss in der Datenbank erstellt (zugeordnet) werden.
Erstellen eines Gruppenhauptbenutzers
Erstellen Sie den Gruppenprinzipal (Rolle) in der Datenbank (ersetzen Sie den Anzeigenamen nach Bedarf):
select * from pgaadauth_create_principal('Prod DB Readonly', false, false).
Wenn die Gruppensynchronisierung deaktiviert ist, können sich Mitglieder mit ihren Zugriffstoken anmelden und den Gruppennamen als Benutzername angeben.
Wenn die Gruppensynchronisierung aktiviert ist (über pgaadauth.enable_group_sync Serverparameter auf "ON" festgelegt), sollten sich Die Mitglieder mit ihren einzelnen Entra-ID-Anmeldeinformationen anmelden, sich aber trotzdem mit dem Gruppennamen als Benutzername anmelden.
Gruppenanmeldungen bleiben aus Kompatibilitätsgründen verfügbar, können jedoch deaktiviert werden mit:
ALTER ROLE "ROLE_NAME" NOLOGIN;Die Gruppenrolle sollte nicht gelöscht werden, um die Synchronisierung aufrechtzuerhalten.
Gruppen werden alle 30 Minuten automatisch synchronisiert.
Manuelle Synchronisierung kann ausgelöst werden mit:
SELECT * FROM pgaadauth_sync_roles_for_group_members();(pgaadauth.enable_group_syncParam muss "EIN" sein).Änderungen an Gruppenmetadaten wie Gruppennamen werden nicht synchronisiert.
Änderungen der Gruppenmitgliedschaft werden synchronisiert.
Hinweis
Verwaltete Identitäten und Dienstprinzipale werden als Gruppenmitglieder unterstützt.
Anmelden bei Azure
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 eines Microsoft Entra-Zugriffstokens
Verwenden Sie die Azure CLI, um ein Zugriffstoken für den authentifizierten Microsoft Entra-Benutzer abzurufen, um auf Azure-Datenbank für PostgreSQL zuzugreifen. 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 muss exakt mit dem Anzeigenamen der Microsoft Entra-Gruppe übereinstimmen (Groß-/Kleinschreibung wird beachtet).
- Verwenden Sie nur den Gruppennamen, nicht einen Mitgliedsalias.
- Verwenden Sie einen umgekehrten Schrägstrich als Escapezeichen vor Leerzeichen, falls erforderlich (z. B.
Prod\ DB\ Readonly). - Die Gültigkeit des Tokens beträgt 5 bis 60 Minuten. Erwerben Sie es direkt vor der Verbindung; Token nicht in Skripts speichern.
Tipp
Wenn die Authentifizierung fehlschlägt, überprüfen Sie, ob die Datenbankrolle vorhanden ist (z. B. mit \du) und bestätigen Sie die pgaadauth.enable_group_sync Einstellung.
Sie sind jetzt über Microsoft Entra-Authentifizierung bei Ihrem PostgreSQL-Server authentifiziert.