Nutzer mit IAM-Datenbankauthentifizierung verwalten

Auf dieser Seite wird beschrieben, wie Sie einen Nutzer oder ein Dienstkonto hinzufügen, das die IAM-Datenbankauthentifizierung für eine Datenbank verwendet und wie Sie diese Nutzer- und Dienstkonten verwalten. Weitere Informationen zur Einbindung von IAM finden Sie unter IAM-Authentifizierung.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Installieren Sie die Google Cloud CLI.
  5. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  6. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  7. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  8. Installieren Sie die Google Cloud CLI.
  9. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  10. Cloud Key Management Service API aktivieren.

    Aktivieren Sie die API

  11. Sie müssen die Rolle "Cloud SQL-Administrator" in Ihrem Nutzerkonto haben.

    Zur IAM-Seite

  12. Aktivieren Sie die IAM-Datenbankauthentifizierung für Ihre Cloud SQL-Instanz.
  13. Achten Sie darauf, dass Sie den Nutzern, die es benötigen, IAM-Zugriff für jedes Projekt gewähren, das Datenbanken enthält, auf die die Nutzer zugreifen müssen. Weitere Informationen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.
  14. Achten Sie darauf, dass Sie für jeden Dienst, der Zugriff auf Datenbanken im Projekt benötigt, ein Dienstkonto hinzugefügt haben.
  15. Wenn Sie die IAM-Gruppenauthentifizierung verwenden, achten Sie darauf, dass Sie die Cloud Identity-Gruppe erstellt haben, die Zugriff auf die Datenbanken in Ihrem Projekt benötigt.

IAM-Nutzer oder Dienstkonto zu einer Datenbankinstanz hinzufügen

Sie müssen für jeden IAM-Nutzer, der Zugriff auf die Datenbankinstanz haben soll, einen neuen Datenbanknutzer erstellen. Der Datenbank-Nutzername muss die E-Mail-Adresse des IAM-Nutzers sein, zum Beispiel test-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.

Fügen Sie einen neuen Datenbanknutzer hinzu und wählen Sie IAM als Authentifizierungsmethode aus, um einen IAM-Nutzer oder ein Dienstkonto hinzuzufügen:

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
  3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
  4. Klicken Sie auf Nutzerkonto hinzufügen. Der Tab Nutzerkonto zur Instanz instance_name hinzufügen wird geöffnet.
  5. Klicken Sie auf das Optionsfeld Cloud IAM.
  6. Geben Sie in das Feld Hauptkonto die E-Mail-Adresse des Nutzers oder Dienstkontos ein, das Sie hinzufügen möchten.
  7. Klicken Sie auf Add (Hinzufügen). Der Nutzer ist jetzt in der Nutzerliste enthalten.
  8. Wenn dem Nutzer nicht die Rolle Cloud SQL-Instanznutzer zugewiesen ist, wird links neben dem Nutzernamen das Symbol Dreieck angezeigt.

    Um dem Nutzer Anmeldeberechtigungen zu erteilen, klicken Sie auf das Symbol und wählen Sie dann IAM-Rolle hinzufügen aus. Das Symbol wird nicht mehr angezeigt. Der Nutzer ist jetzt Mitglied der Rolle.

gcloud

Nutzerkonto erstellen

Verwenden Sie die E-Mail-Adresse, zum Beispiel test-user@example.com, um den Nutzer zu identifizieren.

Ersetzen Sie Folgendes:

  • USERNAME: durch 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

Dabei gilt:

  • SERVICE_ACCT: durch 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.

