Nutzer mit IAM-Datenbankauthentifizierung verwalten

Auf dieser Seite wird beschrieben, wie Sie Nutzer, Dienstkonten und Gruppen zu einer Cloud SQL-Instanz hinzufügen und verwalten, die die IAM-Datenbankauthentifizierung verwendet.

Weitere Informationen zur Einbindung von IAM finden Sie unter IAM-Authentifizierung.

Hinweis

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Install the gcloud CLI.

  4. Configure the gcloud CLI to use your federated identity.

    For more information, see Sign in to the gcloud CLI with your federated identity.

  5. To initialize the gcloud CLI, run the following command:

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

    Zur IAM-Seite

  7. Aktivieren Sie die IAM-Datenbankauthentifizierung für Ihre Cloud SQL-Instanz.
  8. 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 ihr 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 Groups in der Cloud de Confiance Console erstellen und verwalten.
    • Sie können die Rolle für ein Projekt mit Cloud SQL-Instanzen über die IAM-Seite der Cloud de Confiance Console, die gcloud CLI, Terraform oder die Cloud SQL Admin API zuweisen. Weitere Informationen finden Sie unter IAM-Richtlinienbindung zu einem Nutzer, Dienstkonto oder einer Gruppe hinzufügen.
  9. Wenn Sie ein Dienstkonto verwenden, achten Sie darauf, dass Sie für jeden Dienst, der Zugriff auf Datenbanken im Projekt benötigt, ein Dienstkonto hinzugefügt haben.
  10. Weitere Informationen zum Erstellen von Dienstkonten finden Sie unter Dienstkonten erstellen.

IAM-Richtlinienbindung zu Nutzern, Dienstkonten oder Gruppen 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. Sie muss vollständig kleingeschrieben sein und in Anführungszeichen gesetzt werden, da sie Sonderzeichen (@ und .) enthält.

Console

  1. Rufen Sie in der Cloud de Confiance Console die Seite Dienstkonten auf.

    IAM aufrufen

  2. Klicken Sie auf Hinzufügen.
  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 enthalten.
  4. Wechseln Sie unter Rolle zu Cloud SQL und wählen Sie Cloud SQL-Instanznutzer aus.
  5. Optional: Wenn Sie eine Verbindung über den Cloud SQL Auth-Proxy oder die Cloud SQL Language Connectors herstellen möchten, wählen Sie auch 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 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 aus.

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

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

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 Cloud de Confiance -Projekt anzuwenden.

Cloud Shell vorbereiten

  1. Rufen Sie Cloud Shell auf.
  2. Legen Sie das Cloud de Confiance -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 Cloud de Confiance -Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Cloud de Confiance 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

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 = [
    "group:example-group@example.com"
  ]
}

Änderungen anwenden

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Cloud de Confiance -Projekt anzuwenden.

Cloud Shell vorbereiten

  1. Rufen Sie Cloud Shell auf.
  2. Legen Sie das Cloud de Confiance -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 Cloud de Confiance -Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Cloud de Confiance 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:example-user@example.com"
                   "serviceAccount:service1@sql.s3ns.iam.gserviceaccount.com"
                   "group:example-group@example.com"
      ]
    }
    {
      "role": "roles/cloudsql.client",
      "members": [
                   "user:example-user@example.com"
                   "serviceAccount:service1@sql.s3ns.iam.gserviceaccount.com"
      ]
    }

Einzelnen IAM-Nutzer oder einzelnes Dienstkonto zu einer Cloud SQL-Instanz hinzufügen

Sie müssen für jeden einzelnen IAM-Nutzer oder jedes Dienstkonto, das Sie der Cloud SQL-Instanz hinzufügen, ein neues Nutzerkonto erstellen, um auf Datenbanken zuzugreifen. Wenn Sie eine IAM-Gruppe hinzufügen, müssen Sie 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.

Wenn Sie die REST API verwenden, müssen Sie den Nutzernamen in Anführungszeichen setzen, da Dienstkontonutzernamen Sonderzeichen (@ und .) enthalten. Bei Dienstkonten hat der Nutzername das Format service-account-name@project-id.iam.

Wenn Sie einen einzelnen IAM-Nutzer oder ein Dienstkonto hinzufügen möchten, fügen Sie ein neues Nutzerkonto hinzu und wählen Sie IAM als Authentifizierungsmethode aus:

Console

  1. Rufen Sie in der Cloud de Confiance Console die Seite Cloud SQL-Instanzen auf.

    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 Hinzufügen. Das Nutzer- oder Dienstkonto ist jetzt in der Nutzerkontoliste enthalten.
  8. Wenn dem Nutzer nach der Erstellung des Nutzerkontos nicht die IAM-Rolle cloudsql.instanceUser zugewiesen ist, wird 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. 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

Sie können eine oder mehrere Datenbankrollen zuweisen, um dem Nutzer beim Erstellen des Nutzerkontos Datenbankberechtigungen zu gewähren.

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

Sie können dem Konto beim Erstellen des Dienstkontos eine oder mehrere Datenbankrollen zuweisen, um ihm Datenbankberechtigungen zu erteilen.

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             = "postgres-db-auth-instance-name-test"
  region           = "us-west4"
  database_version = "POSTGRES_14"
  settings {
    tier = "db-custom-2-7680"
    database_flags {
      name  = "cloudsql.iam_authentication"
      value = "on"
    }
  }
}

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

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

# Create a new IAM service account

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

