IAM-Authentifizierung verwalten

Sie können die IAM-Datenbankauthentifizierung (Identity and Access Management) für neue oder vorhandene AlloyDB for PostgreSQL-Cluster konfigurieren, um Datenbankanmeldungen und ‑berechtigungen über einzelne IAM-Konten oder IAM-Gruppen zu verwalten.

Die IAM-Authentifizierung ergänzt die Datenbankauthentifizierung über PostgreSQL-Standardnutzer, die von jedem AlloyDB-Cluster unterstützt werden.

Sie können sich mit einzelnen Konten oder Gruppen authentifizieren:

  • Einzelne Konten: Sie fügen jeden IAM-Nutzer oder jedes Dienstkonto dem Cluster hinzu und verwalten die Berechtigungen pro Konto.

  • Gruppen: Sie fügen dem Cluster eine IAM-Gruppe hinzu, damit alle Mitglieder (Nutzer und Dienstkonten) Berechtigungen zur Authentifizierung bei primären Instanzen, Lesepoolinstanzen und AlloyDB Studio übernehmen, ohne dass jedes Mitglied einzeln hinzugefügt werden muss.

Die IAM-Authentifizierung ist auf AlloyDB-Instanzen standardmäßig deaktiviert.

Führen Sie die folgenden allgemeinen Schritte aus, um die IAM-Authentifizierung zu verwenden:

  1. Aktivieren Sie die IAM-Authentifizierung für Einzelpersonen oder Gruppen auf Ihrer Instanz.
  2. Weisen Sie dem Konto oder der Gruppe die erforderlichen Rollen zu.
  3. Fügen Sie das Konto oder die Gruppe Ihrem Cluster hinzu.
  4. Gewähren Sie dem Konto oder der Gruppe Datenbankberechtigungen.

IAM-Authentifizierung aktivieren und deaktivieren

Wenn Sie die IAM-Authentifizierung für eine Instanz in einem neuen oder vorhandenen Cluster aktivieren möchten, legen Sie die erforderlichen Datenbank-Flags fest:

Wenn Sie die IAM-Authentifizierung deaktivieren möchten, setzen Sie die Flags auf off.

Weitere Informationen zum Festlegen von Flags finden Sie unter Datenbank-Flags einer Instanz konfigurieren.

Zugriff auf ein einzelnes Konto gewähren

So aktivieren Sie den IAM-Zugriff für einen neuen Datenbanknutzer:

  1. Aktualisieren Sie die IAM-Einstellungen Ihres Projekts, um dem entsprechenden IAM-Nutzer oder -Dienstkonto Zugriff auf die AlloyDB-Datenbank zu gewähren.

  2. Erstellen Sie einen neuen Datenbanknutzer in Ihrem Cluster und legen Sie als Nutzernamen die E-Mail-Adresse des IAM-Nutzers oder -Dienstkontos fest.

Wiederholen Sie den letzten Schritt, um einem IAM-Konto Zugriff auf andere Cluster in Ihrem Projekt zu gewähren.

IAM-Konto mit der entsprechenden Rolle aktualisieren

Sie können IAM-Nutzern oder -Dienstkonten die Möglichkeit geben, sich bei AlloyDB-Instanzen zu authentifizieren, indem Sie ihnen die folgenden IAM-Rollen zuweisen:

  • alloydb.databaseUser: Ermöglicht dem Nutzer, eine Verbindung zu Ihrer AlloyDB-Instanz herzustellen.
  • serviceusage.serviceUsageConsumer: Gewährt dem Nutzer Zugriff auf eine API, die Berechtigungen prüft.

Folgen Sie dazu der Anleitung unter Anderen Nutzern Zugriff gewähren. Wählen Sie im Schritt, in dem Sie eine Rolle für das IAM-Hauptkonto auswählen, alloydb.databaseUser aus.

IAM-Nutzer oder Dienstkonto zu einem Cluster hinzufügen