resource "google_sql_database_instance" "default" {
  name             = "mysql-db-auth-instance-name-test"
  region           = "us-west4"
  database_version = "MYSQL_8_0"
  settings {
    tier = "db-f1-micro"
    database_flags {
      name  = "cloudsql_iam_authentication"
      value = "on"
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally
  # delete this instance by use of Terraform whereas
  # `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

# Specify the email address of the IAM user to add to the instance
# This resource does not create a new IAM user account; this account must
# already exist

resource "google_sql_user" "iam_user" {
  name     = "test-user@example.com"
  instance = google_sql_database_instance.default.name
  type     = "CLOUD_IAM_USER"
}

# Create a new IAM service account

resource "google_service_account" "default" {
  account_id   = "cloud-sql-mysql-sa"
  display_name = "Cloud SQL for MySQL Service Account"
}

# Specify the email address of the IAM service account to add to the instance

resource "google_sql_user" "iam_service_account_user" {
  name     = google_service_account.default.email
  instance = google_sql_database_instance.default.name
  type     = "CLOUD_IAM_SERVICE_ACCOUNT"
}

Ä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

  1. Rufen Sie Cloud Shell auf.
  2. 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).

  1. 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 als main.tf bezeichnet.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
  4. Speichern Sie die Änderungen.
  5. 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

  1. 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.

  2. 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.

  3. Ö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:

  1. Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument deletion_protection auf false.
    deletion_protection =  "false"
  2. 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
  1. 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: Ihre 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
  • operation-id: die ID des Vorgangs

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 Ihres Dienstkontos
  • project-id: Ihre Projekt-ID
  • instance-id: die Instanz-ID für die Instanz, zu der Sie das Dienstkonto hinzufügen
  • operation-id: die ID des Vorgangs

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: Ihre 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
  • operation-id: die ID des Vorgangs

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 Ihres Dienstkontos
  • project-id: Ihre Projekt-ID
  • instance-id: die Instanz-ID für die Instanz, zu der Sie das Dienstkonto hinzufügen
  • operation-id: die ID des Vorgangs

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"
}

Gruppe zur Datenbankinstanz hinzufügen

So konfigurieren Sie die IAM-Gruppenauthentifizierung für Ihre Instanz:

  1. Wenn Sie noch keine Cloud Identity-Gruppe erstellt haben, erstellen Sie eine in dem Projekt, in dem Sie Ihre Cloud SQL-Instanzen verwalten. Weitere Informationen finden Sie in der Übersicht zu Cloud Identity.

  2. Führen Sie den folgenden Befehl aus, um die Gruppe Ihrer Cloud SQL-Instanz hinzuzufügen.

    Console

    Das Hinzufügen von Gruppen zu einer Instanz ist über die Google Cloud Console während der Vorschau nicht möglich.

    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: 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
       

    REST Version 1

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: Ihre 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 Gruppe/li>
    • OPERATION_ID: die ID des Vorgangs

    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: Ihre 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.
    • OPERATION_ID: die ID des Vorgangs

    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"
    }
    

Nutzer oder Dienstkonten in einer Gruppe zu einer Datenbankinstanz hinzufügen

Wenn Sie einer Instanz eine Cloud Identity-Gruppe hinzufügen, werden Mitglieder der Gruppe nicht automatisch als Nutzer zur Instanz hinzugefügt. Wenn sich ein Mitglied zum ersten Mal bei der Instanz anmeldet, wird ein Nutzer- oder Dienstkonto in der Instanz erstellt.

Weitere Informationen finden Sie unter Mit IAM-Datenbankauthentifizierung anmelden.

Nutzer oder Dienstkonten in einer Gruppe auf einer Instanz verwalten

Sie können den Zugriff auf eine Instanz steuern, indem Sie die Mitgliedschaft der Cloud Identity-Gruppe verwalten. Weitere Informationen finden Sie unter Cloud Identity – Übersicht.

Ein Nutzer kann Mitglied mehrerer Cloud Identity-Gruppen sein. Wenn ein Nutzer mehreren Cloud Identity-Gruppen auf einer Instanz angehört, verfügt er über alle IAM-Berechtigungen und Datenbankberechtigungen, die aus jeder dieser Gruppen zusammengefasst wurden.

Änderungen an der Gruppenmitgliedschaft, z. B. das Hinzufügen eines Kontos, dauern etwa 15 Minuten. Dies gilt zusätzlich zur für IAM-Änderungen erforderlichen Zeit.

Nachdem die Änderungen übernommen wurden, muss sich der Nutzer oder das Dienstkonto abmelden und noch einmal anmelden, damit die Änderungen wirksam werden. Das Gewähren oder Entziehen von Datenbankberechtigungen für eine Gruppe in MySQL wird jedoch sofort wirksam. Wenn Sie beispielsweise den Zugriff auf eine Tabelle widerrufen, verlieren Mitglieder dieser Cloud Identity-Gruppe sofort den Zugriff auf diese Tabelle, ohne sich ab- und wieder anmelden zu müssen.

Wenn einer Instanz eine zusätzliche Cloud Identity hinzugefügt wird, müssen sich Nutzer ab- und wieder anmelden, um Berechtigungen von der neuen Gruppe zu erhalten.

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 test-user@example.com. Da die E-Mail-Adresse Sonderzeichen (@ und .) enthält, muss sie in Anführungszeichen gesetzt werden.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite IAM.

    IAM aufrufen

  2. Klicken Sie auf Add.
  3. 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 haben.
  4. Wechseln Sie unter Rolle zu Cloud SQL und wählen Sie Cloud SQL-Instanznutzer und Cloud SQL-Client aus.
  5. Wählen Sie für einzelne Nutzer und Dienstkonten Cloud SQL-Client aus.
  6. 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: die E-Mail-Adresse des Nutzers
  gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=user:USERNAME \
    --role=roles/cloudsql.instanceUser
  