resource "google_sql_user" "iam_service_account_user" {
  # Note: for PostgreSQL only, Google Cloud requires that you omit the
  # ".gserviceaccount.com" suffix
  # from the service account email due to length limits on database usernames.
  name     = trimsuffix(google_service_account.default.email, ".gserviceaccount.com")
  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 Cloud de Confiance -Projekt anzuwenden.

Cloud Shell vorbereiten

  1. Rufen Sie Cloud Shell auf.
  2. Legen Sie das Cloud de Confiance -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 Cloud de Confiance -Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Cloud de Confiance 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: 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"
}

IAM-Gruppe zu einer Cloud SQL-Instanz hinzufügen

Wenn Sie die IAM-Gruppenauthentifizierung verwenden und einer Cloud SQL-Instanz eine IAM-Gruppe hinzufügen möchten, verwenden Sie eines der Verfahren in diesem Abschnitt. Nachdem Sie die IAM-Gruppe hinzugefügt haben, müssen Sie die einzelnen Gruppenmitglieder nicht mehr der Instanz hinzufügen. Weitere Informationen finden Sie unter Mitglieder einer Gruppe automatisch einer Cloud SQL-Instanz hinzufügen.

Auf einer Cloud SQL-Instanz können maximal 200 IAM-Gruppen vorhanden sein. Inaktive Gruppen werden auf dieses Limit angerechnet.

Für IAM-Gruppennamen gelten dieselben Längenbeschränkungen wie für PostgreSQL-IDs. Sie dürfen maximal 63 Zeichen lang sein.

Wenn Sie eine IAM-Gruppe mit einem Namen haben, der die Längenbeschränkung für Nutzernamen einer Datenbank-Engine überschreitet, können Sie sie trotzdem für die IAM-Gruppenauthentifizierung verwenden, indem Sie sie unter einer übergeordneten IAM-Gruppe verschachteln, deren Name der Längenbeschränkung entspricht. Die übergeordnete IAM-Gruppe muss der Instanz hinzugefügt werden, bevor die verschachtelte Gruppe verwendet werden kann.

Console

  1. Rufen Sie in der Cloud de Confiance Console die Seite Cloud SQL-Instanzen auf.

    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 der Gruppe ein, die Sie hinzufügen möchten.
  7. Klicken Sie auf Hinzufügen. Die Gruppe ist jetzt in der Nutzerliste enthalten.
  8. Wenn der Gruppe nach dem Erstellen des Nutzerkontos nicht die IAM-Rolle cloudsql.instanceUser zugewiesen ist, wird neben der Gruppe das Symbol Dreieck 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

Sie können eine oder mehrere Datenbankrollen zuweisen, um Mitgliedern der Gruppe beim Erstellen der Gruppe Datenbankberechtigungen zu gewähren.

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             = "postgres-iam-group-auth-instance-name"
  region           = "us-west4"
  database_version = "POSTGRES_16"
  settings {
    tier = "db-custom-2-7680"
    database_flags {
      name  = "cloudsql.iam_authentication"
      value = "on"
    }
  }
}

# Specify the email address of the Cloud Identity group to add to the instance
# This resource does not create a Cloud Identity group; the group must
# already exist

resource "google_sql_user" "iam_group" {
  name     = "example-group@example.com"
  instance = google_sql_database_instance.default.name
  type     = "CLOUD_IAM_GROUP"
}

data "google_project" "project" {
}

resource "google_project_iam_binding" "cloud_sql_user" {
  project = data.google_project.project.project_id
  role    = "roles/cloudsql.instanceUser"
  members = [
    "group:example-group@example.com"
  ]
}

Änderungen anwenden

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Cloud de Confiance -Projekt anzuwenden.

Cloud Shell vorbereiten

  1. Rufen Sie Cloud Shell auf.
  2. Legen Sie das Cloud de Confiance -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 Cloud de Confiance -Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Cloud de Confiance 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

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 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, zu 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 eine JSON-Antwort ähnlich wie diese erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "DONE",
  "user": "example-group@example.com",
  "insertTime": "2023-12-07T22:44:16.656Z",
  "startTime": "2023-12-07T22:44:16.686Z",
  "endTime": "2023-12-07T22:44:20.437Z",
  "operationType": "CREATE_USER",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Mitglieder einer Gruppe automatisch einer Cloud SQL-Instanz hinzufügen

Wenn Sie einer Cloud SQL-Instanz eine IAM-Gruppe hinzufügen, übernehmen alle Mitglieder (Nutzer und Dienstkonten) dieser Gruppe die IAM-Berechtigungen zur Authentifizierung bei der Instanz. Sie müssen das Gruppenmitglied nicht einzeln zur Cloud SQL-Instanz hinzufügen. Nachdem sich ein Gruppenmitglied zum ersten Mal erfolgreich bei der primären Instanz angemeldet und authentifiziert hat, erstellt Cloud SQL ein Gruppennutzerkonto oder ein Gruppendienstkonto für dieses Gruppenmitglied. Sie können das Gruppenmitglied auf der Instanz sehen, nachdem es sich zum ersten Mal erfolgreich angemeldet hat.

Solange die Failover-Instanz die entsprechenden Gruppen hat, können sich IAM-Gruppennutzer weiterhin anmelden und erstellt werden.

Weitere Informationen zur Anmeldung finden Sie unter Mit IAM-Datenbankauthentifizierung anmelden.

