Auf dieser Seite wird beschrieben, wie Sie Nutzer, Dienstkonten und Gruppen zu einer Cloud SQL-Instanz hinzufügen und verwalten, die die IAM-Datenbankauthentifizierung verwendet.
Weitere Informationen zur Einbindung von IAM finden Sie unter IAM-Authentifizierung.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Sie müssen die Rolle "Cloud SQL-Administrator" in Ihrem Nutzerkonto haben.
- Aktivieren Sie die IAM-Datenbankauthentifizierung für Ihre Cloud SQL-Instanz.
- Weisen Sie IAM-Hauptkonten wie IAM-Nutzern, Dienstkonten oder Gruppen die erforderliche
cloudsql.instanceUser
IAM-Rolle zu, um sich in der Cloud SQL-Instanz anzumelden. - Wenn Sie der Cloud SQL-Instanz einen einzelnen Nutzer oder ein einzelnes Dienstkonto hinzufügen, müssen Sie jedem Nutzer und Dienstkonto die IAM-Rolle einzeln zuweisen.
- Wenn Sie eine Gruppe hinzufügen, müssen Sie der Gruppe die IAM-Rolle zuweisen, da die Mitglieder der Gruppe automatisch die mit der IAM-Rolle verknüpften IAM-Berechtigungen übernehmen. Weitere Informationen zum Erstellen von Gruppen in Cloud Identity finden Sie unter Google-Gruppen in der Google Cloud Konsole erstellen und verwalten.
- Sie können die Rolle für ein Projekt mit Cloud SQL-Instanzen über die IAM-Seite der Google Cloud Console, die gcloud CLI, Terraform oder die Cloud SQL Admin API zuweisen. Weitere Informationen finden Sie unter IAM-Richtlinienbindung zu einem Nutzer, Dienstkonto oder einer Gruppe hinzufügen.
- Wenn Sie ein Dienstkonto verwenden, achten Sie darauf, dass Sie für jeden Dienst, der Zugriff auf Datenbanken im Projekt benötigt, ein Dienstkonto hinzugefügt haben.
-
Rufen Sie in der Google Cloud Console die Seite IAM auf.
- Klicken Sie auf Hinzufügen.
- Geben Sie unter Neue Mitglieder eine E-Mail-Adresse ein. Sie können einzelne Nutzer, Dienstkonten oder Gruppen als Mitglieder hinzufügen. Jedes Projekt muss jedoch mindestens ein Hauptkonto als Mitglied enthalten.
- Wechseln Sie unter Rolle zu Cloud SQL und wählen Sie Cloud SQL-Instanznutzer aus.
- Optional: Wenn Sie eine Verbindung über den Cloud SQL Auth-Proxy oder Cloud SQL Language Connectors herstellen möchten, wählen Sie auch Cloud SQL-Client aus.
- Klicken Sie auf Speichern.
- PROJECT_ID: durch die ID des Projekts, für das der Nutzer autorisiert sein soll.
- USERNAME ist die E-Mail-Adresse des Nutzers
- PROJECT_ID: durch die ID des Projekts, für das der Nutzer autorisiert sein soll.
- SERVICE_ACCT: die E-Mail-Adresse des Dienstkontos.
- PROJECT_ID: die ID des Projekts, für das Mitglieder der Gruppe autorisiert sein sollen.
- GROUP_EMAIL_ADDRESS: Die E-Mail-Adresse der Gruppe. Beispiel:
example-group@example.com
. - Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
- Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument
deletion_protection
auffalse
.deletion_protection = "false"
- Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
-
Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und
yes
an der Eingabeaufforderung eingeben:terraform destroy
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
- Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument
deletion_protection
auffalse
.deletion_protection = "false"
- Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
-
Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und
yes
an der Eingabeaufforderung eingeben:terraform destroy
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
- Klicken Sie auf Nutzerkonto hinzufügen. Der Tab Nutzerkonto zur Instanz instance_name hinzufügen wird geöffnet.
- Klicken Sie auf das Optionsfeld Cloud IAM.
- Geben Sie in das Feld Hauptkonto die E-Mail-Adresse des Nutzers oder Dienstkontos ein, das Sie hinzufügen möchten.
- Klicken Sie auf Hinzufügen. Der Nutzer oder das Dienstkonto ist jetzt in der Liste der Nutzerkonten enthalten.
Wenn dem Nutzer nach der Erstellung des Nutzerkontos nicht die IAM-Rolle
cloudsql.instanceUser
zugewiesen ist, wird neben dem Nutzernamen das Symbolangezeigt.
Um dem Nutzer Anmeldeberechtigungen zu erteilen, klicken Sie auf das Symbol und wählen Sie dann IAM-Rolle hinzufügen aus. Wenn das Symbol nicht mehr angezeigt wird, ist dem Nutzerkonto die IAM-Rolle zugewiesen, die die Anmeldeberechtigung gewährt.
- USERNAME ist die E-Mail-Adresse des Nutzers
- INSTANCE_NAME: durch den Namen der Instanz, auf die der Nutzer Zugriff erhalten soll.
- SERVICE_ACCT: die E-Mail-Adresse des Dienstkontos.
- INSTANCE_NAME: durch den Namen der Instanz, auf die das Dienstkonto Zugriff erhalten soll.
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
- Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument
deletion_protection
auffalse
.deletion_protection = "false"
- Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
-
Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und
yes
an der Eingabeaufforderung eingeben:terraform destroy
- PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID für die Instanz, zu der Sie den Nutzer hinzufügen
- USERNAME: die E-Mail-Adresse des Nutzers
- SERVICE_ACCT: Die E-Mail-Adresse des Dienstkontos.
- PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID für die Instanz, zu der Sie das Dienstkonto hinzufügen
- PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID für die Instanz, zu der Sie den Nutzer hinzufügen
- USERNAME: die E-Mail-Adresse des Nutzers
- SERVICE_ACCT: Die E-Mail-Adresse des Dienstkontos.
- PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID für die Instanz, zu der Sie das Dienstkonto hinzufügen
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
- Klicken Sie auf Nutzerkonto hinzufügen. Der Tab Nutzerkonto zur Instanz instance_name hinzufügen wird geöffnet.
- Klicken Sie auf das Optionsfeld Cloud IAM.
- Geben Sie in das Feld Hauptkonto die E-Mail-Adresse der Gruppe ein, die Sie hinzufügen möchten.
- Klicken Sie auf Hinzufügen. Die Gruppe ist jetzt in der Nutzerliste enthalten.
Wenn der Gruppe nach der Erstellung des Nutzerkontos nicht die IAM-Rolle
cloudsql.instanceUser
zugewiesen ist, wird neben der Gruppe das Symbolangezeigt.
Um den Gruppenmitgliedern Anmeldeberechtigungen zu erteilen, klicken Sie auf das Symbol und wählen Sie dann IAM-Rolle hinzufügen aus. Wenn das Symbol nicht mehr angezeigt wird, ist allen Mitgliedern der Gruppe die Rolle zugewiesen, die die Anmeldeberechtigung gewährt.
- GROUP_EMAIL_ADDRESS: Die E-Mail-Adresse der Cloud Identity-Gruppe, die Sie der Instanz hinzufügen möchten. Beispiel: example-group@example.com.
- INSTANCE_NAME: Der Name der Instanz, der Sie die Gruppe hinzufügen möchten.
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
- Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument
deletion_protection
auffalse
.deletion_protection = "false"
- Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
-
Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und
yes
an der Eingabeaufforderung eingeben:terraform destroy
- PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID für die Instanz, zu der Sie die Cloud Identity-Gruppe hinzufügen
- GROUP_EMAIL: Die E-Mail-Adresse der Cloud Identity-Gruppe
- PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID für die Instanz, zu der Sie die Cloud Identity-Gruppe hinzufügen
- GROUP_EMAIL: Die E-Mail-Adresse der Cloud Identity-Gruppe
Fügen Sie diese Nutzer einer Gruppe hinzu.
Fügen Sie die Gruppe Ihrer Instanz hinzu.
Weisen Sie der Gruppe genügend IAM-Berechtigungen zu, damit Gruppenmitglieder eine Verbindung zu Ihren Instanzen herstellen können. Es kann einige Zeit dauern, bis diese Änderungen übernommen werden. Weitere Informationen zu den Verteilungszeiten finden Sie unter Zugriffsänderungsverteilung.
Weisen Sie der Gruppe die Datenbankberechtigungen zu, die den IAM-Nutzern zugewiesen sind, die Sie migrieren.
Nachdem die Gruppenmitgliedschaft geändert und die IAM-Berechtigungen angewendet wurden, löschen Sie den vorhandenen IAM-Nutzer aus Ihrer Instanz. Wenn sich der IAM-Nutzer das nächste Mal erfolgreich anmeldet, wird er als IAM-Gruppennutzer neu erstellt, der die IAM-Gruppenauthentifizierung verwenden kann.
- USERNAME ist die E-Mail-Adresse des Nutzers Da die E-Mail-Adresse Sonderzeichen (
@
und.
) enthält, muss sie in Anführungszeichen gesetzt werden. - TABLE_NAME: der Name der Tabelle, auf die Sie dem Nutzer Zugriff gewähren möchten.
- GROUP_NAME: Die E-Mail-Adresse der Cloud Identity-Gruppe, einschließlich
@
und des Domainnamens. Wenn die E-Mail-Adresse der IAM-Gruppe beispielsweiseexample-group@example.com
lautet, ist der Gruppennameexample-group@example.com
. Da der String Sonderzeichen (@
und.
) enthält, muss der Gruppenname in Anführungszeichen gesetzt werden. - TABLE_NAME: der Name der Tabelle, auf die Sie dem Nutzer Zugriff gewähren möchten.
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus. Auf der Seite wird eine Liste der IAM-Nutzer, Dienstkonten und Cloud Identity-Gruppen angezeigt, die Ihrer Instanz hinzugefügt wurden.
- Optional: Wenn Sie eine Liste der IAM-Nutzer oder Dienstkonten aufrufen möchten, die sich bereits in der Instanz angemeldet haben, klicken Sie auf Authentifizierte IAM-Gruppenmitglieder.
- Nutzerkonten, die Mitglieder einer Gruppe sind, haben den Typ
CLOUD_IAM_GROUP_USER
. - Dienstkonten, die Mitglieder einer Gruppe sind, haben den Typ
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Nutzerkonten, die individuelle IAM-Datenbankauthentifizierungsnutzerkonten sind, haben den Typ
CLOUD_IAM_USER
. - Dienstkonten, die einzelne IAM-Datenbankauthentifizierungsdienstkonten sind, haben den Typ
CLOUD_IAM_SERVICE_ACCOUNT
. - PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID
- Nutzerkonten, die Mitglieder einer Gruppe sind, haben den Typ
CLOUD_IAM_GROUP_USER
. - Dienstkonten, die Mitglieder einer Gruppe sind, haben den Typ
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Nutzerkonten, die individuelle IAM-Datenbankauthentifizierungsnutzerkonten sind, haben den Typ
CLOUD_IAM_USER
. - Dienstkonten, die einzelne IAM-Datenbankauthentifizierungsdienstkonten sind, haben den Typ
CLOUD_IAM_SERVICE_ACCOUNT
. - project-id: Ihre Projekt-ID
- instance-id: die gewünschte Instanz-ID
- Nutzerkonten, die Mitglieder einer Gruppe sind, haben den Typ
CLOUD_IAM_GROUP_USER
. - Dienstkonten, die Mitglieder einer Gruppe sind, haben den Typ
CLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Nutzerkonten, die individuelle IAM-Datenbankauthentifizierungsnutzerkonten sind, haben den Typ
CLOUD_IAM_USER
. - Dienstkonten, die einzelne IAM-Datenbankauthentifizierungsdienstkonten sind, haben den Typ
CLOUD_IAM_SERVICE_ACCOUNT
. -
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
- Klicken Sie auf für den Nutzer, den Sie entfernen möchten.
- Klicken Sie auf Entfernen. Dadurch wird nur der Zugriff auf diese Instanz widerrufen.
- USERNAME: die E-Mail-Adresse.
- INSTANCE_NAME: Der Name der Instanz, aus der Sie den Nutzer entfernen möchten.
- SERVICE_ACCT: die E-Mail-Adresse des Dienstkontos.
- INSTANCE_NAME: Der Name der Instanz, aus der Sie den Nutzer entfernen möchten.
- PROJECT_ID: Ihre Projekt-ID
- INSTANCE_ID: die gewünschte Instanz-ID
- USERNAME: die E-Mail-Adresse des Nutzers oder Dienstkontos
- PROJECT_ID: Ihre Projekt-ID
- INSTANCE_ID: die gewünschte Instanz-ID
- USERNAME: die E-Mail-Adresse des Nutzers oder Dienstkontos
- Automatisches Entfernen
- Manuelles Entfernen
- Die Nutzer und Dienstkonten, die zur IAM-Gruppe gehören, können sich weiterhin anmelden, bis die IAM-Berechtigung
cloudsql.instances.login
aus der Gruppe entfernt wurde. - Wenn durch das Löschen einer Gruppe die IAM-Gruppennutzer oder Dienstkonten zu keiner anderen Gruppe in der Instanz gehören, werden die IAM-Gruppennutzer oder Dienstkonten von Cloud SQL aus der Instanz entfernt.
- Wenn ein IAM-Gruppennutzer jedoch Inhaber eines Datenbankobjekts in der Instanz ist, müssen Sie die Inhaberschaft des Objekts neu zuweisen, bevor Sie den Nutzer manuell löschen können.
- Alle IAM-Gruppennutzer und Dienstkonten können sich nicht in der Instanz anmelden.
- Cloud SQL entfernt außerdem automatisch alle IAM-Gruppennutzer und Dienstkonten aus der Instanz.
- Wenn ein IAM-Gruppennutzer jedoch Inhaber eines Datenbankobjekts in der Instanz ist, müssen Sie die Inhaberschaft des Objekts neu zuweisen, bevor Sie den Nutzer manuell löschen können.
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
- Klicken Sie bei der Gruppe, die Sie entfernen möchten, auf .
- Klicken Sie auf Entfernen. Dadurch wird nur der Zugriff auf diese Instanz widerrufen.
- GROUP_NAME: Der erste Teil der E-Mail-Adresse der Cloud Identity-Gruppe. Wenn Sie beispielsweise die E-Mail-Adresse
example-group@example.com
verwenden, lautet der Name der Cloud Identity-Gruppeexample-group
. - INSTANCE_NAME: Der Name der Cloud SQL-Instanz mit der Cloud Identity-Gruppe, die Sie löschen möchten.
Rufen Sie in der Google Cloud Console die Seite IAM auf.
Prüfen Sie, ob das Konto Mitglied der Gruppe ist, die der Cloud SQL-Instanz hinzugefügt wurde.
Listen Sie die Nutzer und Dienstkonten in der Instanz auf.
gcloud sql users list --instance=INSTANCE_NAME
Prüfen Sie in der Ausgabe, ob das Nutzer- oder Dienstkonto als
CLOUD_IAM_USER
oderCLOUD_IAM_SERVICE_ACCOUNT
aufgeführt ist.Wenn der Nutzer oder das Dienstkonto als
CLOUD_IAM_USER
oderCLOUD_IAM_SERVICE_ACCOUNT
aufgeführt ist, entfernen Sie das Konto aus der Instanz. Das Konto, das Sie entfernen, ist ein individuelles IAM-Konto, das keine Datenbankberechtigungen der Gruppe erbt.Melden Sie sich mit dem Nutzer- oder Dienstkonto noch einmal in der Instanz an.
Wenn Sie sich noch einmal in der Instanz anmelden, wird das Konto mit dem richtigen Kontotyp
CLOUD_IAM_GROUP_USER
oderCLOUD_IAM_GROUP_SERVICE_ACCOUNT
neu erstellt.- IAM-Datenbankauthentifizierung
- Bei einer Cloud SQL-Datenbank anmelden
- Instanzen für die IAM-Datenbankauthentifizierung konfigurieren
Weitere Informationen zum Erstellen von Dienstkonten finden Sie unter Dienstkonten erstellen.
IAM-Richtlinienbindung zu einem Nutzer, Dienstkonto oder einer Gruppe hinzufügen
Dieses Verfahren fügt der IAM-Richtlinie eines bestimmten Projekts eine Richtlinienbindung hinzu, wenn eine Projekt-ID und die Bindung vorgegeben sind. Der Bindungsbefehl besteht aus einem Mitglied, einer Rolle und einer optionalen Bedingung.
Der Datenbank-Nutzername muss die E-Mail-Adresse des IAM-Nutzers sein, zum Beispiel example-user@example.com
. Da die E-Mail-Adresse Sonderzeichen (@
und .
) enthält, muss sie in Anführungszeichen gesetzt werden und darf nur Kleinbuchstaben enthalten.
Console
gcloud
Führen Sie gcloud projects add-iam-policy-binding
mit dem Flag --role=roles/cloudsql.instanceUser
aus.
Richtlinienbindung zu einem Nutzerkonto hinzufügen
Ersetzen Sie Folgendes:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USERNAME \ --role=roles/cloudsql.instanceUser
Wenn Sie eine Verbindung über den Cloud SQL Auth-Proxy oder Cloud SQL Language Connectors herstellen möchten, führen Sie gcloud projects add-iam-policy-binding
noch einmal mit dem Flag --role=roles/cloudsql.client
Richtlinienbindung zu einem Dienstkonto hinzufügen
Ersetzen Sie Folgendes:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT \ --role=roles/cloudsql.instanceUser
Wenn Sie eine Verbindung über den Cloud SQL Auth-Proxy oder Cloud SQL Language Connectors herstellen möchten, führen Sie gcloud projects add-iam-policy-binding
noch einmal mit dem Flag --role=roles/cloudsql.client
Richtlinienbindung zu einer Cloud Identity-Gruppe hinzufügen
Ersetzen Sie Folgendes:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=group:GROUP_EMAIL_ADDRESS \ --role=roles/cloudsql.instanceUser
Allen Mitgliedern der angegebenen Gruppe wird die Rolle „Cloud SQL-Instanznutzer“ zugewiesen und sie können sich bei Instanzen in diesem Projekt anmelden.
Wenn Sie eine Verbindung über den Cloud SQL Auth-Proxy oder Cloud SQL Language Connectors herstellen möchten, führen Sie gcloud projects add-iam-policy-binding
noch einmal mit dem Flag --role=roles/cloudsql.client
Terraform
Verwenden Sie eine Terraform-Ressource, um den IAM-Nutzer- und -Dienstkonten die erforderliche Richtlinienbindung hinzuzufügen.
Änderungen anwenden
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
Änderungen anwenden
Änderungen löschen
So löschen Sie das Projekt:
Terraform
Verwenden Sie eine Terraform-Ressource, um den IAM-Nutzer- und -Dienstkonten die erforderliche Richtlinienbindung hinzuzufügen.
Änderungen anwenden
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
Änderungen anwenden
Änderungen löschen
So löschen Sie das Projekt:
REST
Weisen Sie beiden Kontotypen die Rollen cloudsql.instanceUser
und cloudsql.client
zu, indem Sie die vom Befehl get-iam-policy
zurückgegebene JSON- oder YAML-Bindungsrichtlinie bearbeiten. Beachten Sie, dass diese Richtlinienänderung erst wirksam wird, wenn Sie die aktualisierte Richtlinie festgelegt haben.
{ "role": "roles/cloudsql.instanceUser", "members": [ "user:example-user@example.com" "serviceAccount:service1@sql.iam.gserviceaccount.com" "group:example-group@example.com" ] } { "role": "roles/cloudsql.client", "members": [ "user:example-user@example.com" "serviceAccount:service1@sql.iam.gserviceaccount.com" ] }
Einer Cloud SQL-Instanz einen einzelnen IAM-Nutzer oder ein einzelnes Dienstkonto hinzufügen
Sie müssen für jeden einzelnen IAM-Nutzer oder jedes Dienstkonto, das Sie der Cloud SQL-Instanz hinzufügen, ein neues Nutzerkonto erstellen, um auf Datenbanken zuzugreifen. Wenn Sie eine IAM-Gruppe hinzufügen, müssen Sie kein Nutzerkonto für jedes Mitglied dieser Gruppe erstellen.
Der Datenbank-Nutzername muss die E-Mail-Adresse des IAM-Nutzers sein und darf nur Kleinbuchstaben enthalten.
Beispiel: example-user@example.com
.
Bei der Verwendung von REST-Befehlen muss der Nutzername Anführungszeichen verwenden, da er Sonderzeichen (@
und .
) enthält. Dienstkonten haben das Format service-account-name@project-id.iam.gserviceaccount.com
.
Wenn Sie einen einzelnen IAM-Nutzer oder ein Dienstkonto hinzufügen möchten, fügen Sie ein neues Nutzerkonto hinzu und wählen Sie IAM als Authentifizierungsmethode aus:
Console
gcloud
Nutzerkonto erstellen
Verwenden Sie die E-Mail-Adresse, zum Beispiel example-user@example.com
, um den Nutzer zu identifizieren.
Ersetzen Sie Folgendes:
gcloud sql users create USERNAME \ --instance=INSTANCE_NAME \ --type=cloud_iam_user
Dienstkonto erstellen
Ersetzen Sie Folgendes:
gcloud sql users create SERVICE_ACCT \ --instance=INSTANCE_NAME \ --type=cloud_iam_service_account
Terraform
Verwenden Sie eine Terraform-Ressource, um IAM-Nutzer- und -Dienstkonten in einer Instanz mit aktivierter IAM-Datenbankauthentifizierung hinzuzufügen.
Änderungen anwenden
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
Änderungen anwenden
Änderungen löschen
So löschen Sie das Projekt:
REST Version 1
Nutzerkonto erstellen
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
JSON-Text anfordern:
{ "name": "USERNAME", "type": "CLOUD_IAM_USER" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Dienstkonto erstellen
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
JSON-Text anfordern:
{ "name": "SERVICE_ACCT", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-11-20T04:08:00.211Z", "startTime": "2020-11-20T04:08:00.240Z", "endTime": "2020-11-20T04:08:02.003Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Nutzerkonto erstellen
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
JSON-Text anfordern:
{ "name": "USERNAME", "type": "CLOUD_IAM_USER" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Dienstkonto erstellen
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
JSON-Text anfordern:
{ "name": "SERVICE_ACCT", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-11-20T04:08:00.211Z", "startTime": "2020-11-20T04:08:00.240Z", "endTime": "2020-11-20T04:08:02.003Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
IAM-Gruppe einer Cloud SQL-Instanz hinzufügen
Wenn Sie die IAM-Gruppenauthentifizierung verwenden und einer Cloud SQL-Instanz eine IAM-Gruppe hinzufügen möchten, verwenden Sie eines der Verfahren in diesem Abschnitt. Nachdem Sie die IAM-Gruppe hinzugefügt haben, müssen Sie die einzelnen Gruppenmitglieder nicht der Instanz hinzufügen. Weitere Informationen finden Sie unter Mitglieder einer Gruppe automatisch einer Cloud SQL-Instanz hinzufügen.
Für IAM-Gruppennamen gelten dieselben Längenbeschränkungen wie für PostgreSQL-Kennungen. Sie dürfen nur 63 Zeichen lang sein.
Wenn Sie eine IAM-Gruppe mit einem Namen haben, der die Längenbeschränkung für Nutzernamen einer Datenbank-Engine überschreitet, können Sie sie trotzdem für die IAM-Gruppenauthentifizierung verwenden, indem Sie sie in eine übergeordnete IAM-Gruppe einbetten, deren Name die Längenbeschränkung einhält. Die übergeordnete IAM-Gruppe muss der Instanz hinzugefügt werden, bevor die verschachtelte Gruppe verwendet werden kann.
Console
gcloud
Ersetzen Sie Folgendes:
Führen Sie dazu diesen Befehl aus:
gcloud sql users create GROUP_EMAIL_ADDRESS \ --instance=INSTANCE_NAME \ --type=cloud_iam_group
Terraform
Verwenden Sie eine Terraform-Ressource, um IAM-Nutzer- und -Dienstkonten in einer Instanz mit aktivierter IAM-Datenbankauthentifizierung hinzuzufügen.
Änderungen anwenden
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
Änderungen anwenden
Änderungen löschen
So löschen Sie das Projekt:
REST Version 1
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
JSON-Text anfordern:
{ "name": "GROUP_EMAIL", "type": "CLOUD_IAM_GROUP" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "example-group@example.com", "insertTime": "2023-12-07T22:44:16.656Z", "startTime": "2023-12-07T22:44:16.686Z", "endTime": "2023-12-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
JSON-Text anfordern:
{ "name": "GROUP_EMAIL", "type": "CLOUD_IAM_GROUP" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "example-group@example.com", "insertTime": "2023-12-07T22:44:16.656Z", "startTime": "2023-12-07T22:44:16.686Z", "endTime": "2023-12-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Mitglieder einer Gruppe automatisch einer Cloud SQL-Instanz hinzufügen
Wenn Sie einer Cloud SQL-Instanz eine IAM-Gruppe hinzufügen, übernehmen alle Mitglieder (Nutzer und Dienstkonten) dieser Gruppe die IAM-Berechtigungen zur Authentifizierung bei der Instanz. Sie müssen das Gruppenmitglied nicht einzeln der Cloud SQL-Instanz hinzufügen. Nachdem sich ein Gruppenmitglied zum ersten Mal in der primären Instanz angemeldet und authentifiziert hat, erstellt Cloud SQL ein Gruppenkonto für Nutzer oder ein Gruppenkonto für Dienstkonten für dieses Gruppenmitglied. Sie können das Gruppenmitglied nach der ersten erfolgreichen Anmeldung in der Instanz sehen.
Bei einem Failover können sich IAM-Gruppennutzer weiterhin anmelden und erstellt werden, sofern die Failover-Instanz die entsprechenden Gruppen hat.
Weitere Informationen zur Anmeldung finden Sie unter Mit IAM-Datenbankauthentifizierung anmelden.
Vorhandene IAM-Nutzer zur Verwendung der IAM-Gruppenauthentifizierung migrieren
Bestehende IAM-Nutzer vom Typ CLOUD_IAM_USER
oder CLOUD_IAM_SERVICE_ACCOUNT
verwenden keine IAM-Gruppenauthentifizierung.
Sie können diese Nutzer migrieren, damit sie die IAM-Gruppenauthentifizierung verwenden.
Gruppenmitglieder in einer Cloud SQL-Instanz verwalten
Wenn Sie einer Cloud SQL-Instanz eine IAM-Gruppe hinzufügen, erben alle Mitglieder (Nutzer oder Dienstkonten) dieser Gruppe die IAM-Berechtigung zur Authentifizierung bei der Instanz. Sie können den Zugriff auf eine Instanz steuern, indem Sie die Gruppe in Cloud Identity verwalten. Wenn Sie beispielsweise einem neuen Nutzer Zugriff auf eine Instanz gewähren möchten, fügen Sie den Nutzer als Gruppenmitglied in Cloud Identity hinzu. Sie müssen Gruppenmitglieder nicht separat auf Cloud SQL-Instanzebene entfernen oder hinzufügen, da Änderungen an der Gruppenmitgliedschaft automatisch an die Cloud SQL-Instanz weitergegeben werden. Änderungen an der Gruppenmitgliedschaft, z. B. das Hinzufügen oder Entfernen eines Mitglieds, dauern etwa 15 Minuten. Die 15-minütige Weiterleitungsverzögerung von Cloud SQL erfolgt parallel zur Zeit, die für die Weiterleitung von IAM-Änderungen erforderlich ist.
Das Erteilen oder Entziehen von Datenbankberechtigungen für eine IAM-Gruppe in PostgreSQL wird sofort wirksam. Wenn Sie beispielsweise den Zugriff auf eine Tabelle widerrufen, verlieren Mitglieder dieser IAM-Gruppe sofort den Zugriff auf diese Tabelle.
Ein Nutzer oder Dienstkonto kann Mitglied mehrerer IAM-Gruppen sein. Wenn ein Nutzer oder ein Dienstkonto in einer Instanz mehreren IAM-Gruppen angehört, hat er alle IAM-Berechtigungen und Datenbankberechtigungen, die in den einzelnen IAM-Gruppen kombiniert sind.
Wenn Sie der IAM-Gruppe in Cloud Identity ein neues Mitglied (Nutzer oder Dienstkonto) hinzufügen und es sich zum ersten Mal erfolgreich in der Instanz anmeldet, werden die der Gruppe gewährten Datenbankberechtigungen automatisch übernommen.
Einzelnen IAM-Nutzern oder Dienstkonten Datenbankberechtigungen erteilen
Wenn einer Cloud SQL-Instanz ein einzelner IAM-Nutzer oder -Dienst hinzugefügt wird, erhält dieses neue Konto standardmäßig keine Berechtigungen für Datenbanken. Sie können nur Abfragen für Datenbankobjekte ausführen, für die ÖFFENTLICH-Zugriff gewährt wurde.Wenn sie zusätzlichen Zugriff benötigen, können mit der GRANT-Anweisung weitere Berechtigungen gewährt werden. Auf der Referenzseite zu GRANT finden Sie eine vollständige Liste der Berechtigungen, die Sie Nutzern und Dienstkonten erteilen können. Führen Sie GRANT über die Befehlszeile aus.
Ersetzen Sie Folgendes:
grant select on TABLE_NAME to "USERNAME";
IAM-Gruppe Datenbankberechtigungen erteilen
Wenn Sie die IAM-Gruppenauthentifizierung verwenden, gewähren Sie Datenbankberechtigungen für IAM-Gruppen, anstatt Berechtigungen für einzelne Nutzer oder Dienstkonten zu gewähren. Wenn Sie einer Cloud SQL-Instanz eine IAM-Gruppe hinzufügen, hat die Gruppe standardmäßig keine Datenbankberechtigungen.
Mit der GRANT-Anweisung können Sie der IAM-Gruppe Datenbankberechtigungen gewähren. Nachdem sich die Gruppenmitglieder (einschließlich Nutzer und Dienstkonten) zum ersten Mal in der Cloud SQL-Instanz angemeldet haben, werden die der Gruppe gewährten Datenbankberechtigungen automatisch auf sie übertragen.
Ersetzen Sie Folgendes:
Führen Sie GRANT über die psql
-Befehlszeile aus.
grant select on TABLE_NAME to "GROUP_NAME";
Weitere Informationen zum Gewähren von Berechtigungen finden Sie auf der Referenzseite GRANT in der PostgreSQL-Dokumentation.
Die Datenbankberechtigungen, die Sie der IAM-Gruppe erteilen, werden sofort wirksam.
IAM-Nutzer, Dienstkonten und Gruppen ansehen, die einer Cloud SQL-Instanz hinzugefügt wurden
Führen Sie die folgenden Befehle aus, um die IAM-Nutzer, Dienstkonten und Gruppen aufzurufen, die Ihrer Cloud SQL-Instanz hinzugefügt wurden.
Console
gcloud
Ersetzen Sie INSTANCE_NAME durch den Namen der Instanz, die die Gruppen enthält, die Sie aufrufen möchten.
gcloud sql users list --instance=INSTANCE_NAME
Gruppen haben den Nutzertyp CLOUD_IAM_GROUP
.
In der Ausgabe werden auch Nutzer- und Dienstkonten in Ihrer Cloud SQL-Instanz aufgeführt.
REST Version 1
In der folgenden Anfrage werden mit der Methode users.list die Nutzer aufgelistet, die Konten in der Cloud SQL-Instanz haben.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users/list
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "example-service-acct@PROJECT_ID.iam", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_SERVICE_ACCOUNT" }, { "kind": "sql#user", "etag": "--redacted--", "name": "another-example-service-acct@PROJECT_ID.iam", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_GROUP_SERVICE_ACCOUNT" }, { "kind": "sql#user", "etag": "--redacted--", "name": "postgres", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", }, { "kind": "sql#user", "etag": "--redacted--", "name": "example-user@example.com", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_USER" }, { "kind": "sql#user", "etag": "--redacted--", "name": "another-example-user@example.com", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_GROUP_USER" }, { "kind": "sql#user", "etag": "--redacted--", "name": "example-group@example.com", "host": "", "instance": "INSTANCE_ID", "project": "PROJECT_ID", "type": "CLOUD_IAM_GROUP" } ] }
Gruppen haben den Nutzertyp CLOUD_IAM_GROUP
.
In der Ausgabe werden auch Nutzer- und Dienstkonten in Ihrer Cloud SQL-Instanz aufgeführt.
REST v1beta4
In der folgenden Anfrage werden mit der Methode users.list die Nutzer aufgelistet, die Konten in der Cloud SQL-Instanz haben.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "sqlserver", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-1", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-2", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { ... }, { ... } ] }
Gruppen haben den Nutzertyp CLOUD_IAM_GROUP
.
In der Ausgabe werden auch Nutzer- und Dienstkonten in Ihrer Cloud SQL-Instanz aufgeführt.
Einzelnen IAM-Nutzer oder einzelnes Dienstkonto aus einer Cloud SQL-Instanz entfernen
Wenn Sie einen einzelnen Nutzer oder ein Dienstkonto, das kein Mitglied einer Gruppe ist, aus der Cloud SQL-Instanz entfernen möchten, löschen Sie das Konto mit dem folgenden Befehl:
Console
gcloud
Nutzer entfernen
Verwenden Sie die E-Mail-Adresse, zum Beispiel example-user@example.com
, um den Nutzer zu identifizieren.
Ersetzen Sie Folgendes:
gcloud sql users delete USERNAME \ --instance=INSTANCE_NAME
Einzelnes Dienstkonto löschen
Ersetzen Sie Folgendes:
gcloud sql users delete SERVICE_ACCT \ --instance=INSTANCE_NAME
REST Version 1
Die folgende Anfrage verwendet die Methode users:delete, um das angegebene Nutzerkonto zu löschen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Die folgende Anfrage verwendet die Methode users:delete, um das angegebene Nutzerkonto zu löschen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
HTTP-Methode und URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
IAM-Gruppenmitglieder aus einer Cloud SQL-Instanz entfernen
Es gibt zwei Möglichkeiten, IAM-Gruppenmitglieder aus einer Cloud SQL-Instanz zu entfernen:
Automatisches Entfernen
Wenn Sie ein IAM-Gruppenmitglied entfernen möchten, müssen Sie seine Mitgliedschaft aus den entsprechenden IAM-Gruppen in Cloud Identity entfernen. Nachdem die Nutzer der IAM-Gruppe die Mitgliedschaft in allen anwendbaren Gruppen in Cloud Identity verloren haben, werden sie automatisch aus der Instanz entfernt. Die einzige Ausnahme von dieser Entfernung sind Gruppenmitglieder, die Datenbankobjekte besitzen. Diese Gruppennutzer müssen manuell entfernt werden.
Änderungen an der Gruppenmitgliedschaft, z. B. das Hinzufügen oder Entfernen eines Mitglieds, dauern etwa 15 Minuten. Die 15-minütige Weiterleitungsverzögerung von Cloud SQL erfolgt parallel zur Zeit, die für die Weiterleitung von IAM-Änderungen erforderlich ist.
Manuelles Entfernen
In Fällen, in denen ein IAM-Gruppennutzer nicht automatisch entfernt werden kann, können Sie ihn manuell entfernen. Sie können einen IAM-Gruppennutzer nicht manuell mit der gcloud CLI, derGoogle Cloud -Konsole, Terraform oder der Cloud SQL Admin API aus einer Cloud SQL-Instanz entfernen. Stattdessen können Datenbanknutzer mit Superuser-Berechtigungen IAM-Gruppennutzer manuell mit der Anweisung DROP USER über einen PostgreSQL-Client aus der Cloud SQL-Instanz löschen.
Nachdem Sie einen IAM-Gruppennutzer manuell aus der Cloud SQL-Instanz entfernt haben, müssen Sie ihn auch aus der IAM-Gruppe in Cloud Identity entfernen, um weitere Anmeldungen bei der Cloud SQL-Instanz zu verhindern.
IAM-Gruppe aus einer Cloud SQL-Instanz löschen
Sie können die hinzugefügten IAM-Gruppen aus der Cloud SQL-Instanz löschen. Wenn Sie eine IAM-Gruppe aus der Instanz löschen, verlieren alle Nutzer und Dienstkonten, die zur IAM-Gruppe gehören, alle Datenbankberechtigungen, die der IAM-Gruppe gewährt wurden. Außerdem gelten die folgenden Bedingungen:
Wenn Sie alle IAM-Gruppen aus einer Cloud SQL-Instanz löschen, verlieren alle Nutzer und Dienstkonten der IAM-Gruppe alle ihre Datenbankberechtigungen. Außerdem gelten die folgenden Bedingungen:
Console
gcloud
Verwenden Sie den Befehl gcloud sql users delete
, um eine Cloud Identity-Gruppe aus einer Instanz zu löschen.
Ersetzen Sie Folgendes:
gcloud sql users delete GROUP_NAME \ --instance=INSTANCE_NAME
IAM-Anmeldeberechtigungen aus einer IAM-Gruppe entfernen
Wenn Sie die Rolle cloudsql.instanceUser
für eine IAM-Gruppe widerrufen, können sich alle Mitglieder der Gruppe nicht mehr bei einer Cloud SQL-Instanz im Projekt anmelden. Die Nutzer oder Dienstkonten können sich nur dann bei Instanzen anmelden, wenn sie Mitglieder einer anderen IAM-Gruppe sind, die noch Anmeldeberechtigungen hat.
Informationen zum Widerrufen einer Rolle aus einer Cloud Identity-Gruppe finden Sie unter Einzelne Rolle widerrufen.
Nutzer aus einer IAM-Gruppe entfernen
IAM-Gruppenmitglieder wie Nutzer oder Dienstkonten können in Cloud Identity aus der IAM-Gruppe entfernt werden.
Nachdem die Entfernung in IAM übernommen wurde, kann sich der Nutzer nicht mehr in der Datenbank anmelden, es sei denn, er hat Anmeldeberechtigungen von einer anderen Gruppe erhalten oder ihm wurden Anmeldeberechtigungen direkt gewährt. Außerdem verlieren Nutzer, die aus einer Gruppe entfernt werden, die Datenbankberechtigungen der Gruppe.
Wenn ein IAM-Gruppennutzer keiner Gruppe in der Instanz angehört, wird er automatisch aus der Instanz entfernt. Wenn Cloud SQL jedoch erkennt, dass ein IAM-Gruppennutzer ein Objekt in der Instanz besitzt, wird der Nutzer nicht entfernt. Ein Administrator muss die Eigentümerschaft des Objekts neu zuweisen und den Nutzer manuell entfernen.
Anmeldedaten in Audit-Logs ansehen
Sie können Audit-Logs aktivieren, um IAM-Anmeldungen bei der Datenbank zu erfassen. Bei Problemen mit der Anmeldung können Sie mithilfe der Audit-Logs das Problem diagnostizieren.
Nach der Konfiguration können Sie mit dem Log-Explorer Audit-Logs zum Datenzugriff von erfolgreichen Anmeldungen ansehen.
Bei der IAM-Gruppenauthentifizierung werden im Audit-Log die Aktivitäten und Anmeldungen für einzelne Nutzer- und Dienstkonten angezeigt.
Ein Log kann beispielsweise Informationen wie die folgenden enthalten:
{
insertId: "..."
logName: "projects/.../logs/cloudaudit.googleapis.com%2Fdata_access"
protoPayload: {
@type: "type.googleapis.com/google.cloud.audit.AuditLog"
authenticationInfo: {
principalEmail: "..."
}
authorizationInfo: [
0: {
granted: true
permission: "cloudsql.instances.login"
resource: "instances/..."
resourceAttributes: {
}
}
]
methodName: "cloudsql.instances.login"
request: {
@type: "type.googleapis.com/google.cloud.sql.authorization.v1.InstancesLoginRequest"
clientIpAddress: "..."
database: "..."
databaseSessionId: ...
instance: "projects/.../locations/us-central1/instances/..."
user: "..."
}
requestMetadata: {
callerIp: "..."
destinationAttributes: {
}
requestAttributes: {
auth: {
}
time: "..."
}
}
resourceName: "instances/..."
serviceName: "cloudsql.googleapis.com"
status: {
}
}
receiveTimestamp: "..."
resource: {
labels: {
database_id: "...:..."
project_id: "..."
region: "us-central"
}
type: "cloudsql_database"
}
severity: "INFO"
timestamp: "..."
}
Fehler bei der Anmeldung beheben
Wenn bei einer Anmeldung ein Fehler auftritt, gibt PostgreSQL aus Sicherheitsgründen eine kurz gefasste Fehlermeldung zurück. Beispiel:
PGPASSWORD=not-a-password psql --host=... --username=... --dbname=...
psql: error: could not connect to server: FATAL: Cloud SQL IAM user authentication failed for user "..."
FATAL: pg_hba.conf rejects connection for host "...", user "...", database "...", SSL off
Weitere Einzelheiten zum Fehler können Sie den PostgreSQL-Fehlerlogs entnehmen. Weitere Informationen finden Sie unter Logs ansehen.
Der folgende Logeintrag beschreibt beispielsweise für den vorherigen Fehler, welche Maßnahme Sie zum Lösen des Problems ergreifen können.
F ... [152172]: [1-1] db=...,user=... FATAL: Cloud SQL IAM user authentication failed for user "..."
I ... [152172]: [2-1] db=...,user=... DETAIL: Request is missing required authentication credential. Expected OAuth 2 access token, log in cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
Prüfen Sie die angezeigte Fehlermeldung. Wenn in der Meldung nicht angegeben ist, dass Sie die Cloud SQL-IAM-Nutzerauthentifizierung oder Cloud SQL-IAM-Dienstkontoauthentifizierung verwendet haben, prüfen Sie, ob der für die Anmeldung verwendete Datenbank-Nutzertyp entweder CLOUD_IAM_USER
oder CLOUD_IAM_SERVICE_ACCOUNT
ist.
Sie können dafür die Google Cloud -Konsole oder den Befehl gcloud sql
users list
verwenden.
Prüfen Sie bei einem IAM-Nutzer, ob der Datenbank-Nutzername die E-Mail-Adresse des IAM-Nutzers ist.
Wenn Sie die IAM-Datenbankauthentifizierung verwendet haben, prüfen Sie die Details der Fehlermeldung. Sie finden die Fehlermeldung im Fehlerlog der Datenbank. Wenn die Meldung angibt, dass das als Passwort gesendete Zugriffstoken (OAuth 2.0) ungültig war, können Sie mit dem gcloud
-Befehl gcloud auth application-default print-access-token
so nach Details suchen:
curl -H "Content-Type: application/x-www-form-urlencoded" \ -d "access_token=$(gcloud auth application-default print-access-token)" \ https://www.googleapis.com/oauth2/v1/tokeninfo
Prüfen Sie, ob das Token für das jeweilige IAM-Nutzerkonto bzw. -Dienstkonto bestimmt und nicht abgelaufen ist.
Wenn die Details zeigen, dass eine Berechtigung fehlt, prüfen Sie, ob dem IAM-Nutzerkonto oder -Dienstkonto die Berechtigung cloudsql.instances.login
mithilfe der vordefinierten Rolle Cloud SQL Instance User
oder einer benutzerdefinierten Rolle in der IAM-Richtlinie der Instanz des Projektes. Weitere Informationen finden Sie in Richtlinien-Fehlerbehebung für IAM.
Wenn eine Anmeldung fehlschlägt, weil die IAM-Datenbankauthentifizierung nicht verfügbar ist, kann sich der Nutzer mit dem Standardnutzer und -passwort von PostgreSQL anmelden. Mit dieser Methode erhält der Nutzer trotzdem Zugriff auf die gesamte Datenbank. Prüfen Sie, ob die Verbindung sicher ist.
Fehlerbehebung bei Nutzerkonten, die die IAM-Gruppenauthentifizierung verwenden
In diesem Abschnitt werden Szenarien zur Fehlerbehebung für die IAM-Gruppenauthentifizierung aufgeführt.
Fehler beim Hinzufügen einer Gruppe zu einer Datenbank
Wenn Sie versuchen, einer Instanz eine Gruppe hinzuzufügen, wird der folgende Fehler angezeigt:
(gcloud.sql.users.create) HTTPError 400: Invalid request: Provided CLOUD_IAM_GROUP: EMAIL, does not exist.
Achten Sie darauf, dass die von Ihnen angegebene E‑Mail-Adresse eine gültige Gruppe ist.
Wenn die Gruppe noch nicht vorhanden ist, erstellen Sie sie. Weitere Informationen zum Erstellen von Gruppen finden Sie unter Google-Gruppen in der Google Cloud Konsole erstellen und verwalten.
Wenn Sie die folgende Fehlermeldung erhalten:
(gcloud.sql.users.create) HTTPError 400: Invalid request: IAM Group Authentication is disabled.
Bevor Sie die IAM-Gruppenauthentifizierung verwenden können, ist für Ihre Cloud SQL-Instanz das folgende Wartungsupdate erforderlich:
Ab R20240514.00_04
Sie können das Wartungsupdate mit Self-Service-Wartung auf Ihre Instanz anwenden. Weitere Informationen finden Sie unter Self-Service-Wartung.
Ein vorhandener IAM-Nutzer oder ein vorhandenes Dienstkonto übernimmt nicht die Datenbankberechtigungen, die seiner IAM-Gruppe gewährt werden
Wenn ein vorhandener IAM-Nutzer oder ein vorhandenes Dienstkonto nicht die richtigen Datenbankberechtigungen seiner Gruppe übernimmt, führen Sie die folgenden Schritte aus: