Verbindung über ein IAM-Konto herstellen

Auf dieser Seite wird beschrieben, wie Sie sich mit einem Konto, das mit Identity and Access Management (IAM) vorbereitet wurde, in einer AlloyDB for PostgreSQL-Instanz anmelden. Darin wird der Prozess veranschaulicht, indem gezeigt wird, wie eine IAM-basierte Anmeldung mit dem psql-Befehlszeilenclient durchgeführt wird.

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

Hinweise

Für Ihr Projekt, Ihren Cluster, Ihre Instanzen und Ihre IAM-Nutzerkonten sind Vorbereitungen erforderlich, bevor Sie sich mit IAM-Anmeldedaten in einer AlloyDB-Instanz anmelden können.

Weitere Informationen finden Sie unter IAM-Authentifizierung verwalten.

Authentifizieren mit einem OAuth 2.0-Token

So kann sich ein Nutzer oder eine Anwendung bei einer AlloyDB-Datenbank authentifizieren:

  1. Falls noch nicht geschehen, autorisieren Sie die Google Cloud-Befehlszeile mit demselben Nutzer- oder Dienstkonto, mit dem Sie sich in 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

    Der Befehl Google Cloud gibt ein OAuth 2.0-Token aus.

    Für zusätzliche Sicherheit können Sie das Token auf die Verwendung mit der AlloyDB-Authentifizierung beschränken. Folgen Sie dazu dieser alternativen Anleitung:

    1. Fügen Sie den Bereich alloydb.login den Zugriffsanmeldedaten Ihrer aktuellen Umgebung mit dem Befehl gcloud auth application-default login hinzu, falls noch nicht geschehen:

      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, wobei das Token nur für die AlloyDB-Authentifizierung gilt:

      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 authentifizierte Anfragen an Google Cloud in Ihrem Namen stellen. Behandeln Sie das Token mit demselben Sicherheitsniveau wie ein Passwort. Speichern Sie das Token entweder sicher oder vermeiden Sie es, es überhaupt zu speichern. Im Beispiel für die Verwendung von psql weiter unten auf dieser Seite wird gezeigt, wie ein OAuth 2.0-Token in einem einzigen Vorgang angefordert, verwendet und verworfen werden kann.

  3. Melden Sie sich mit den folgenden Anmeldedaten 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 bei einem IAM-Nutzer anzumelden. Die Ausgabe von gcloud auth print-access-token wird der Umgebungsvariable PGPASSWORD zugewiesen, die psql später als Datenbankanmeldepasswort 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, mit dem die Authentifizierung bei der Instanz erfolgt.

    Geben Sie für ein IAM-Nutzerkonto die vollständige E-Mail-Adresse des Nutzerkontos an. Beispiel: kai@altostrat.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, abschneidet. 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 bei Aufforderung manuell einzufügen.

Automatisch authentifizieren

Wenn Sie einen IAM-basierten AlloyDB-Nutzer automatisch authentifizieren möchten, ohne dass ein OAuth 2.0-Token erforderlich ist, haben Sie zwei Möglichkeiten: AlloyDB Auth-Proxy und AlloyDB-Sprach-Connectors.

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

Auth-Proxy

Für die Verwendung des Auth-Proxys muss der AlloyDB Auth-Proxy-Client mit dem Flag --auto-iam-authn ausgeführt werden.

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 ist die programmatische Aktivierung der IAM-Authentifizierung erforderlich. Für jede Sprache gibt es eine entsprechende Option unter AlloyDB Language Connectors konfigurieren.

Probleme mit der IAM-Authentifizierung beheben

So ermitteln Sie die Ursache eines fehlgeschlagenen IAM-basierten Authentifizierungsversuchs:

  1. Rufen Sie in der Google Cloud Console die Seite „Log-Explorer“ auf:

    Zum Log-Explorer

  2. Klicken Sie unter Ressourcentyp auf AlloyDB-Instanz.

  3. Klicken Sie unter Schweregrad auf Benachrichtigung.

    Wenn Warnung keine Option ist, wurden im ausgewählten Zeitraum keine Authentifizierungsfehler protokolliert. Möglicherweise müssen Sie das Fenster mit den Steuerelementen des Log-Explorers anpassen.

  4. Sehen Sie sich unter Abfrageergebnisse die Logeinträge an und suchen Sie nach einer der folgenden Meldungen:

    Request had invalid authentication credentials.
    Das Zugriffstoken ist ungültig.
    Caller does not have required permission to use project.
    Dem IAM-Hauptkonto fehlen die erforderlichen IAM-Rollen oder Berechtigungen. In der vollständigen Fehlermeldung werden die fehlenden Rollen oder Berechtigungen angegeben.
    IAM principal does not match database user.

    Das authentifizierte IAM-Hauptkonto, das durch das Zugriffstoken angegeben wird, stimmt nicht mit dem Datenbanknutzer überein, als der Sie sich verbinden möchten.

    Führen Sie den folgenden Befehl aus, um den vom Token angegebenen Prinzipal aufzurufen:

    curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=ACCESS_TOKEN" https://www.googleapis.com/oauth2/v1/tokeninfo
    

    Ersetzen Sie ACCESS_TOKEN durch das OAuth 2.0-Zugriffstoken.

    Request had insufficient scopes.
    Das Zugriffstoken enthält weder den Bereich alloydb.login noch den Bereich cloud-platform. Mindestens einer dieser Bereiche ist erforderlich.

Nächste Schritte