Auf dieser Seite wird beschrieben, wie Sie Ihre AlloyDB for PostgreSQL-Instanz vorbereiten, um die Datenbankauthentifizierung mit Identity and Access Management (IAM) zu ermöglichen.
Die IAM-Authentifizierung ergänzt die Datenbankauthentifizierung über Standard-PostgreSQL-Nutzer, die von jedem AlloyDB-Cluster unterstützt werden.
Sie können sich mit einzelnen Konten oder Gruppen authentifizieren:
- Einzelkonten: Sie fügen dem Cluster jeden IAM-Nutzer oder jedes Dienstkonto 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 hinzuzufügen.
Die IAM-Authentifizierung ist für AlloyDB-Instanzen standardmäßig deaktiviert.
Führen Sie die folgenden allgemeinen Schritte aus, um die IAM-Authentifizierung zu verwenden:
- Aktivieren Sie die individuelle IAM-Authentifizierung oder die IAM-Gruppenauthentifizierung für Ihre Instanz.
- Weisen Sie dem Konto oder der Gruppe die erforderlichen Rollen zu.
- Fügen Sie Ihrem Cluster das Konto oder die Gruppe hinzu.
- Erteilen 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.
- Legen Sie für die individuelle Authentifizierung
alloydb.iam_authenticationaufonfest. - Legen Sie für die Gruppenauthentifizierung sowohl
alloydb.iam_authenticationals auchalloydb.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 den Nutzernamen als E-Mail-Adresse des IAM-Nutzers oder -Dienstkontos fest.
Wenn Sie einem IAM-Konto Zugriff auf andere Cluster in Ihrem Projekt gewähren möchten, wiederholen Sie den letzten Schritt.
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: Ermöglicht dem Nutzer den 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 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 Principal (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 den Namen der Rolle unter Rollen ein.
- Drücken Sie die Eingabetaste oder die Tabulatortaste, um die Rolle hinzuzufügen.
Wählen Sie x für alle Rollen aus, die Sie für diesen Nutzer entfernen möchten.
Weitere Informationen 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_BASEDErsetzen 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.coman. Wenn Sie beispielsweise das Dienstkontomy-service@my-project.iam.gserviceaccount.comangeben möchten, verwenden Sie den Wertmy-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 erteilen
Wenn Sie einem AlloyDB-Cluster einen IAM-Nutzer hinzufügen, hat dieser Nutzer standardmäßig keine Berechtigungen für Datenbanken, mit Ausnahme der Datenbankobjekte, auf die PUBLIC zugreifen kann.
Wenn Nutzer zusätzlichen Zugriff benötigen, gewähren Sie weitere Berechtigungen mit der PostgreSQL-Anweisung GRANT:
GRANT SELECT ON TABLE_NAME TO "USERNAME";
Ersetzen Sie die folgenden Variablen:
USERNAME: die E-Mail-Adresse des Nutzers. Die Adresse muss in doppelte Anführungszeichen eingeschlossen werden.TABLE_NAME: 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 für den Nutzer, 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: 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: 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 (Vorabversion) verwenden möchten, fügen Sie dem AlloyDB-Cluster eine IAM-Gruppe hinzu.
IAM-Gruppe einem Cluster hinzufügen
Weisen Sie dem Gruppenkonto die Rollen
alloydb.databaseUserundserviceusage.serviceUsageConsumerzu. Weitere Informationen finden Sie unter IAM-Konto mit der entsprechenden Rolle aktualisieren.Für einen Cluster können jederzeit maximal 200 IAM-Gruppen 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 in eine übergeordnete Gruppe mit einem gültigen Namen einbetten. 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 beta alloydb users create GROUP_EMAIL \ --cluster=CLUSTER \ --region=REGION \ --type=IAM_GROUP
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 erteilen Datenbankberechtigungen für Gruppen anstelle von einzelnen Nutzern.
Führen Sie die GRANT-Anweisung über die psql-Befehlszeile aus:
GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";
GROUP_NAME: Die E-Mail-Adresse der Gruppe. Da der String Sonderzeichen enthält, müssen Sie Anführungszeichen verwenden.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. Diese Aktion verhindert, dass sich Mitglieder der Gruppe authentifizieren können.
Löschen Sie den Gruppen-Nutzer aus dem AlloyDB-Cluster:
Löschen Sie den Nutzer, der die IAM-Gruppe repräsentiert, aus dem AlloyDB-Cluster mit der Google Cloud CLI. 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 „Groups Admin“ in Ihrem Cloud Identity-Konto. Gruppeninhaber können nur die Gruppen löschen, deren Inhaber sie sind. Weitere Informationen finden Sie unter Vordefinierte Administratorrollen.
Führen Sie den folgenden Cloud Identity gcloud CLI-Befehl aus:
gcloud identity groups delete GROUP_EMAIL_ADDRESSWenn Sie die Anmeldeberechtigung
alloydb.databaseUserfür eine IAM-Gruppe in Cloud Identity widerrufen, müssen Sie die Gruppe auch aus dem AlloyDB-Cluster löschen, um sicherzustellen, dass der Zugriff vollständig entfernt wird.
Vorhandene Nutzer zur IAM-Gruppenauthentifizierung migrieren
Für vorhandene einzelne IAM-Nutzer wird keine Gruppenauthentifizierung verwendet. So können Sie sie migrieren:
- Fügen Sie die Nutzer einer IAM-Gruppe hinzu.
- Fügen Sie die Gruppe Ihrem Cluster hinzu.
- Weisen Sie der Gruppe die erforderlichen Rollen zu.
- Weisen Sie der Gruppe Datenbankberechtigungen zu.
- Löschen Sie den vorhandenen einzelnen Nutzer aus Ihrem Cluster. Übertragen Sie die Inhaberschaft nur, wenn 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 vorhandenes Konto erbt keine Berechtigungen
Wenn ein Konto keine Berechtigungen von einer Gruppe übernimmt, führen Sie die folgenden Schritte aus:
Nutzer auflisten
gcloud alpha alloydb users list --cluster=CLUSTER --region=REGIONWenn der Typ
ALLOYDB_IAM_USERoderALLOYDB_IAM_SERVICE_ACCOUNTist, entfernen Sie das Konto. Es erbt keine Gruppenberechtigungen.Wenn Sie das Konto mit dem richtigen Gruppentyp neu erstellen möchten, melden Sie sich noch einmal mit dem Nutzer oder Dienstkonto in der Instanz an. Wenn Sie sich noch einmal in der Instanz anmelden, wird das Konto mit dem richtigen Kontotyp
ALLOYDB_IAM_GROUP_USERoderALLOYDB_IAM_GROUP_SERVICE_ACCOUNTneu erstellt.