Führen Sie das gcloud projects add-iam-policy-binding noch einmal mit dem Flag --role=roles/cloudsql.client aus.

Richtlinienbindung zu einem Dienstkonto hinzufügen

Dabei gilt:

  • 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
  

Führen Sie das gcloud projects add-iam-policy-binding noch einmal mit dem Flag --role=roles/cloudsql.client aus.

Richtlinienbindung zu einer Cloud Identity-Gruppe hinzufügen

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID des Projekts, für das Sie Mitglieder der Gruppe autorisieren möchten.
  • 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.

Die IAM-Gruppenauthentifizierung befindet sich in der Vorschau.

Terraform

Verwenden Sie eine Terraform-Ressource, um den IAM-Nutzer- und -Dienstkonten die erforderliche Richtlinienbindung hinzuzufügen.

data "google_project" "project" {
}

resource "google_project_iam_binding" "cloud_sql_user" {
  project = data.google_project.project.project_id
  role    = "roles/cloudsql.instanceUser"
  members = [
    "user:test-user@example.com",
    "serviceAccount:${google_service_account.default.email}"
  ]
}

resource "google_project_iam_binding" "cloud_sql_client" {
  project = data.google_project.project.project_id
  role    = "roles/cloudsql.client"
  members = [
    "user:test-user@example.com",
    "serviceAccount:${google_service_account.default.email}"
  ]
}

Ä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

  1. Rufen Sie Cloud Shell auf.
  2. 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).

  1. 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 als main.tf bezeichnet.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
  4. Speichern Sie die Änderungen.
  5. 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

  1. 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.

  2. 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.

  3. Ö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:

  1. Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument deletion_protection auf false.
    deletion_protection =  "false"
  2. 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
  1. 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:test-user@example.com"
                   "serviceAccount:service1@sql.iam.gserviceaccount.com"
                   "group:example-group@example.com"
      ]
    }
    {
      "role": "roles/cloudsql.client",
      "members": [
                   "user:test-user@example.com"
                   "serviceAccount:service1@sql.iam.gserviceaccount.com"
      ]
    }

IAM-Nutzer Datenbankberechtigungen erteilen

Wenn ein IAM-Nutzer einer Datenbankinstanz hinzugefügt wird, erhält dieser neue Nutzer standardmäßig keine Berechtigungen für Datenbanken.

Mit der GRANT-Anweisung können Sie dem Nutzer Anmeldezugriff oder andere Berechtigungen gewähren. 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 in der mysql-Befehlszeile aus.