Console

  1. Zur Clusterseite.

    Zu den Clustern

  2. Klicken Sie auf den Namen des Clusters, dem Sie einen Nutzer hinzufügen möchten.

  3. Klicken Sie auf Nutzer.

  4. Klicken Sie auf Nutzerkonto hinzufügen.

  5. Wählen Sie Cloud IAM aus.

  6. Geben Sie im Feld Hauptkonto das IAM-Hauptkonto ein.

    Geben Sie für ein IAM-Nutzerkonto die vollständige E-Mail-Adresse des Nutzerkontos an. Beispiel: dana@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 den Wert my-service@my-project.iam.

  7. So weisen Sie dem Nutzer andere Rollen als die Standardrolle alloydbsuperuser zu:

    1. Geben Sie unter Rollen den Namen der Rolle ein.
    2. Drücken Sie die Eingabetaste oder die Tabulatortaste, um die Rolle hinzuzufügen.
    3. Wählen Sie für jede Rolle, die Sie für diesen Nutzer entfernen möchten, x aus.

      Weitere Informationen finden Sie unter Vordefinierte Rollen.

  8. Klicken Sie auf Hinzufügen.

gcloud

Verwenden Sie den Befehl gcloud alloydb users create, um einen PostgreSQL-Datenbanknutzer auf Grundlage eines IAM-Nutzers oder -Dienstkontos zu erstellen.

gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASED

Ersetzen Sie die folgenden Variablen:

  • USERNAME: Kennung für den IAM-Nutzer, den Sie als neuen Datenbanknutzer hinzufügen möchten.

    Geben Sie für ein IAM-Nutzerkonto die vollständige E-Mail-Adresse des Nutzerkontos an. Beispiel: dana@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 den Wert my-service@my-project.iam.

  • CLUSTER: ID des Clusters, in dem dieses Datenbanknutzerkonto erstellt werden soll.

  • REGION: ID der Region, in der sich der Cluster befindet, z. B. us-central1.

IAM-Nutzern die entsprechenden Datenbankberechtigungen gewähren

Wenn Sie einem AlloyDB-Cluster einen IAM-Nutzer hinzufügen, hat der Nutzer standardmäßig keine Berechtigungen für Datenbanken, mit Ausnahme der Datenbankobjekte, auf die PUBLIC zugreifen kann.

Wenn Nutzer zusätzlichen Zugriff benötigen, können Sie mit der PostgreSQL-Anweisung GRANT weitere Berechtigungen gewähren:

GRANT SELECT ON TABLE_NAME TO "USERNAME";

Ersetzen Sie die folgenden Variablen:

  • USERNAME: die E-Mail-Adresse des Nutzers. Sie müssen die Adresse in doppelte Anführungszeichen setzen.

  • TABLE_NAME: Name der Tabelle, auf die Sie dem Nutzer Zugriff gewähren möchten.

IAM-Nutzer oder Dienstkonto aus einem Cluster entfernen

Console

  1. Zur Clusterseite.

    Zu den Clustern

  2. Klicken Sie auf den Namen des Clusters, aus dem Sie den Nutzer entfernen möchten.

  3. Klicken Sie auf Nutzer.

  4. Klicken Sie in der Zeile des Nutzers, den Sie entfernen möchten, auf Aktionen für diesen Nutzer öffnen.

  5. Klicken Sie auf Entfernen.

  6. Klicken Sie im Dialogfeld Nutzerkonto entfernen? auf Entfernen.

gcloud

Führen Sie den Befehl gcloud alloydb users delete aus.

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGION

Ersetzen Sie Folgendes:

  • USERNAME: Kennung des IAM-Nutzers, den Sie aus dem Cluster entfernen möchten.

    Geben Sie für ein IAM-Nutzerkonto die vollständige E-Mail-Adresse des Nutzerkontos an. Beispiel: dana@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 den Wert my-service@my-project.iam.

  • CLUSTER: ID des Clusters, aus dem dieser Nutzer entfernt werden soll.

  • REGION: ID der Region, in der sich der Cluster befindet. Beispiel: us-central1.

Zugriff auf eine IAM-Gruppe gewähren

Wenn Sie die Gruppenauthentifizierung verwenden möchten, fügen Sie dem AlloyDB-Cluster eine IAM-Gruppe hinzu.

IAM-Gruppe zu einem Cluster hinzufügen

