Verbindung über ein IAM-Konto herstellen

Wenn Sie sich bei einer AlloyDB for PostgreSQL-Instanz mit Identity and Access Management-Anmeldedaten (IAM) anstelle von integrierten Datenbankpasswörtern authentifizieren möchten, können Sie sich mit einem OAuth 2.0-Zugriffstoken anmelden oder die automatische IAM-Authentifizierung konfigurieren. Sie können auch eine IAM-basierte Anmeldung mit dem psql-Befehlszeilenclient durchführen.

Eine Übersicht über das Herstellen einer Verbindung zu AlloyDB-Instanzen finden Sie unter Verbindungsübersicht.

Hinweis

Ihr Projekt, Ihr Cluster, Ihre Instanzen und Ihre IAM-Nutzerkonten müssen vorbereitet werden, bevor Sie sich mit IAM-Anmeldedaten in einer AlloyDB-Instanz anmelden können.

Weitere Informationen finden Sie unter IAM-Authentifizierung verwalten.

Mit einem OAuth 2.0-Token authentifizieren

Ein Nutzer oder eine Anwendung kann sich mit einer AlloyDB-Datenbank authentifizieren. Gehen Sie dazu so vor:

  1. Falls noch nicht geschehen, authentifizieren Sie sich für die Google Cloud CLI mit demselben Nutzer- oder Dienstkonto, mit dem Sie sich bei Ihrer AlloyDB-Instanz anmelden möchten.

  2. Fordern Sie mit dem Befehl gcloud auth print-access-token ein OAuth 2.0-Token von Google Cloud an:

    gcloud auth print-access-token

    Google Cloud gibt ein OAuth 2.0-Token als Ausgabe dieses Befehls aus.

    Für zusätzliche Sicherheit können Sie das Token so einschränken, dass es nur für die AlloyDB-Authentifizierung verwendet werden kann. Gehen Sie dazu so vor:

    1. Fügen Sie den Zugriffsbereich alloydb.login den Zugriffsdaten Ihrer aktuellen Umgebung mit dem Befehl gcloud auth application-default login hinzu, falls Sie dies noch nicht getan haben:

      gcloud auth application-default login --scopes=https://www.googleapis.com/auth/alloydb.login,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/userinfo.email,openid
    2. Geben Sie ein eingeschränktes OAuth 2.0-Token mit dem Befehl gcloud auth application-default print-access-token aus und beschränken Sie den Bereich des Tokens nur auf die AlloyDB-Authentifizierung:

      gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/alloydb.login

    Mit dem OAuth 2.0-Token können Sie oder andere Personen authentifizierte Anfragen an Google Cloud in Ihrem Namen stellen. Behandeln Sie das Token mit derselben Sicherheitsstufe wie ein Passwort. Speichern Sie das Token entweder sicher oder vermeiden Sie es, es überhaupt zu speichern. Das Beispiel für die Verwendung von psql weiter unten auf dieser Seite zeigt, wie Sie ein OAuth 2.0-Token in einer einzigen Aktion anfordern, verwenden und verwerfen können.

  3. Melden Sie sich mit diesen Anmeldedaten und standardmäßigen PostgreSQL-Techniken bei einer AlloyDB-Instanz an:

    • Geben Sie das im vorherigen Schritt abgerufene Zugriffstoken als Passwort an.

    • Bei einem IAM-Nutzerkonto ist der Datenbank-Nutzername die vollständige E-Mail-Adresse des Kontos.

    • Bei einem IAM-Dienstkonto ist der Datenbank-Nutzername die E-Mail-Adresse des Kontos ohne das Suffix .gserviceaccount.com.

Der folgende psql-Befehl zeigt eine Möglichkeit, sich über die Befehlszeile als IAM-Nutzer anzumelden. Die Ausgabe von gcloud auth print-access-token wird der Umgebungsvariablen PGPASSWORD zugewiesen, die psql anschließend als Passwort für die Datenbankanmeldung verwendet.

PGPASSWORD=$(gcloud auth print-access-token) psql \
  -h INSTANCE_ADDRESS \
  -U USERNAME \
  -d DATABASE

Ersetzen Sie Folgendes:

  • INSTANCE_ADDRESS: Die IP-Adresse der AlloyDB-Instanz, zu der eine Verbindung hergestellt werden soll.

  • USERNAME: Eine Kennung für den IAM-Nutzer, der sich bei der Instanz authentifizieren soll.

    Geben Sie für ein IAM-Nutzerkonto die vollständige E-Mail-Adresse des Nutzerkontos an. Beispiel: kai@example.com.

    Geben Sie für ein IAM-Dienstkonto die Adresse des Dienstkontos ohne das Suffix .gserviceaccount.com an. Wenn Sie beispielsweise das Dienstkonto my-service@my-project.iam.gserviceaccount.com angeben möchten, verwenden Sie hier den Wert my-service@my-project.iam.

  • DATABASE: Der Name der Datenbank, zu der eine Verbindung hergestellt werden soll.

Beachten Sie, dass psql Passwörter, die in der Befehlszeile eingegeben werden und länger als 100 Zeichen sind, kürzt. Wenn Sie psql mit einem OAuth 2.0-Token als Anmeldepasswort verwenden möchten, müssen Sie die Umgebungsvariable PGPASSWORD wie in diesem Beispiel gezeigt festlegen, anstatt sie manuell einzufügen, wenn Sie dazu aufgefordert werden.

Automatisch authentifizieren

Wenn Sie einen IAM-basierten AlloyDB-Nutzer automatisch authentifizieren möchten, ohne ein OAuth 2.0-Token zu benötigen, haben Sie zwei Möglichkeiten: AlloyDB Auth-Proxy und AlloyDB Language Connectors.

Das IAM-Konto, das Sie zum Ausführen des Proxy-Clients oder der Language Connectors verwenden, muss dasselbe Konto sein, das Sie als Datenbanknutzer hinzugefügt haben. Wenn Sie Ihre Arbeitslast beispielsweise mit dem IAM-Nutzerkonto kai@example.com ausführen, können Sie den Proxy-Client oder Language Connectors verwenden, um den Datenbanknutzer kai@example.com automatisch zu authentifizieren, ohne ein OAuth 2.0-Token anzugeben. In diesem Beispiel funktioniert die automatische Authentifizierung nur mit dem Datenbanknutzer kai@example.com.

Auth-Proxy

Wenn Sie den Auth-Proxy verwenden möchten, müssen Sie den Auth-Proxy-Client mit aktiviertem Flag --auto-iam-authn ausführen.

Weitere Informationen zum Ausführen des Auth-Proxys finden Sie unter Verbindung mit dem AlloyDB Auth-Proxy herstellen.

Sprach-Connectors

Für die Verwendung von Language Connectors muss die IAM-Authentifizierung programmatisch aktiviert werden. Für den AlloyDB Python-Connector wird die automatische IAM-Authentifizierung (enable_iam_auth=True) mit den Treibern pg8000 und asyncpg unterstützt. Für jede Sprache gibt es eine entsprechende Option unter AlloyDB Language Connectors konfigurieren.

Nächste Schritte