Vorhandene IAM-Nutzer zur Verwendung der IAM-Gruppenauthentifizierung migrieren

Vorhandene IAM-Nutzer vom Typ CLOUD_IAM_USER oder CLOUD_IAM_SERVICE_ACCOUNT verwenden keine IAM-Gruppenauthentifizierung.

Sie können diese Nutzer zur Verwendung der IAM-Gruppenauthentifizierung migrieren.

  1. Fügen Sie diese Nutzer einer Gruppe hinzu.

  2. Fügen Sie die Gruppe Ihrer Instanz hinzu.

  3. Weisen Sie der Gruppe ausreichende IAM-Berechtigungen zu, damit sich Gruppenmitglieder mit Ihren Instanzen verbinden können. Es kann einige Zeit dauern, bis diese Änderungen übernommen werden. Weitere Informationen zu Weitergabezeiten finden Sie unter Zugriffsänderungsweitergabe.

  4. Weisen Sie der Gruppe die Datenbankberechtigungen zu, die den IAM-Nutzern zugewiesen sind, die Sie migrieren.

  5. Nachdem die Änderungen an der Gruppenmitgliedschaft 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, übernehmen 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 als Gruppenmitglied in Cloud Identity hinzu. Sie müssen Gruppenmitglieder nicht separat auf Cloud SQL-Instanzebene entfernen oder hinzufügen, da Änderungen an der Gruppenmitgliedschaft automatisch an die Cloud SQL-Instanz weitergegeben werden. Änderungen an der Gruppenmitgliedschaft, z. B. das Hinzufügen oder Entfernen eines Mitglieds, dauern etwa 15 Minuten. Die 15-minütige Verzögerung bei der Weitergabe von Cloud SQL erfolgt parallel zur Zeit, die für die Weitergabe von IAM-Änderungen erforderlich ist.

Das Gewähren oder Widerrufen von Datenbankberechtigungen für eine IAM-Gruppe in PostgreSQL wird sofort wirksam. Wenn Sie beispielsweise den Zugriff auf eine Tabelle widerrufen, verlieren Mitglieder dieser IAM-Gruppe sofort den Zugriff auf diese Tabelle.

Ein Nutzer oder Dienstkonto kann Mitglied mehrerer IAM-Gruppen sein. Wenn ein Nutzer oder ein Dienstkonto zu mehreren IAM-Gruppen in einer Instanz gehört, hat er alle IAM-Berechtigungen und Datenbankberechtigungen, die in diesen IAM-Gruppen kombiniert sind.

Wenn Sie der IAM-Gruppe in Cloud Identity ein neues Mitglied (Nutzer oder Dienstkonto) hinzufügen und sich dieses zum ersten Mal erfolgreich bei der Instanz anmeldet, übernimmt es automatisch die der Gruppe zugewiesenen Datenbankberechtigungen.

Einzelnem IAM-Nutzer oder Dienstkonto 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. Sie können nur Abfragen für Datenbankobjekte ausführen, für die PUBLIC Zugriff gewährt wurde.

Wenn sie zusätzlichen Zugriff benötigen, können mit der Anweisung GRANT 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 gewähren. Wenn Sie einer Cloud SQL-Instanz eine IAM-Gruppe hinzufügen, hat die Gruppe standardmäßig keine Datenbankberechtigungen. Sie können der Gruppe einzelne Datenbankberechtigungen zuweisen oder eine Datenbankrolle erstellen und dann die Datenbankrolle der IAM-Gruppe zuweisen.

Wenn Sie einer IAM-Gruppe einzelne Datenbankberechtigungen erteilen möchten, verwenden Sie die Anweisung GRANT. Nachdem sie sich zum ersten Mal in der Cloud SQL-Instanz angemeldet haben, übernehmen 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 @ und des Domainnamens. Wenn die E-Mail-Adresse der IAM-Gruppe beispielsweise example-group@example.com lautet, ist der Gruppenname example-group@example.com. Da der String Sonderzeichen (@ und .) enthält, muss der Gruppenname in Anführungszeichen gesetzt werden.
  • TABLE_NAME: der Name der Tabelle, auf die Sie dem Nutzer Zugriff gewähren möchten.

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

grant select on TABLE_NAME to "GROUP_NAME";

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

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

Datenbankrollen beim Hinzufügen eines IAM-Kontos zu einer Instanz zuweisen

Informationen zum Erstellen einer benutzerdefinierten Datenbankrolle in PostgreSQL finden Sie unter Datenbankrollen.

gcloud

Nutzerkonto erstellen

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

gcloud sql users create USERNAME \
  --instance=INSTANCE_NAME \
  --type=cloud_iam_user \
  --database-roles=ROLE_1, ROLE_2

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.
  • ROLE_1, ROLE_2, ..., ROLE_N: Die Datenbankrolle oder -rollen, die dem Nutzer zugewiesen werden sollen.

Dienstkonto erstellen

gcloud sql users create SERVICE_ACCOUNT \
  --instance=INSTANCE_NAME \
  --type=cloud_iam_service_account \
  --database-roles=ROLE_1, ROLE_2

Ersetzen Sie Folgendes:

  • SERVICE_ACCOUNT: die E-Mail-Adresse des Dienstkontos.
  • INSTANCE_NAME: durch den Namen der Instanz, auf die das Dienstkonto Zugriff erhalten soll.
  • ROLE_1, ROLE_2, ..., ROLE_N: Die Datenbankrolle oder -rollen, die dem Dienstkonto zugewiesen werden sollen.