Bevor Sie einem Cluster eine IAM-Gruppe hinzufügen, beachten Sie die folgenden Anforderungen:

  • In einem Cluster können maximal 200 IAM-Gruppen gleichzeitig vorhanden sein. Inaktive Gruppen werden auf dieses Limit angerechnet.

  • IAM-Gruppennamen dürfen maximal 63 Zeichen lang sein. Wenn Sie eine IAM-Gruppe mit einem Namen haben, der länger als 63 Zeichen ist, können Sie sie in einer übergeordneten Gruppe mit einem gültigen Namen verschachteln. Sie müssen die übergeordnete Gruppe dem Cluster hinzufügen, bevor Sie die verschachtelte Gruppe verwenden können.

So fügen Sie einem Cluster eine IAM-Gruppe hinzu:

  1. Weisen Sie dem Gruppenkonto die Rollen roles/alloydb.databaseUser und roles/serviceusage.serviceUsageConsumer zu. Weitere Informationen zum Zuweisen dieser Rollen finden Sie unter IAM-Konto mit der entsprechenden Rolle aktualisieren.

  2. Führen Sie den Befehl gcloud alloydb users create mit dem Flag --type=IAM_GROUP aus, um einen Datenbanknutzer für die Gruppe zu erstellen:

    gcloud alloydb users create GROUP_EMAIL \
    --cluster=CLUSTER \
    --region=REGION \
    --type=IAM_GROUP

    Ersetzen Sie Folgendes:

    • GROUP_EMAIL: die vollständige E-Mail-Adresse der IAM-Gruppe, z. B. my-group@example.com.

    • CLUSTER: die ID des Clusters, dem die Gruppe hinzugefügt werden soll.

    • REGION: die ID der Region, in der sich der Cluster befindet, z. B. us-central1.

Mitglieder einer Gruppe automatisch hinzufügen

Wenn Sie einem Cluster eine IAM-Gruppe hinzufügen, übernehmen alle Nutzer und Dienstkonten in dieser Gruppe die Berechtigungen zur Authentifizierung. Sie müssen die Mitglieder nicht einzeln hinzufügen. Gruppenmitglieder können sich direkt in der Google Cloud Console bei primären Instanzen, Lesepoolinstanzen und AlloyDB Studio anmelden. Das gilt auch für die erstmalige Anmeldung bei Lesepoolinstanzen, ohne dass zuerst eine Verbindung zur primären Instanz hergestellt werden muss. Wenn sich ein Mitglied zum ersten Mal anmeldet, erstellt AlloyDB automatisch ein Datenbankkonto für dieses Hauptkonto.

Wenn Sie einen AlloyDB-Cluster aus einer Cloud SQL for PostgreSQL-Sicherung wiederherstellen oder migrieren, werden die Konfigurationen einzelner Nutzer und IAM-Gruppennutzer von AlloyDB zugeordnet und beibehalten. Weitere Informationen zur Migration aus einer Cloud SQL for PostgreSQL-Sicherung finden Sie unter Von Cloud SQL for PostgreSQL zu AlloyDB migrieren.

IAM-Gruppe Datenbankberechtigungen erteilen

Sie gewähren Datenbankberechtigungen für Gruppen statt für einzelne Nutzer.

Führen Sie die GRANT-Anweisung über die psql-Befehlszeile aus:

GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";

Ersetzen Sie Folgendes:

  • TABLE_NAME: der Name der Tabelle, auf die Sie der Gruppe Zugriff gewähren möchten.

  • GROUP_NAME: die E-Mail-Adresse der Gruppe. Setzen Sie die Adresse in doppelte Anführungszeichen, da sie Sonderzeichen enthält.

IAM-Gruppe aus einem Cluster löschen

