Auf dieser Seite wird beschrieben, wie Sie einer Cloud SQL-Instanz, die die IAM-Datenbankauthentifizierung verwendet, Nutzer, Dienstkonten und Gruppen hinzufügen und verwalten.
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 Google Cloud CLI.
-
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 Google Cloud CLI.
-
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 Console erstellen und verwalten.
- Sie können die Rolle für ein Projekt mit Cloud SQL-Instanzen über die IAM-Seite in der Google Cloud Console, die gcloud CLI, Terraform oder die Cloud SQL Admin API gewähren. Weitere Informationen finden Sie unter IAM-Richtlinienbindung zu einem Nutzer, Dienstkonto oder einer Gruppe hinzufügen.
- Wenn Sie ein Dienstkonto verwenden, müssen Sie für jeden Dienst, der Zugriff auf Datenbanken im Projekt benötigt, ein Dienstkonto hinzufügen.
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.
Console
-
Öffnen Sie in der Google Cloud Console die Seite IAM.
- 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.
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:
- PROJECT_ID: durch die ID des Projekts, für das der Nutzer autorisiert sein soll.
- USERNAME ist die E-Mail-Adresse des Nutzers
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:
- PROJECT_ID: durch die ID des Projekts, für das der Nutzer autorisiert sein soll.
- SERVICE_ACCT: die E-Mail-Adresse des Dienstkontos.
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:
- PROJECT_ID: die ID des Projekts, für das die Mitglieder der Gruppe autorisiert sein sollen.
- GROUP_EMAIL_ADDRESS: Die E-Mail-Adresse der Gruppe. Beispiel:
example-group@example.com
.
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
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Google Cloud-Standardprojekt 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.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
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
Änderungen anwenden
-
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.
Änderungen löschen
So löschen Sie das Projekt:
- 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
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
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Google Cloud-Standardprojekt 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.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
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
Änderungen anwenden
-
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.
Änderungen löschen
So löschen Sie das Projekt:
- 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
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 IAM-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 zugreifen zu können. Wenn Sie eine IAM-Gruppe hinzufügen, müssen Sie nicht für jedes Mitglied dieser Gruppe ein Nutzerkonto 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 einzelnes IAM-Dienstkonto hinzufügen möchten, fügen Sie ein neues Nutzerkonto hinzu und wählen Sie IAM als Authentifizierungsmethode aus:
Console
-
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. Das Nutzer- oder Dienstkonto ist jetzt in der Nutzerkontoliste enthalten.
Wenn dem Nutzer nach der Erstellung des Nutzerkontos nicht die IAM-Rolle
cloudsql.instanceUser
zugewiesen ist, wird neben dem Nutzernamen das Symbol angezeigt.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.
gcloud
Nutzerkonto erstellen
Verwenden Sie die E-Mail-Adresse, zum Beispiel example-user@example.com
, um den Nutzer zu identifizieren.
Ersetzen Sie Folgendes:
- USERNAME ist die E-Mail-Adresse des Nutzers
- INSTANCE_NAME: durch den Namen der Instanz, auf die der Nutzer Zugriff erhalten soll.
gcloud sql users create USERNAME \ --instance=INSTANCE_NAME \ --type=cloud_iam_user
Dienstkonto erstellen
Ersetzen Sie Folgendes:
- SERVICE_ACCT: die E-Mail-Adresse des Dienstkontos.
- INSTANCE_NAME: durch den Namen der Instanz, auf die das Dienstkonto Zugriff erhalten soll.
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
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Google Cloud-Standardprojekt 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.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
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
Änderungen anwenden
-
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.
Änderungen löschen
So löschen Sie das Projekt:
- 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
REST Version 1
Nutzerkonto erstellen
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- 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
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:
- 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
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:
- 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
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:
- 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
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" }
Cloud SQL-Instanz eine IAM-Gruppe 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 der Instanz nicht die einzelnen Gruppenmitglieder hinzufügen. Weitere Informationen finden Sie unter Mitgliedern einer Gruppe automatisch eine Cloud SQL-Instanz zuweisen.
Console
-
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 dem Erstellen des Nutzerkontos nicht die IAM-Rolle
cloudsql.instanceUser
zugewiesen wurde, wird neben der Gruppe das Symbol angezeigt.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.
gcloud
Ersetzen Sie Folgendes:
- 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.
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
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Google Cloud-Standardprojekt 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.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
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
Änderungen anwenden
-
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.
Änderungen löschen
So löschen Sie das Projekt:
- 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
REST Version 1
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID für die Instanz, der Sie die Cloud Identity-Gruppe hinzufügen
- GROUP_EMAIL: die E-Mail-Adresse der Cloud Identity-Gruppe
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:
- PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID für die Instanz, der Sie die Cloud Identity-Gruppe hinzufügen
- GROUP_EMAIL: die E-Mail-Adresse der Cloud Identity-Gruppe
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 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": "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" }
Mitgliedern einer Gruppe automatisch eine 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 für die 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 Gruppennutzerkonto oder ein Gruppendienstkonto für dieses Gruppenmitglied. Sie können sich das Gruppenmitglied ansehen, das nach der ersten erfolgreichen Anmeldung in der Instanz aufgeführt ist.
Nach dem Failover können sich Nutzer von IAM-Gruppen weiterhin anmelden und erstellt werden, sofern die Failover-Instanz die entsprechenden Gruppen enthält.
Weitere Informationen zum Anmelden finden Sie unter Mit IAM-Datenbankauthentifizierung anmelden.
Vorhandene IAM-Nutzer zur Verwendung der IAM-Gruppenauthentifizierung migrieren
Für bestehende IAM-Nutzer vom Typ CLOUD_IAM_USER
oder CLOUD_IAM_SERVICE_ACCOUNT
wird keine IAM-Gruppenauthentifizierung verwendet.
Sie können diese Nutzer zur Verwendung der IAM-Gruppenauthentifizierung migrieren.
Fügen Sie diese Nutzer einer Gruppe hinzu.
Fügen Sie der Instanz die Gruppe hinzu.
Weisen Sie der Gruppe ausreichende 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 Übertragungszeiten finden Sie unter Zugriffsänderungsverteilung.
Weisen Sie den IAM-Nutzern, die Sie zur Gruppe migrieren, Datenbankberechtigungen zu.
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.
Gruppenmitglieder in einer Cloud SQL-Instanz verwalten
Wenn Sie einer Cloud SQL-Instanz eine IAM-Gruppe hinzufügen, erhalten 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 ihn in Cloud Identity als Gruppenmitglied 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. Dieser Zeitraum kommt zu der Zeit hinzu, die für IAM-Änderungen erforderlich ist.
Die Gewährung oder Aufhebung von Datenbankberechtigungen für eine IAM-Gruppe in PostgreSQL tritt sofort in Kraft. Wenn Sie beispielsweise den Zugriff auf eine Tabelle widerrufen, verlieren die 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 zu mehreren IAM-Gruppen in einer Instanz gehört, hat er alle IAM-Berechtigungen und Datenbankberechtigungen, die jeder dieser IAM-Gruppen zugewiesen sind.
Wenn Sie der IAM-Gruppe in Cloud Identity ein neues Mitglied (Nutzer oder Dienstkonto) hinzufügen und sich dieses Mitglied zum ersten Mal erfolgreich in der Instanz anmeldet, werden ihm automatisch die der Gruppe gewährten Datenbankberechtigungen zugewiesen.
Einzelnen IAM-Nutzern oder Dienstkonten Datenbankberechtigungen erteilen
Wenn ein einzelner IAM-Nutzer oder Dienst einer Cloud SQL-Instanz hinzugefügt wird, erhält dieses neue Konto standardmäßig keine Berechtigungen für Datenbanken. Es kann 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:
- 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.
grant select on TABLE_NAME to "USERNAME";
IAM-Gruppe Datenbankberechtigungen erteilen
Wenn Sie die IAM-Gruppenauthentifizierung verwenden, gewähren Sie IAM-Gruppen Datenbankberechtigungen, anstatt einzelnen Nutzern oder Dienstkonten Berechtigungen zu erteilen. Wenn Sie einer Cloud SQL-Instanz eine IAM-Gruppe hinzufügen, hat diese Gruppe standardmäßig keine Datenbankberechtigungen.
Verwenden Sie die GRANT-Anweisung, um der IAM-Gruppe Datenbankberechtigungen zu gewähren. Nach der ersten Anmeldung in der Cloud SQL-Instanz erben alle Gruppenmitglieder (einschließlich Nutzer und Dienstkonten) automatisch die der Gruppe gewährten Datenbankberechtigungen.
Ersetzen Sie Folgendes:
- GROUP_NAME: die E-Mail-Adresse der Cloud Identity-Gruppe, einschließlich des
@
und des Domainnamens. Wenn die E-Mail-Adresse der IAM-Gruppe beispielsweiseexample-group@example.com
lautet, lautet der Gruppennameexample-group@example.com
. Da der String Sonderzeichen (@
und.
) enthält, muss er in Anführungszeichen gesetzt werden. - TABLE_NAME: der Name der Tabelle, auf die Sie dem Nutzer Zugriff gewähren möchten.
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 in der PostgreSQL-Dokumentation auf der Referenzseite GRANT.
Die Datenbankberechtigungen, die Sie der IAM-Gruppe gewähren, 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
-
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.
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.
- 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 Nutzerkonten für die IAM-Datenbankauthentifizierung sind, haben den Typ
CLOUD_IAM_USER
. - Dienstkonten, die individuelle IAM-Datenbankauthentifizierungs-Dienstkonten sind, haben den Typ
CLOUD_IAM_SERVICE_ACCOUNT
.
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:
- PROJECT_ID: die Projekt-ID
- INSTANCE_ID: die Instanz-ID
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.
- 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 Nutzerkonten für die IAM-Datenbankauthentifizierung sind, haben den Typ
CLOUD_IAM_USER
. - Dienstkonten, die individuelle IAM-Datenbankauthentifizierungs-Dienstkonten sind, haben den Typ
CLOUD_IAM_SERVICE_ACCOUNT
.
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:
- project-id: Ihre Projekt-ID
- instance-id: die gewünschte Instanz-ID
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.
- 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 Nutzerkonten für die IAM-Datenbankauthentifizierung sind, haben den Typ
CLOUD_IAM_USER
. - Dienstkonten, die individuelle IAM-Datenbankauthentifizierungs-Dienstkonten sind, haben den Typ
CLOUD_IAM_SERVICE_ACCOUNT
.
Einzelnen IAM-Nutzer oder 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
-
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.
gcloud
Nutzer entfernen
Verwenden Sie die E-Mail-Adresse, zum Beispiel example-user@example.com
, um den Nutzer zu identifizieren.
Ersetzen Sie Folgendes:
- USERNAME: die E-Mail-Adresse.
- INSTANCE_NAME: Der Name der Instanz, aus der Sie den Nutzer entfernen möchten.
gcloud sql users delete USERNAME \ --instance=INSTANCE_NAME
Einzelnes Dienstkonto löschen
Ersetzen Sie Folgendes:
- SERVICE_ACCT: die E-Mail-Adresse des Dienstkontos.
- INSTANCE_NAME: Der Name der Instanz, aus der Sie den Nutzer entfernen möchten.
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:
- PROJECT_ID: Ihre Projekt-ID
- INSTANCE_ID: die gewünschte Instanz-ID
- USERNAME: die E-Mail-Adresse des Nutzers oder Dienstkontos
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:
- PROJECT_ID: Ihre Projekt-ID
- INSTANCE_ID: die gewünschte Instanz-ID
- USERNAME: die E-Mail-Adresse des Nutzers oder Dienstkontos
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:
- Automatische Entfernung
- Manuelle Entfernung
Automatische Entfernung
Wenn Sie ein IAM-Gruppenmitglied entfernen möchten, müssen Sie die Mitgliedschaft aus den entsprechenden IAM-Gruppen in Cloud Identity entfernen. Nachdem die Nutzer der IAM-Gruppe die Mitgliedschaft in allen relevanten Gruppen in Cloud Identity verloren haben, werden sie von Cloud SQL automatisch aus der Instanz entfernt. Die einzige Ausnahme von dieser Entfernung sind Gruppennutzer, die Eigentümer von Datenbankobjekten sind. Diese Nutzer müssen manuell entfernt werden.
Änderungen an der Gruppenmitgliedschaft, z. B. das Hinzufügen oder Entfernen eines Mitglieds, dauern etwa 15 Minuten. Dieser Zeitraum kommt zu der Zeit hinzu, die für IAM-Änderungen erforderlich ist.
Manuelle Entfernung
Wenn ein Nutzer einer IAM-Gruppe nicht automatisch entfernt werden kann, können Sie ihn manuell entfernen. Sie können einen IAM-Gruppennutzer nicht manuell mit der gcloud CLI, der Google Cloud Console, Terraform oder der Cloud SQL Admin API aus einer Cloud SQL-Instanz entfernen. Stattdessen können Datenbanknutzer mit Superuser-Berechtigungen IAM-Gruppennutzer manuell mithilfe einer DROP USER-Anweisung über einen PostgreSQL-Client aus der Cloud SQL-Instanz löschen.
Nachdem Sie einen Nutzer einer IAM-Gruppe manuell aus der Cloud SQL-Instanz entfernt haben, müssen Sie ihn auch aus der IAM-Gruppe in Cloud Identity entfernen, um weitere Anmeldungen in 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. Darüber hinaus gelten die folgenden Bedingungen:
- 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 Nutzer oder Dienstkonten der IAM-Gruppe zu keiner anderen Gruppe in der Instanz gehören, werden sie von Cloud SQL aus der Instanz entfernt.
- Wenn jedoch ein IAM-Gruppennutzer 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.
Wenn Sie alle IAM-Gruppen aus einer Cloud SQL-Instanz löschen, verlieren alle Nutzer und Dienstkonten der IAM-Gruppe alle Datenbankberechtigungen. Darüber hinaus gelten die folgenden Bedingungen:
- Alle IAM-Gruppennutzer und Dienstkonten können sich nicht in der Instanz anmelden.
- Außerdem werden alle IAM-Gruppennutzer und Dienstkonten von Cloud SQL automatisch aus der Instanz entfernt.
- Wenn jedoch ein IAM-Gruppennutzer Inhaber eines Datenbankobjekts in der Instanz ist, müssen Sie die Inhaberschaft des Objekts neu zuweisen, bevor Sie den Nutzer manuell entfernen können.
Console
-
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 die Gruppe, die Sie entfernen möchten.
- Klicken Sie auf Entfernen. Dadurch wird nur der Zugriff auf diese Instanz widerrufen.
gcloud
Verwenden Sie den Befehl gcloud sql users delete
, um eine Cloud Identity-Gruppe aus einer Instanz zu löschen.
Ersetzen Sie Folgendes:
- 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 Cloud Identity-Gruppennameexample-group
. - INSTANCE_NAME: Der Name der Cloud SQL-Instanz mit der Cloud Identity-Gruppe, die Sie löschen möchten.
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 in einer Cloud SQL-Instanz im Projekt anmelden. Die Nutzer oder Dienstkonten können sich nur dann in Instanzen anmelden, wenn sie Mitglieder einer anderen IAM-Gruppe sind, die noch Anmeldeberechtigungen hat.
Informationen zum Widerrufen einer Rolle für eine 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 werden direkt Anmeldeberechtigungen 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 von Cloud SQL automatisch aus der Instanz entfernt. Wenn Cloud SQL jedoch erkennt, dass ein Nutzer einer IAM-Gruppe Eigentümer eines Objekts in der Instanz ist, wird er nicht entfernt. Ein Administrator muss die Inhaberschaft 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 enthalten Audit-Logs die Aktivitäten und Anmeldungen für einzelne Nutzer- und Dienstkonten.
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 Console 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.
Probleme mit Nutzerkonten beheben, die die IAM-Gruppenauthentifizierung verwenden
In diesem Abschnitt werden Szenarien zur Fehlerbehebung bei der IAM-Gruppenauthentifizierung aufgeführt.
Eine Datenbank kann keiner Gruppe hinzugefügt werden
Wenn Sie versuchen, einer Instanz eine Gruppe hinzuzufügen, erhalten Sie die folgende Fehlermeldung:
(gcloud.sql.users.create) HTTPError 400: Invalid request: Provided CLOUD_IAM_GROUP: EMAIL, does not exist.
Die von Ihnen angegebene E-Mail-Adresse muss zu einer gültigen Gruppe gehören.
Wenn die Gruppe noch nicht vorhanden ist, erstellen Sie sie. Weitere Informationen zum Erstellen von Gruppen finden Sie unter Google Groups in der Google Cloud Console 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, muss für Ihre Cloud SQL-Instanz das folgende Wartungsupdate durchgeführt werden:
Ab R20240514.00_04
Sie können das Wartungsupdate mithilfe der Self-Service-Wartung auf Ihre Instanz anwenden. Weitere Informationen finden Sie unter Wartung per Selfservice.
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:
Öffnen Sie in der Google Cloud Console die Seite IAM.
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 das Nutzer- oder 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 wieder in der Instanz an.
Wenn Sie sich wieder in der Instanz anmelden, wird das Konto mit dem richtigen Kontotyp
CLOUD_IAM_GROUP_USER
oderCLOUD_IAM_GROUP_SERVICE_ACCOUNT
neu erstellt.
Nächste Schritte
- IAM-Datenbankauthentifizierung
- Bei einer Cloud SQL-Datenbank anmelden
- Instanzen für die IAM-Datenbankauthentifizierung konfigurieren