Gruppe erstellen

gcloud sql users create GROUP_EMAIL_ADDRESS \
  --instance=INSTANCE_NAME \
  --type=cloud_iam_group \
  --database-roles=ROLE_1, ROLE_2

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.
  • ROLE_1, ROLE_2, ..., ROLE_N: Die Datenbankrolle oder -rollen, die dem Dienstkonto zugewiesen werden sollen.

Terraform

Verwenden Sie eine Terraform-Ressource, um IAM-Nutzer- und -Dienstkonten in einer Instanz mit aktivierter IAM-Datenbankauthentifizierung hinzuzufügen.

resource "google_sql_user" "iam_user" {
  name     = "test-user@example.com"
  instance = google_sql_database_instance.default.name
  type     = "CLOUD_IAM_USER"
  # Specify the list of database roles to be granted to the user
  # The database roles must exist in the database.
  database_roles = ["cloudsqlsuperuser"]
}

Änderungen anwenden

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Cloud de Confiance -Projekt anzuwenden.

Cloud Shell vorbereiten

  1. Rufen Sie Cloud Shell auf.
  2. Legen Sie das Cloud de Confiance -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 Cloud de Confiance -Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Cloud de Confiance 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

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
  • USER_TYPE: der Cloud SQL-Nutzertyp, einer der folgenden IAM-Nutzertypen:
    • CLOUD_IAM_USER
    • CLOUD_IAM_SERVICE_ACCOUNT
    • CLOUD_IAM_GROUP
  • ROLE_1, ROLE_2 ..., ROLE_N: Die Datenbankrolle oder -rollen, die dem IAM-Nutzer, dem Dienstkonto oder der Gruppe zugewiesen werden sollen.

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users

JSON-Text anfordern:

{
  "name": "USERNAME",
  "type": "USER_TYPE",
  "databaseRoles": [
    "ROLE_1",
    "ROLE_2"
  ]
}

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": "2025-10-07T22:44:16.656Z",
  "startTime": "2025-10-07T22:44:16.686Z",
  "endTime": "2025-10-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, zu der Sie den Nutzer hinzufügen
  • USERNAME: die E-Mail-Adresse des Nutzers
  • USER_TYPE: der Cloud SQL-Nutzertyp, einer der folgenden IAM-Nutzertypen:
    • CLOUD_IAM_USER
    • CLOUD_IAM_SERVICE_ACCOUNT
    • CLOUD_IAM_GROUP
  • ROLE_1, ROLE_2 ..., ROLE_N: Die Datenbankrolle oder -rollen, die dem IAM-Nutzer, dem Dienstkonto oder der Gruppe zugewiesen werden sollen.

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",
  "databaseRoles": [
    "ROLE_1",
    "ROLE_2"
  ]
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2025-10-07T22:44:16.656Z",
  "startTime": "2025-10-07T22:44:16.686Z",
  "endTime": "2025-10-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"
}

Datenbankrollen beim Aktualisieren eines IAM-Kontos in einer Instanz zuweisen oder widerrufen

Nachdem Sie einer Cloud SQL-Instanz einen einzelnen IAM-Nutzer, ein Dienstkonto oder eine IAM-Gruppe hinzugefügt haben, können Sie die zugewiesenen Datenbankrollen ändern. Sie können Datenbankrollen zuweisen, die Sie für Ihre Datenbank definiert haben. Die von Ihnen zugewiesenen Datenbankrollen werden allen Rollen hinzugefügt, die dem Konto bereits zugewiesen sind. Wenn Sie Datenbankrollen ersetzen möchten, müssen Sie die Datenbankrollen mit dem Flag --revoke-existing-roles widerrufen.

Bevor Sie einem Nutzer in Cloud SQL for PostgreSQL eine Rolle zuweisen können, muss die Rolle bereits vorhanden sein. Wenn Sie eine benutzerdefinierte Rolle verwenden, erstellen Sie die Rolle zuerst in der PostgreSQL-Datenbank.

Informationen zum Erstellen einer Rolle in PostgreSQL finden Sie unter Datenbankrollen.

Sie können einem vorhandenen IAM-Nutzer keine der Systemrollen außer der Datenbankrolle cloudsqlsuperuser zuweisen.

gcloud

Nutzerkonto aktualisieren

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

Verwenden Sie den folgenden Befehl, um einem Nutzerkonto Datenbankrollen hinzuzufügen:

gcloud sql users assign-roles USERNAME \
  --instance=INSTANCE_NAME \
  --type=cloud_iam_user \
  --database-roles=ROLE_1, ROLE_2

Verwenden Sie den folgenden Befehl, um die Datenbankrollen für ein Nutzerkonto zu ersetzen:

gcloud sql users assign-roles USERNAME \
  --instance=INSTANCE_NAME \
  --type=cloud_iam_user \
  --database-roles=ROLE_1, ROLE_2
  --revoke-existing-roles

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.
  • ROLE_1, ROLE_2, ..., ROLE_N: Die Datenbankrolle oder -rollen, die dem Nutzer zugewiesen werden sollen.

Dienstkonto aktualisieren

Verwenden Sie den folgenden Befehl, um einem Dienstkonto Datenbankrollen hinzuzufügen:

gcloud sql users assign-roles SERVICE_ACCT \
  --instance=INSTANCE_NAME \
  --type=cloud_iam_service_account \
  --database-roles=ROLE_1, ROLE_2

