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:
- Einzelne Konten: Sie fügen dem Cluster jeden IAM-Nutzer oder jedes IAM-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 verwalten, indem Sie 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 IAM-Authentifizierung für einzelne Nutzer oder Gruppen in Ihrer 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 Authentifizierung einzelner Nutzer
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, legen Sie die Flags auf off fest.
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 ‑Dienst kontos 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: Gewährt dem Nutzer Zugriff auf eine API, mit der Berechtigungen geprüft werden.
Folgen Sie dazu der Anleitung unter
Zugriff für andere Nutzer gewähren. Wählen Sie im Schritt, in dem Sie eine Rolle auswählen, die dem IAM-Hauptkonto zugewiesen werden soll, 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 Hauptkonto das IAM-Hauptkonto ein.
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.coman. Wenn Sie beispielsweise das Dienstkontomy-service@my-project.iam.gserviceaccount.comangeben möchten, verwenden Sie den Wertmy-service@my-project.iam.Wenn Sie dem Nutzer andere Rollen als die Standardrolle
alloydbsuperuserzuweisen möchten, führen Sie die folgenden Schritte aus:- 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
gcloud alloydb users create-Befehl, 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:
kai@altostrat.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 standardmäßig keine Berechtigungen für Datenbanken, mit Ausnahme der Datenbankobjekte, auf die PUBLIC zugreifen kann.
Wenn Nutzer zusätzlichen Zugriff benötigen, erteilen Sie mit der
GRANT PostgreSQL-Anweisung weitere Berechtigungen:
GRANT SELECT ON TABLE_NAME TO "USERNAME";
Ersetzen Sie die folgenden Variablen:
USERNAME: E‑Mail-Adresse des Nutzers. Die Adresse muss in doppelten Anführungszeichen stehen.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 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
Verwenden Sie
den gcloud alloydb users delete Befehl.
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:
kai@altostrat.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 Sie diesen Nutzer entfernen möchten.REGION: 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 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.In einem Cluster können 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 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 den Befehl
gcloud alloydb users createmit dem Flag--type=IAM_GROUP, um einen Datenbanknutzer für die Gruppe zu erstellen.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. Nachdem sich ein Mitglied zum ersten Mal angemeldet hat, erstellt AlloyDB automatisch ein Konto für es.
IAM-Gruppe Datenbankberechtigungen erteilen
Sie erteilen Gruppen Datenbankberechtigungen anstelle einzelner Nutzer.
Führen Sie die Anweisung GRANT über die Befehlszeile psql aus:
GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";
GROUP_NAME: Die E‑Mail-Adresse der Gruppe. Da die 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. Dadurch wird verhindert, dass sich Mitglieder der Gruppe authentifizieren.
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 entsprechende 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 eine Weile dauern, bis Änderungen an IAM-Berechtigungen und Gruppenmitgliedschaften übernommen werden, möglicherweise 15 Minuten oder länger.
Achten Sie darauf, dass Sie die entsprechenden Administratorberechtigungen haben, z. B. Gruppenadministrator 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-Befehl der gcloud CLI 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
Vorhandene einzelne IAM-Nutzer verwenden keine Gruppenauthentifizierung. Sie können sie mit den folgenden Schritten migrieren:
- Fügen Sie die Nutzer einer IAM-Gruppe hinzu.
- Fügen Sie Ihrem Cluster die Gruppe hinzu.
- Weisen Sie der Gruppe die erforderlichen Rollen zu.
- Erteilen Sie der Gruppe Datenbankberechtigungen.
- Löschen Sie den vorhandenen einzelnen Nutzer aus Ihrem Cluster. Achten Sie darauf, dass Sie die Eigentümerschaft übertragen, falls dies beabsichtigt ist.
Wenn sich der Nutzer wieder anmeldet, erstellt AlloyDB das Konto als Gruppennutzer neu.
Probleme mit der Gruppenauthentifizierung beheben
Verwenden Sie die folgenden Informationen, um Probleme mit der Gruppenauthentifizierung zu beheben.
Ein vorhandenes Konto übernimmt keine Berechtigungen
Wenn ein Konto keine Berechtigungen von einer Gruppe übernimmt, führen Sie die folgenden Schritte aus:
Listen Sie die Nutzer auf.
gcloud alpha alloydb users list --cluster=CLUSTER --region=REGIONWenn 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 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.