Dabei gilt:

  • USERNAME: Bei einem Nutzerkonto ist das die E-Mail-Adresse des IAM-Nutzers mit gekürztem @ und Domainstring. Wenn die E-Mail-Adresse des IAM-Nutzers beispielsweise test-user@example.com lautet, ist der Nutzername test-user. Bei einem Dienstkonto ist dies die E-Mail-Adresse des Dienstkontos ohne die Domain @project-id.iam.gserviceaccount.com.
  • DATABASE_NAME: der Name der Datenbank, die die Tabelle hostet.
  • TABLE_NAME: der Name der Tabelle, auf die Sie dem Nutzer Zugriff gewähren möchten.
  • grant select on DATABASE_NAME.TABLE_NAME to "USERNAME";
    

    Einer Gruppe Datenbankberechtigungen erteilen

    Wenn Sie die IAM-Gruppenauthentifizierung verwenden, gewähren Sie Cloud Identity-Gruppen Datenbankberechtigungen, anstatt einzelnen Nutzern Berechtigungen zu erteilen. Wenn Sie einer Cloud SQL-Instanz eine Cloud Identity-Gruppe hinzufügen, hat die Cloud Identity-Gruppe standardmäßig keine Berechtigungen.

    Mit der GRANT-Anweisung können Sie Nutzern in der Cloud Identity-Gruppe die Datenbankberechtigungen erteilen.

    Ersetzen Sie Folgendes:

    • GROUP_NAME: Der erste Teil der E-Mail-Adresse der Cloud Identity-Gruppe. Beispiel: Für die E-Mail-Adresse example-group@example.com lautet der Name der Cloud Identity-Gruppe example-group.
    • HOSTNAME: Der zweite Teil der E-Mail-Adresse steht für den Hostnamen der Cloud Identity-Gruppe. Bei der E-Mail-Adresse example-group@example.com lautet der Hostname beispielsweise example.com.
    • DATABASE_NAME: der Name der Datenbank, die die Tabelle hostet.
    • TABLE_NAME: der Name der Tabelle, auf die Sie Mitgliedern der Cloud Identity-Gruppe Zugriff gewähren möchten.

    Führen Sie GRANT über die mysql-Befehlszeile aus.

    grant select on DATABASE_NAME.TABLE_NAME to "GROUP_NAME"@"HOSTNAME";
    

    Die Datenbankberechtigungen, die Sie der Cloud Identity-Gruppe gewähren, werden sofort wirksam.

    Weitere Informationen zum Gewähren von Berechtigungen finden Sie auf der Referenzseite zu GRANT in der MySQL-Dokumentation.

    Gruppen, IAM-Nutzer und Dienstkonten ansehen

    Führen Sie den folgenden Befehl aus, um die Cloud Identity-Gruppen aufzurufen, die Ihrer Instanz hinzugefügt wurden.

    Console

    Das Aufrufen von Gruppen auf einer Instanz ist während der Vorschau nicht über die Google Cloud Console möglich.

    gcloud

    Ersetzen Sie INSTANCE_NAME durch den Namen der Instanz mit den Gruppen, 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 aufgelistet.

    • 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 einzelne Nutzerkonten für die IAM-Datenbankauthentifizierung sind, haben den Typ CLOUD_IAM_USER.
    • Dienstkonten, die einzelne Dienstkonten für die IAM-Datenbankauthentifizierung sind, haben den Typ CLOUD_IAM_SERVICE_ACCOUNT.

    IAM-Nutzer oder Dienstkonto aus der Datenbank entfernen

    Wenn Sie ein Nutzer- oder Dienstkonto aus der Datenbank entfernen möchten, löschen Sie das Konto aus der Instanz:

    Console

    1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

      Cloud SQL-Instanzen aufrufen

    2. Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
    3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
    4. Klicken Sie auf für den Nutzer, den Sie entfernen möchten.
    5. Klicken Sie auf Entfernen. Dadurch wird nur der Zugriff auf diese Instanz widerrufen.

    gcloud

    Nutzer entfernen

    Verwenden Sie die E-Mail-Adresse, zum Beispiel test-user@example.com, um den Nutzer zu identifizieren.

    Dabei gilt:

    • USERNAME: Die E-Mail-Adresse ohne das @Domainname.
    • INSTANCE_NAME: Der Name der Instanz, aus der Sie den Nutzer entfernen möchten.
    gcloud sql users delete USERNAME \
    --instance=INSTANCE_NAME
    

    Löschen Sie das Dienstkonto

    Dabei gilt:

    • SERVICE_ACCT: durch 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"
    }
    

    Nutzer oder Dienstkonten der IAM-Gruppenauthentifizierung löschen

    Sie können die gcloud CLI nicht verwenden, um Nutzer- oder Dienstkonten zu löschen, die mit der IAM-Gruppenauthentifizierung erstellt wurden. Cloud SQL erstellt diese Konten automatisch, nachdem sich der Nutzer oder das Dienstkonto zum ersten Mal angemeldet hat.

    Die einzige Möglichkeit zum Löschen dieser Konten ist die Verwendung des MySQL-Clients mit einem Nutzer, der Superuser-Berechtigungen hat.

    Informationen zum Erstellen einer Abfrage zum Löschen von Nutzern oder Dienstkonten finden Sie in der MySQL-Dokumentation.

    Gruppe aus einer Instanz löschen

    Wenn Sie eine Cloud Identity-Gruppe aus einer Instanz löschen, verlieren alle Nutzer und Dienstkonten, die zur Cloud Identity-Gruppe gehören, alle Datenbankberechtigungen, die der Cloud Identity-Gruppe gewährt wurden. Die Nutzer und Dienstkonten, die zur Cloud Identity-Gruppe gehören, können sich weiterhin anmelden, bis die IAM-Anmeldeberechtigungen aus der Gruppe entfernt wurden.

    Console

    Das Löschen von Gruppen aus einer Instanz ist während der Vorschau nicht über die Google Cloud Console möglich.

    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. Beispiel: Für die E-Mail-Adresse example-group@example.com lautet der Name der Cloud Identity-Gruppe example-group.
    • HOSTNAME: Der zweite Teil der E-Mail-Adresse stellt den Hostnamen der Cloud Identity-Gruppe dar. Beispiel: Bei der E-Mail-Adresse example-group@example.com lautet der Hostname example.com.
    • 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 \
       --host=HOSTNAME \
       --instance=INSTANCE_NAME
    

    IAM-Anmeldeberechtigungen aus einer Gruppe entfernen

    Wenn Sie die Rolle cloudsql.instanceUser aus einer Cloud Identity-Gruppe widerrufen, können sich alle Mitglieder der Gruppe nicht mehr bei einer Cloud SQL-Instanz im Projekt anmelden. Nutzer oder Dienstkonten können sich nur bei Instanzen anmelden, wenn sie Mitglieder einer anderen Cloud Identity-Gruppe sind, für die weiterhin Anmeldeberechtigungen gelten.

    Informationen zum Widerrufen einer Rolle für eine Cloud Identity-Gruppe finden Sie unter Einzelne Rolle widerrufen.

    Nutzer aus einer Gruppe entfernen

    Nutzer können aus einer Cloud Identity-Gruppe entfernt werden.

    Nachdem die Entfernung über IAM übertragen wurde, kann sich der Nutzer möglicherweise weiterhin bei einer Datenbank anmelden, wenn der Nutzer die entsprechenden IAM-Berechtigungen hat. Wenn sich Nutzer wieder anmelden, haben sie jedoch keine Datenbankberechtigungen mehr, die zur Cloud Identity-Gruppe gehören, aus der sie entfernt wurden.

    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 in Audit-Logs die Aktivitäten und Anmeldungen für einzelne Nutzer- und Dienstkonten angezeigt. Die IAM-Gruppenauthentifizierung befindet sich in der Vorschau.

    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 MySQL aus Sicherheitsgründen eine kurz gefasste Fehlermeldung zurück. Beispiel:

    $MYSQL_PWD=`gcloud-access-token mysql` --enable-cleartext-plugin --ssl-ca=server-ca.pem
    --ssl-cert=client-cert.pem --ssl-key=client-key.pem   --host=ip_address --user=testuser
    Access denied for user 'testuser'@'...' (using password: NO)
    

    Weitere Einzelheiten zum Fehler können Sie den MySQL-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. Prüfen Sie bei einem IAM-Nutzer, ob der Nutzername der Datenbank die E-Mail-Adresse des IAM-Nutzers ohne @ und Domain ist. Prüfen Sie bei einem Dienstkonto, ob es die E-Mail-Adresse des Dienstkontos ohne das @project-id.iam.gserviceaccount.com 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 MySQL 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 mit IAM-Gruppenauthentifizierung

    In diesem Abschnitt werden Szenarien der Fehlerbehebung für die IAM-Gruppenauthentifizierung aufgeführt.

    Fehler beim Hinzufügen einer Gruppe zu einer Datenbank

    Wenn Sie versuchen, einer Gruppe eine Gruppe hinzuzufügen, wird möglicherweise 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 in der Cloud Identity-Übersicht.

    Ein vorhandener IAM-Nutzer oder ein Dienstkonto übernimmt nicht die Datenbankberechtigungen, die ihrer Gruppe gewährt wurden.

    Wenn ein vorhandener IAM-Nutzer oder ein Dienstkonto nicht die richtigen Datenbankberechtigungen der Gruppe übernimmt, führen Sie die folgenden Schritte aus:

    1. Öffnen Sie in der Google Cloud Console die Seite IAM.

      IAM aufrufen

      Prüfen Sie, ob das Konto Mitglied der in die Cloud SQL-Instanz eingefügten Gruppe ist.

    2. Listen Sie die Nutzer und Dienstkonten auf der Instanz auf.

      gcloud sql users list --instance=INSTANCE_NAME
      

      Prüfen Sie in der Ausgabe, ob der Nutzer oder das Dienstkonto als CLOUD_IAM_USER oder CLOUD_IAM_SERVICE_ACCOUNT aufgeführt ist.

    3. Wenn das Nutzer- oder Dienstkonto als CLOUD_IAM_USER oder CLOUD_IAM_SERVICE_ACCOUNT aufgeführt ist, entfernen Sie das Konto aus der Instanz. Das Konto, das Sie entfernen, ist ein einzelnes IAM-Konto, das die Datenbankberechtigungen der Gruppe nicht übernimmt.

    4. Melden Sie sich noch einmal mit dem Nutzer- oder Dienstkonto an der Instanz an.

      Wenn Sie sich noch einmal in der Instanz anmelden, wird das Konto mit dem richtigen Kontotyp (CLOUD_IAM_GROUP_USER oder CLOUD_IAM_GROUP_SERVICE_ACCOUNT) neu erstellt.

    Nächste Schritte