Verwenden Sie den folgenden Befehl, um Datenbankrollen für ein Dienstkonto zu ersetzen:

gcloud sql users assign-roles SERVICE_ACCT \
  --instance=INSTANCE_NAME \
  --type=cloud_iam_service_account \
  --database-roles=ROLE_1, ROLE_2
  --revoke-existing-roles

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.
  • ROLE_1, ROLE_2, ..., ROLE_N: Die Datenbankrolle oder -rollen, die dem Dienstkonto zugewiesen werden sollen.

Gruppe aktualisieren

Verwenden Sie den folgenden Befehl, um Datenbankrollen für eine Gruppe hinzuzufügen:
gcloud sql users assign-roles GROUP_EMAIL_ADDRESS \
  --instance=INSTANCE_NAME \
  --type=cloud_iam_group \
  --database-roles=ROLE_1, ROLE_2

Verwenden Sie den folgenden Befehl, um Datenbankrollen für eine Gruppe zu ersetzen:

gcloud sql users assign-roles GROUP_EMAIL_ADDRESS \
  --instance=INSTANCE_NAME \
  --type=cloud_iam_group \
  --database-roles=ROLE_1, ROLE_2
  --revoke-existing-roles

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.
  • ROLE_1, ROLE_2, ...ROLE_N: Die Datenbankrolle oder -rollen, die der Gruppe zugewiesen werden sollen.

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, zu der Sie den Nutzer hinzufügen
  • USERNAME: die E-Mail-Adresse des Nutzers
  • USER_TYPE: der Cloud SQL-Nutzertyp, einer der folgenden IAM-Nutzertypen:
    • CLOUD_IAM_USER
    • CLOUD_IAM_SERVICE_ACCOUNT
    • CLOUD_IAM_GROUP
  • ROLE_1, ROLE_2 ..., ROLE_N: Die Datenbankrolle oder -rollen, die dem IAM-Nutzer, dem Dienstkonto oder der Gruppe zugewiesen werden sollen.
  • REVOKE_EXISTING_ROLES: Legen Sie true fest, um die vorhandenen Rollen des Nutzers zu widerrufen. Legen Sie false fest, um die vorhandenen Rollen des Nutzers beizubehalten.

HTTP-Methode und URL:

PUT https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users

JSON-Text anfordern:

{
  "name": "USERNAME",
  "type": "USER_TYPE",
  "databaseRoles": [
    "ROLE_1",
    "ROLE_2"
  ],
  "revokeExistingRoles": REVOKE_EXISTING_ROLES
}

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": "2025-10-07T22:44:16.656Z",
  "startTime": "2025-10-07T22:44:16.686Z",
  "endTime": "2025-10-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, zu der Sie den Nutzer hinzufügen
  • USERNAME: die E-Mail-Adresse des Nutzers
  • USER_TYPE: der Cloud SQL-Nutzertyp, der einer der folgenden IAM-Nutzertypen sein kann:
    • CLOUD_IAM_USER
    • CLOUD_IAM_SERVICE_ACCOUNT
    • CLOUD_IAM_GROUP
  • ROLE_1, ROLE_2 ..., ROLE_N: Die Datenbankrolle oder -rollen, die dem IAM-Nutzer, dem Dienstkonto oder der Gruppe zugewiesen werden sollen.
  • REVOKE_EXISTING_ROLES: Legen Sie true fest, um die vorhandenen Rollen des Nutzers zu widerrufen. Legen Sie false fest, um die vorhandenen Rollen des Nutzers beizubehalten.

HTTP-Methode und URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users

JSON-Text anfordern:

{
  "name": "USERNAME",
  "type": "USER_TYPE",
  "databaseRoles": [
    "ROLE_1",
    "ROLE_2"
  ],
  "revokeExistingRoles": REVOKE_EXISTING_ROLES
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2025-10-07T22:44:16.656Z",
  "startTime": "2025-10-07T22:44:16.686Z",
  "endTime": "2025-10-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"
}

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

  1. Rufen Sie in der Cloud de Confiance Console die Seite Cloud SQL-Instanzen auf.

    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. Auf der Seite wird eine Liste der IAM-Nutzer, Dienstkonten und Cloud Identity-Gruppen angezeigt, die Ihrer Instanz hinzugefügt wurden.
  4. 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 Spalte IAM_STATUS wird angezeigt, ob Gruppen aktiv oder inaktiv sind. Eine ACTIVE-IAM-Gruppe kann für die IAM-Gruppenauthentifizierung verwendet werden. Eine INACTIVE-IAM-Gruppe kann nicht für die IAM-Gruppenauthentifizierung verwendet werden.

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 IAM-Datenbankauthentifizierungs-Nutzerkonten sind, haben den Typ CLOUD_IAM_USER.
  • Dienstkonten, die einzelne 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",
     "iamStatus": "IAM_STATUS_UNSPECIFIED"
    },
    {
      "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",
      "iamStatus": "IAM_STATUS_UNSPECIFIED"
     },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "postgres",
      "host": "",
      "instance": "INSTANCE_ID",
      "project": "PROJECT_ID",
      "iamStatus": "IAM_STATUS_UNSPECIFIED"
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "example-user@example.com",
      "host": "",
      "instance": "INSTANCE_ID",
      "project": "PROJECT_ID",
      "type": "CLOUD_IAM_USER",
      "iamStatus": "IAM_STATUS_UNSPECIFIED"
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "another-example-user@example.com",
      "host": "",
      "instance": "INSTANCE_ID",
      "project": "PROJECT_ID",
      "type": "CLOUD_IAM_GROUP_USER",
      "iamStatus": "IAM_STATUS_UNSPECIFIED"
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "example-group@example.com",
      "host": "",
      "instance": "INSTANCE_ID",
      "project": "PROJECT_ID",
      "type": "CLOUD_IAM_GROUP",
      "iamStatus": "ACTIVE"
    }
  ]
}