Wenn Sie eine IAM-Gruppe aus einem AlloyDB-Cluster löschen möchten, widerrufen Sie die Gruppenberechtigungen in der Google Cloud Console und löschen Sie den entsprechenden Gruppennutzer aus dem AlloyDB-Cluster.

  1. IAM-Berechtigungen widerrufen:

    1. Rufen Sie in der Google Cloud Console die Seite IAM auf.

      IAM aufrufen

    2. Suchen Sie die IAM-Gruppe, deren Zugriff Sie entfernen möchten.

    3. Entfernen Sie die Rolle roles/alloydb.databaseUser und alle anderen AlloyDB-bezogenen Rollen, die Zugriff auf den Cluster gewähren. Dadurch wird verhindert, dass sich Mitglieder der Gruppe authentifizieren können.

  2. Löschen Sie den Gruppennutzer aus dem AlloyDB-Cluster:

    Verwenden Sie die Google Cloud CLI, um den Nutzer, der die IAM-Gruppe darstellt, aus dem AlloyDB-Cluster zu löschen. Der Nutzername ist normalerweise die E-Mail-Adresse der IAM-Gruppe:

    gcloud alloydb users delete GROUP_EMAIL_ADDRESS \
    --cluster=CLUSTER_ID \
    --region=REGION_ID

    Ersetzen Sie Folgendes:

    • GROUP_EMAIL_ADDRESS: die vollständige E-Mail-Adresse der IAM-Gruppe, z. B. my-group@example.com.

    • CLUSTER_ID: die ID Ihres AlloyDB-Clusters.

    • REGION_ID: Die Region, in der sich Ihr AlloyDB-Cluster befindet, z. B. us-central1.

  3. Optional: Löschen Sie die Gruppe aus Cloud Identity:

    Sie benötigen die entsprechenden Administratorberechtigungen (z. B. Gruppenadministrator) in Ihrem Cloud Identity-Konto, um Gruppen zu löschen. Gruppeninhaber können in der Regel nur Gruppen löschen, deren Inhaber sie sind.

    Es kann einige Zeit dauern, bis Änderungen an IAM-Berechtigungen und Gruppenmitgliedschaften wirksam werden, möglicherweise 15 Minuten oder länger.

    1. Sie benötigen entsprechende Administratorberechtigungen wie „Gruppenadministrator“ in Ihrem Cloud Identity-Konto. Gruppeninhaber können nur ihre eigenen Gruppen löschen. Weitere Informationen finden Sie unter Vordefinierte Administratorrollen.

    2. Führen Sie den folgenden gcloud CLI-Befehl für Cloud Identity aus:

      gcloud identity groups delete GROUP_EMAIL_ADDRESS
    3. Wenn Sie die Anmeldeberechtigung alloydb.databaseUser für eine IAM-Gruppe in Cloud Identity widerrufen, müssen Sie die Gruppe auch aus dem AlloyDB-Cluster löschen, damit der Zugriff vollständig entfernt wird.

Vorhandene Nutzer zur IAM-Gruppenauthentifizierung migrieren

Vorhandene einzelne IAM-Nutzer verwenden keine Gruppenauthentifizierung. So migrieren Sie sie:

  1. Fügen Sie die Nutzer einer IAM-Gruppe hinzu.
  2. Fügen Sie die Gruppe Ihrem Cluster hinzu.
  3. Weisen Sie der Gruppe die erforderlichen Rollen zu.
  4. Weisen Sie der Gruppe Datenbankberechtigungen zu.
  5. Löschen Sie den vorhandenen einzelnen Nutzer aus Ihrem Cluster. Achten Sie darauf, die Inhaberschaft zu übertragen, falls dies beabsichtigt ist.

Wenn sich der Nutzer wieder anmeldet, erstellt AlloyDB das Konto als Gruppennutzer neu.

Fehlerbehebung bei der Gruppenauthentifizierung

Verwenden Sie die folgenden Informationen, um Probleme mit der Gruppenauthentifizierung zu beheben.

Ein bestehendes Konto übernimmt keine Berechtigungen

Wenn ein Konto keine Berechtigungen von einer Gruppe übernimmt, gehen Sie so vor:

  1. Listen Sie die Nutzer im Cluster auf:

    gcloud alloydb users list \
        --cluster=CLUSTER \
        --region=REGION

    Ersetzen Sie Folgendes:

    • CLUSTER: die ID Ihres AlloyDB-Clusters.

    • REGION: Die ID der Region, in der sich Ihr AlloyDB-Cluster befindet, z. B. us-central1.

  2. Wenn das Konto den Typ ALLOYDB_IAM_USER hat, entfernen Sie das Konto aus dem Cluster. Konten vom Typ ALLOYDB_IAM_USER übernehmen keine Gruppenberechtigungen.

  3. Wenn Sie das Konto mit dem Gruppennutzertyp neu erstellen möchten, melden Sie sich noch einmal mit dem Nutzer- oder Dienstkonto bei der Instanz an. Wenn Sie sich wieder in der Instanz anmelden, wird das Konto mit dem Kontotyp ALLOYDB_IAM_GROUP_USER oder ALLOYDB_IAM_GROUP_SERVICE_ACCOUNT neu erstellt.

Nächste Schritte