Wenn Sie Datenbanknutzer und -gruppen mit Anmeldedaten von Google Cloud anstelle von Datenbankpasswörtern authentifizieren möchten, können Sie die IAM-Authentifizierung (Identity and Access Management) für Ihre AlloyDB for PostgreSQL-Instanz aktivieren und konfigurieren.
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. Sie können IAM- oder PostgreSQL-Nutzerrollen verwenden, um sich bei diesem Cluster zu authentifizieren.
- Gruppen: Sie fügen dem Cluster eine IAM-Gruppe hinzu. Alle Mitglieder (Nutzer und Dienstkonten) dieser Gruppe übernehmen die Berechtigungen zur Authentifizierung. So können Sie den Zugriff über die Gruppenmitgliedschaft verwalten, ohne jedes Mitglied einzeln dem Cluster hinzufügen zu müssen.
Die IAM-Authentifizierung ist auf AlloyDB-Instanzen standardmäßig deaktiviert.
Führen Sie die folgenden allgemeinen Schritte aus, um die IAM-Authentifizierung zu verwenden:
- Aktivieren Sie die IAM-Authentifizierung für Einzelpersonen oder Gruppen auf Ihrer Instanz.
- Weisen Sie dem Konto oder der Gruppe die erforderlichen Rollen zu.
- Fügen Sie das Konto oder die Gruppe Ihrem Cluster hinzu.
- Gewähren Sie dem Konto oder der Gruppe Datenbankberechtigungen.
IAM-Authentifizierung aktivieren und deaktivieren
Wenn Sie die IAM-Authentifizierung für eine Instanz aktivieren möchten, legen Sie die Datenbank-Flags fest.
Setzen Sie für die individuelle Authentifizierung das Flag
alloydb.iam_authenticationaufon.Legen Sie für die Gruppenauthentifizierung die Flags
alloydb.iam_authenticationundalloydb.iam_group_authenticationaufonfest.
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:
Aktualisieren Sie die IAM-Einstellungen Ihres Projekts, um dem entsprechenden IAM-Nutzer oder -Dienstkonto Zugriff auf die AlloyDB-Datenbank zu gewähren.
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 Database User (
roles/alloydb.databaseUser): Ermöglicht dem Nutzer, eine Verbindung zu Ihrer AlloyDB-Instanz herzustellen.Service Usage Consumer (
roles/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 Database User (roles/alloydb.databaseUser) aus.
IAM-Nutzer oder Dienstkonto zu einem Cluster hinzufügen
Console
Zur Clusterseite.
Klicken Sie auf den Namen des Clusters, dem Sie einen Nutzer hinzufügen möchten.
Klicken Sie auf Nutzer.
Klicken Sie auf Nutzerkonto hinzufügen.
Wählen Sie Cloud IAM aus.
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.coman. Wenn Sie beispielsweise das Dienstkontomy-service@my-project.iam.gserviceaccount.comangeben möchten, verwenden Sie den Wertmy-service@my-project.iam.So weisen Sie dem Nutzer andere Rollen als die Standardrolle
alloydbsuperuserzu:- Geben Sie unter Rollen den Namen der Rolle ein.
- Drücken Sie die Eingabetaste oder die Tabulatortaste, um die Rolle hinzuzufügen.
Wählen Sie für jede Rolle, die Sie für diesen Nutzer entfernen möchten, x aus.
Weitere Informationen zu vordefinierten PostgreSQL-Rollen finden Sie unter Vordefinierte Rollen.
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 \
--db-roles=alloydbiamuserErsetzen Sie Folgendes:
USERNAME: die 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.coman. Wenn Sie beispielsweise das Dienstkontomy-service@my-project.iam.gserviceaccount.comangeben möchten, verwenden Sie den Wertmy-service@my-project.iam.CLUSTER: die ID des Clusters, in dem dieses Datenbanknutzerkonto erstellt werden soll.REGION: die 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 Folgendes:
USERNAMEist die E-Mail-Adresse des Nutzers Sie müssen die Adresse in doppelte Anführungszeichen setzen.TABLE_NAME: der Name der Tabelle, auf die Sie dem Nutzer Zugriff gewähren möchten.
IAM-Nutzer oder Dienstkonto aus einem Cluster entfernen
Console
Zur Clusterseite.
Klicken Sie auf den Namen des Clusters, aus dem Sie den Nutzer entfernen möchten.
Klicken Sie auf Nutzer.
Klicken Sie in der Zeile des Nutzers, den Sie entfernen möchten, auf Aktionen für diesen Nutzer öffnen.
Klicken Sie auf Entfernen.
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=REGIONErsetzen Sie Folgendes:
USERNAME: die 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.coman. Wenn Sie beispielsweise das Dienstkontomy-service@my-project.iam.gserviceaccount.comangeben möchten, verwenden Sie den Wertmy-service@my-project.iam.CLUSTER: die ID des Clusters, aus dem dieser Nutzer entfernt werden soll.REGION: die ID der Region, in der sich der Cluster befindet. Beispiel:us-central1.
Zugriff auf eine IAM-Gruppe gewähren
Wenn Sie die Gruppenauthentifizierung (Vorschau) verwenden möchten, fügen Sie dem AlloyDB-Cluster eine IAM-Gruppe hinzu.
IAM-Gruppe zu einem Cluster hinzufügen
Weisen Sie dem Gruppenkonto die Rollen
roles/alloydb.databaseUserundroles/serviceusage.serviceUsageConsumerzu. Weitere Informationen finden Sie unter IAM-Konto mit der entsprechenden Rolle aktualisieren.In einem Cluster können maximal 200 IAM-Gruppen gleichzeitig vorhanden sein. Inaktive Gruppen werden auf dieses Limit angerechnet.
IAM-Gruppennamen dürfen nur 63 Zeichen lang sein.
Wenn Sie eine IAM-Gruppe mit einem Namen haben, der die Längenbeschränkung überschreitet, können Sie sie unter 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.
Verwenden Sie zum Erstellen eines Datenbanknutzers für die Gruppe den Befehl
gcloud alloydb users createmit dem Flag--type=IAM_GROUP.gcloud alloydb users create GROUP_EMAIL \ --cluster=CLUSTER \ --region=REGION \ --type=IAM_GROUPErsetzen 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 diese 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 Mitglieder (Nutzer und Dienstkonten) dieser Gruppe die Berechtigungen zur Authentifizierung. Sie müssen die Mitglieder nicht einzeln hinzufügen. Wenn sich ein Mitglied zum ersten Mal anmeldet, erstellt AlloyDB automatisch ein Konto für es.
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:
GROUP_NAME: die E-Mail-Adresse der Gruppe. Sie müssen Anführungszeichen verwenden, da der String Sonderzeichen enthält.TABLE_NAME: der Name der Tabelle.
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.
IAM-Berechtigungen widerrufen:
Rufen Sie in der Google Cloud Console die Seite IAM auf.
Suchen Sie die IAM-Gruppe, deren Zugriff Sie entfernen möchten.
Entfernen Sie die Rolle
roles/alloydb.databaseUserund alle anderen AlloyDB-bezogenen Rollen, die Zugriff auf den Cluster gewähren. Dadurch wird verhindert, dass sich Mitglieder der Gruppe authentifizieren können.
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 in der Regel die E-Mail-Adresse der IAM-Gruppe.
gcloud alloydb users delete GROUP_EMAIL_ADDRESS \ --cluster=CLUSTER_ID \ --region=REGION_IDErsetzen 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.
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.
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.
Führen Sie den folgenden gcloud CLI-Befehl für Cloud Identity aus:
gcloud identity groups delete GROUP_EMAIL_ADDRESSWenn Sie die Rolle „AlloyDB-Datenbanknutzer“ (
roles/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:
Fügen Sie die Nutzer einer IAM-Gruppe hinzu.
Weisen Sie der Gruppe die erforderlichen IAM-Rollen zu (
roles/alloydb.databaseUserundroles/serviceusage.serviceUsageConsumer).Weisen Sie der Gruppe Datenbankberechtigungen zu.
Löschen Sie den vorhandenen einzelnen Nutzer aus Ihrem Cluster. Übertragen Sie bei Bedarf die Objekteigentümerschaft, bevor Sie den Nutzer löschen.
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:
Listen Sie die Nutzer auf:
gcloud alloydb users list --cluster=CLUSTER --region=REGIONErsetzen Sie Folgendes:
CLUSTER: die ID des Clusters.REGION: Die Region, in der sich der Cluster befindet, z. B.us-central1.
Wenn der Typ
ALLOYDB_IAM_USERoderALLOYDB_IAM_SERVICE_ACCOUNTist, entfernen Sie das Konto. Es übernimmt keine Gruppenberechtigungen.Wenn Sie das Konto mit dem richtigen Gruppentyp 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 richtigen Kontotyp
ALLOYDB_IAM_GROUP_USERoderALLOYDB_IAM_GROUP_SERVICE_ACCOUNTneu erstellt.