Gruppen haben den Nutzertyp CLOUD_IAM_GROUP.

Im Feld iamStatus wird angezeigt, ob Gruppen aktiv oder inaktiv sind. Eine ACTIVE-IAM-Gruppe kann für die IAM-Gruppenauthentifizierung verwendet werden. Eine INACTIVE-IAM-Gruppe wird nicht für die IAM-Gruppenauthentifizierung verwendet.

Der Wert IAM_STATUS_UNSPECIFIED für das Feld iamStatus bedeutet, dass der IAM-Status für diesen bestimmten Nutzertyp nicht relevant ist.

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 IAM-Datenbankauthentifizierungs-Nutzerkonten sind, haben den Typ CLOUD_IAM_USER.
  • Dienstkonten, die einzelne 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: die Projekt-ID
  • INSTANCE_ID: die Instanz-ID

HTTP-Methode und URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/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",
     "iamStatus": "IAM_STATUS_UNSPECIFIED"
    },
    {
      "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",
      "iamStatus": "IAM_STATUS_UNSPECIFIED"
     },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "postgres",
      "host": "",
      "instance": "INSTANCE_ID",
      "project": "PROJECT_ID",
      "iamStatus": "IAM_STATUS_UNSPECIFIED"
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "example-user@example.com",
      "host": "",
      "instance": "INSTANCE_ID",
      "project": "PROJECT_ID",
      "type": "CLOUD_IAM_USER",
      "iamStatus": "IAM_STATUS_UNSPECIFIED"
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "another-example-user@example.com",
      "host": "",
      "instance": "INSTANCE_ID",
      "project": "PROJECT_ID",
      "type": "CLOUD_IAM_GROUP_USER",
      "iamStatus": "IAM_STATUS_UNSPECIFIED"
    },
    {
      "kind": "sql#user",
      "etag": "--redacted--",
      "name": "example-group@example.com",
      "host": "",
      "instance": "INSTANCE_ID",
      "project": "PROJECT_ID",
      "type": "CLOUD_IAM_GROUP",
      "iamStatus": "ACTIVE"
    }
  ]
}

Gruppen haben den Nutzertyp CLOUD_IAM_GROUP.

Im Feld iamStatus wird angezeigt, ob Gruppen aktiv oder inaktiv sind. Eine ACTIVE-IAM-Gruppe kann für die IAM-Gruppenauthentifizierung verwendet werden. Eine INACTIVE-IAM-Gruppe kann nicht für die IAM-Gruppenauthentifizierung verwendet werden.

Der Wert IAM_STATUS_UNSPECIFIED für das Feld iamStatus bedeutet, dass der IAM-Status für diesen bestimmten Nutzertyp nicht relevant ist.

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

Einzelnen IAM-Nutzer oder einzelnes Dienstkonto aus einer Cloud SQL-Instanz entfernen

Wenn Sie einen einzelnen Nutzer oder ein Dienstkonto, das nicht Mitglied einer Gruppe ist, aus der Cloud SQL-Instanz entfernen möchten, löschen Sie dieses Konto mit dem folgenden Befehl:

Console

  1. Rufen Sie in der Cloud de Confiance Console die Seite Cloud SQL-Instanzen auf.

    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 widerrufen

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
  • Manuelles Entfernen

Automatische Entfernung

Wenn Sie ein IAM-Gruppenmitglied entfernen möchten, müssen Sie seine Mitgliedschaft aus den entsprechenden IAM-Gruppen in Cloud Identity entfernen. Nachdem die IAM-Gruppennutzer die Mitgliedschaft in allen entsprechenden Gruppen in Cloud Identity verloren haben, entfernt Cloud SQL diese Gruppennutzer automatisch aus der Instanz. Die einzige Ausnahme von dieser Entfernung sind Gruppennutzer, die Datenbankobjekte besitzen. Diese Gruppennutzer müssen manuell entfernt werden.

Änderungen an der Gruppenmitgliedschaft, z. B. das Hinzufügen oder Entfernen eines Mitglieds, dauern etwa 15 Minuten. Die 15-minütige Verzögerung bei der Weitergabe von Cloud SQL erfolgt parallel zur Zeit, die für die Weitergabe von IAM-Änderungen erforderlich ist.

Manuelles Entfernen

Wenn ein IAM-Gruppennutzer nicht automatisch entfernt werden kann, können Sie ihn manuell entfernen. Sie können einen IAM-Gruppennutzer nicht manuell mit der gcloud CLI, derCloud de Confiance Console, Terraform oder der Cloud SQL Admin API aus einer Cloud SQL-Instanz entfernen. Stattdessen können Datenbanknutzer mit Superuser-Berechtigungen IAM-Gruppennutzer manuell aus der Cloud SQL-Instanz löschen. Dazu verwenden sie eine DROP USER-Anweisung von einem PostgreSQL-Client.

Nachdem Sie einen IAM-Gruppennutzer manuell aus der Cloud SQL-Instanz entfernt haben, müssen Sie ihn auch aus der IAM-Gruppe in Cloud Identity entfernen, um weitere Anmeldungen bei der Cloud SQL-Instanz zu verhindern.

Domainnamen für vorhandene IAM-Gruppenmitglieder in einer Cloud SQL-Instanz ändern

Wenn Sie den Domainnamen einer Organisation in Cloud Identity ändern, werden die Änderungen nicht automatisch auf IAM-Gruppenmitglieder in der Cloud SQL-Instanz angewendet.

Wenn Sie beispielsweise user@example.com in Cloud Identity in user@new-example.com ändern, bleibt user@example.com in der Cloud SQL-Instanz erhalten, obwohl der Domainname in Cloud Identity geändert wurde.

So ändern Sie den Domainnamen der IAM-Gruppenmitglieder:

  1. Verwenden Sie das Verfahren zum automatischen Entfernen von IAM-Gruppenmitgliedern, um alle Nutzer mit dem alten Domainnamen aus der Instanz zu entfernen.

  2. Erstellen Sie das Konto neu, indem Sie sich als jedes IAM-Gruppenmitglied in der Cloud SQL-Instanz anmelden und das Konto mit dem neuen Domainnamen verwenden. Weitere Informationen finden Sie unter Mitglieder einer Gruppe automatisch einer Cloud SQL-Instanz hinzufügen.

So ändern Sie den Domainnamen von IAM-Gruppen:

  1. Verwenden Sie das Verfahren zum Entfernen von IAM-Gruppen, um alle Gruppen mit dem alten Domainnamen aus der Instanz zu entfernen.

  2. Verwenden Sie das Verfahren zum Erstellen von IAM-Gruppen, um die Gruppe mit der neuen Domain zur Instanz hinzuzufügen.

  3. Erteilen Sie der IAM-Gruppe die Datenbankberechtigungen noch einmal.

IAM-Gruppe aus einer Cloud SQL-Instanz löschen

Sie können die hinzugefügten IAM-Gruppen aus der Cloud SQL-Instanz löschen. Nachdem Sie eine IAM-Gruppe aus der Instanz gelöscht haben, verlieren alle Nutzer und Dienstkonten, die zur IAM-Gruppe gehören, alle Datenbankberechtigungen, die der IAM-Gruppe gewährt wurden. Außerdem gelten die folgenden Bedingungen:

  • 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 das Löschen einer Gruppe dazu führt, dass der IAM-Gruppennutzer oder die Dienstkonten zu keinen anderen Gruppen auf der Instanz gehören, entfernt Cloud SQL den IAM-Gruppennutzer oder die Dienstkonten von der Instanz.
  • Wenn ein IAM-Gruppennutzer jedoch ein Datenbankobjekt auf der Instanz besitzt, 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 ihre Datenbankberechtigungen. Außerdem gelten die folgenden Bedingungen:

  • Alle IAM-Gruppennutzer und -Dienstkonten können sich nicht bei der Instanz anmelden.
  • Cloud SQL entfernt auch automatisch alle IAM-Gruppennutzer und -Dienstkonten aus der Instanz.
  • Wenn ein IAM-Gruppennutzer jedoch ein Datenbankobjekt auf der Instanz besitzt, müssen Sie die Inhaberschaft des Objekts neu zuweisen, bevor Sie den Nutzer manuell löschen können.

Console

  1. Rufen Sie in der Cloud de Confiance Console die Seite Cloud SQL-Instanzen auf.

    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 für die Gruppe, die Sie entfernen möchten, auf .
  5. 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 Name der Cloud Identity-Gruppe example-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-Gruppe aus IAM oder Cloud Identity löschen

Wenn Sie eine IAM-Gruppe aus IAM oder Cloud Identity löschen, aber nicht aus der Cloud SQL-Instanz, wird die IAM-Gruppe als INACTIVE markiert und bleibt auf der Instanz, bis Sie die Gruppe manuell entfernen.

Inaktive IAM-Gruppen können nicht für die IAM-Gruppenauthentifizierung verwendet werden. Datenbankberechtigungen, die inaktiven Gruppen gewährt wurden, werden nicht an ihre Mitglieder weitergegeben. Inaktive Gruppen zählen nicht als gültige IAM-Gruppenmitgliedschaften. IAM-Gruppennutzer, die nicht zu einer aktiven IAM-Gruppe gehören, können sich nicht über die IAM-Gruppenauthentifizierung authentifizieren.

Wenn eine IAM-Gruppe inaktiv ist, bleibt die Gruppe auf der Cloud SQL-Instanz auch dann inaktiv, wenn Sie die Gruppe in IAM und Cloud Identity neu erstellen. So erstellen Sie den IAM-Gruppennamen neu:

  1. Erstellen Sie die Gruppe in IAM und Cloud Identity neu.

  2. Verwenden Sie das Verfahren zum Entfernen von IAM-Gruppen, um die inaktive Gruppe zu entfernen.

  3. Fügen Sie die IAM-Gruppe wieder der Cloud SQL-Instanz hinzu.

  4. Erteilen Sie der neu erstellten IAM-Gruppe Datenbankberechtigungen.

IAM-Anmeldeberechtigungen aus einer IAM-Gruppe entfernen

Wenn Sie die Rolle cloudsql.instanceUser für eine IAM-Gruppe widerrufen, können sich alle Mitglieder der Gruppe nicht mehr bei Cloud SQL-Instanzen 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 über IAM weitergegeben wurde, kann sich der Nutzer nicht mehr in der Datenbank anmelden, es sei denn, er hat Anmeldeberechtigungen von einer anderen Gruppe erhalten oder ihm wurden direkt Anmeldeberechtigungen gewährt. Außerdem verlieren Nutzer, die aus einer Gruppe entfernt wurden, die Datenbankberechtigungen der Gruppe.

Wenn ein IAM-Gruppennutzer keiner Gruppe auf der Instanz angehört, entfernt Cloud SQL den Nutzer automatisch aus der Instanz. Wenn Cloud SQL jedoch erkennt, dass ein IAM-Gruppennutzer ein Objekt auf der Instanz besitzt, wird der Nutzer 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 werden in den Audit-Logs die Aktivitäten und Anmeldungen für einzelne Nutzer- und Dienstkonten angezeigt.

Ein Log kann beispielsweise Informationen wie die folgenden enthalten:

{
 insertId: "..."
 logName: "projects/.../logs/cloudaudit.googleapis.com%2Fdata_access"
 protoPayload: {
  @type: "type.googleapis.com/google.cloud.audit.AuditLog"
  authenticationInfo: {
   principalEmail: "..."
  }
  authorizationInfo: [
   0: {
    granted: true
    permission: "cloudsql.instances.login"
    resource: "instances/..."
    resourceAttributes: {
    }
   }
  ]
  methodName: "cloudsql.instances.login"
  request: {
   @type: "type.googleapis.com/google.cloud.sql.authorization.v1.InstancesLoginRequest"
   clientIpAddress: "..."
   database: "..."
   databaseSessionId: ...
   instance: "projects/.../locations/us-central1/instances/..."
   user: "..."
  }
  requestMetadata: {
   callerIp: "..."
   destinationAttributes: {
   }
   requestAttributes: {
    auth: {
    }
    time: "..."
   }
  }
  resourceName: "instances/..."
  serviceName: "cloudsql.googleapis.com"
  status: {
  }
 }
 receiveTimestamp: "..."
 resource: {
  labels: {
   database_id: "...:..."
   project_id: "..."
   region: "us-central"
  }
  type: "cloudsql_database"
 }
 severity: "INFO"
 timestamp: "..."
}

Fehler bei der Anmeldung beheben

Wenn bei einer Anmeldung ein Fehler auftritt, gibt PostgreSQL aus Sicherheitsgründen eine kurz gefasste Fehlermeldung zurück. Beispiel:

PGPASSWORD=not-a-password psql --host=... --username=... --dbname=...
psql: error: could not connect to server: FATAL:  Cloud SQL IAM user authentication failed for user "..."
FATAL:  pg_hba.conf rejects connection for host "...", user "...", database "...", SSL off

Weitere Einzelheiten zum Fehler können Sie den PostgreSQL-Fehlerlogs entnehmen. Weitere Informationen finden Sie unter Logs ansehen.

Der folgende Logeintrag beschreibt beispielsweise für den vorherigen Fehler, welche Maßnahme Sie zum Lösen des Problems ergreifen können.

F ... [152172]: [1-1] db=...,user=... FATAL:  Cloud SQL IAM user authentication failed for user "..."
I ... [152172]: [2-1] db=...,user=... DETAIL:  Request is missing required authentication credential. Expected OAuth 2 access token, log in cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.

Prüfen Sie die angezeigte Fehlermeldung. Wenn in der Meldung nicht angegeben ist, dass Sie die Cloud SQL-IAM-Nutzerauthentifizierung oder Cloud SQL-IAM-Dienstkontoauthentifizierung verwendet haben, prüfen Sie, ob der für die Anmeldung verwendete Datenbank-Nutzertyp entweder CLOUD_IAM_USER oder CLOUD_IAM_SERVICE_ACCOUNT ist. Sie können dafür die Cloud de Confiance 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.

Fehlerbehebung bei Nutzerkonten, die die IAM-Gruppenauthentifizierung verwenden

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

Fehler beim Hinzufügen einer Gruppe zu einer Datenbank

Wenn Sie versuchen, einer Instanz eine Gruppe hinzuzufügen, wird der folgende Fehler angezeigt:

(gcloud.sql.users.create) HTTPError 400: Invalid request: Provided CLOUD_IAM_GROUP: EMAIL, does not exist.

Achten Sie darauf, dass die von Ihnen angegebene E‑Mail-Adresse zu einer gültigen Gruppe gehört.

Wenn die Gruppe noch nicht vorhanden ist, erstellen Sie sie. Weitere Informationen zum Erstellen von Gruppen finden Sie unter Google-Gruppen in der Cloud de Confiance 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 über die Self-Service-Wartung auf Ihre Instanz anwenden. Weitere Informationen finden Sie unter Self-Service-Wartung durchführen.

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:

  1. Rufen Sie in der Cloud de Confiance Console die Seite IAM auf.

    IAM aufrufen

    Prüfen Sie, ob das Konto Mitglied der Gruppe ist, die der Cloud SQL-Instanz hinzugefügt wurde.

  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 der Nutzer oder das 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 keine Datenbankberechtigungen der Gruppe übernimmt.

  4. 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 oder CLOUD_IAM_GROUP_SERVICE_ACCOUNT neu erstellt.

Nächste Schritte