Neue und bestehende Instanzen für die Authentifizierung der IAM-Datenbanken konfigurieren

Auf dieser Seite finden Sie Verfahren zum Erstellen oder Bearbeiten von Cloud SQL-Instanzen, um Nutzern oder Dienstkonten zuzulassen, die für die Verwendung der Cloud SQL-IAM-Datenbankauthentifizierung konfiguriert sind. Weitere Informationen zur Cloud SQL-IAM-Integration finden Sie unter IAM-Authentifizierung.

Eine neu erstellte Instanz hat vier Systemdatenbanken:

  • information_schema: Bietet Zugriff auf Datenbankmetadaten, Informationen über den MySQL-Server.
  • mysql: Das Systemschema. Es enthält Tabellen, in denen Informationen gespeichert sind, die der MySQL-Server während der Ausführung benötigt.
  • performance_schema: Ein Feature, um die Ausführung des MySQL-Servers auf niedriger Ebene zu überwachen.
  • sys: Enthält eine Reihe von Objekten, die Datenbankadministratoren und Entwickler bei der Interpretation der vom Leistungsschema erfassten Daten unterstützen.

Hinweis

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Achten Sie darauf, dass Sie für Ihr Nutzerkonto die Rollen "Cloud SQL-Administrator" und "Compute-Betrachter" haben.

    Zur IAM-Seite

    Weitere Informationen zu Rollen und Berechtigungen

Neue Instanzen für die IAM-Datenbankauthentifizierung konfigurieren

Cloud SQL verwendet ein Flag, um IAM-Nutzerverbindungen auf einer Instanz zu aktivieren und zu deaktivieren. In diesem Verfahren aktivieren Sie dieses Flag.

So konfigurieren Sie eine neue Instanz, die die Cloud SQL-IAM-Datenbankauthentifizierung verwendet:

Console

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

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf Instanz erstellen.
  3. Klicken Sie auf MySQL auswählen.
  4. Geben Sie einen Namen für die Instanz-ID ein. Der Instanzname sollte keine vertraulichen oder personenbezogenen Informationen enthalten. Er ist extern sichtbar. Die Projekt-ID muss im Instanznamen nicht angegeben werden. Die Projekt-ID wird an gegebener Stelle automatisch eingefügt, z. B. in den Logdateien.
  5. Geben Sie ein Passwort für den Root-Nutzer ein.
  6. Wählen Sie im Drop-down-Menü Datenbankversion eine Datenbankversion aus.
  7. Wählen Sie im Abschnitt Region und zonale Verfügbarkeit auswählen die Region und die Zone für Ihre Instanz aus. Platzieren Sie die Instanz in der Region, in der sich auch die Ressourcen befinden, die darauf zugreifen. Die ausgewählte Region kann später nicht mehr geändert werden. Normalerweise müssen Sie keine Zone angeben.
  8. Klicken Sie im Abschnitt Instanz anpassen auf Konfigurationsoptionen einblenden und maximieren Sie Flags.
  9. Klicken Sie auf Flag hinzufügen.
  10. Wählen Sie im Drop-down-Menü Flag auswählen das Flag cloudsql_iam_authentication aus. Achten Sie darauf, dass An als Wert für dieses Flag ausgewählt ist, und klicken Sie dann auf Fertig.
  11. Konfigurieren Sie bei Bedarf weitere Instanzeinstellungen. Weitere Informationen zu Einstellungen finden Sie unter Einstellungen.
  12. Klicken Sie auf Instanz erstellen.

gcloud

Führen Sie gcloud sql instances create aus und setzen Sie den Parameter --database-flags auf cloudsql_iam_authentication=on.

Dabei gilt:

  • INSTANCE_NAME: der Name der neuen Instanz.
  • MYSQL_VERSION: Die MySQL-Version, z. B. (wie MYSQL_5_7 oder MYSQL_8_0).
  • NUMBER_OF_CORES: die Anzahl der Kerne in der Maschine.
  • AMOUNT_OF_MEMORY: die Größe des Arbeitsspeichers in der Maschine. Es sollte eine Größen angegeben werden (z. B. 3072MiB oder 9GiB).
  • ZONE: bevorzugte Compute Engine-Zone, z. B. us-central1-a oder us-central1-b.
  • PASSWORD: von Ihnen erstelltes Passwort für den Root-Nutzer.
gcloud sql instances create INSTANCE_NAME \
--database-version=MYSQL_VERSION \
--cpu=NUMBER_OF_CORES \
--memory=AMOUNT_OF_MEMORY \
--zone=ZONE_NAME \
--root-password=PASSWORD \
--database-flags=cloudsql_iam_authentication=on

Terraform

Verwenden Sie eine Terraform-Ressource, um eine Instanz mit aktivierter IAM-Datenbankauthentifizierung zu erstellen.

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
}

Ä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

Der Instanzname sollte keine vertraulichen Informationen oder personenbezogenen Daten enthalten, da er extern sichtbar ist.

Die Projekt-ID muss im Instanznamen nicht angegeben werden. Die Projekt-ID wird an gegebener Stelle automatisch eingefügt, z. B. in den Logdateien.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • INSTANCE_ID: die gewünschte Instanz-ID
  • REGION: die gewünschte Region, z. B. us-east-1
  • PROJECT_ID: Ihre Projekt-ID
  • LOCATION_ID: die Standort-ID
  • DATABASE_VERSION: Enum-String der Datenbankversion Beispiel: MYSQL_8_0
  • PASSWORD: das Passwort für den Root-Nutzer
  • MACHINE_TYPE: Enum-String des Maschinentyps (Stufe), z. B.: db-custom-[CPUS]-[MEMORY_MBS]

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

JSON-Text anfordern:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "databaseFlags": [
      {
        "name": "cloudsql_iam_authentication",
        "value": "on"
      }
    ]
  }
}

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/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}
Informationen zum Aufbau zugrunde liegenden REST API-Anfrage für diese Aufgabe finden Sie im APIs Explorer auf der Seite instances:insert.

REST v1beta4

Der Instanzname sollte keine vertraulichen Informationen oder personenbezogenen Daten enthalten, da er extern sichtbar ist.

Die Projekt-ID muss im Instanznamen nicht angegeben werden. Die Projekt-ID wird an gegebener Stelle automatisch eingefügt, z. B. in den Logdateien.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • INSTANCE_ID: die gewünschte Instanz-ID
  • REGION: die gewünschte Region, z. B. us-east-1
  • PROJECT_ID: Ihre Projekt-ID
  • LOCATION_ID: die Standort-ID
  • DATABASE_VERSION: Enum-String der Datenbankversion Beispiel: MYSQL_8_0
  • PASSWORD: das Passwort für den Root-Nutzer
  • MACHINE_TYPE: Enum-String des Maschinentyps (Stufe), z. B.: db-custom-[CPUS]-[MEMORY_MBS]

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

JSON-Text anfordern:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "databaseFlags": [
      {
        "name": "cloudsql_iam_authentication",
        "value": "on"
      }
    ]
  }
}

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": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}
Informationen zum Aufbau zugrunde liegenden REST API-Anfrage für diese Aufgabe finden Sie im APIs Explorer auf der Seite instances:insert.

Vorhandene Instanzen für die Cloud SQL-IAM-Datenbankauthentifizierung konfigurieren

So konfigurieren Sie die IAM-Datenbankauthentifizierung für eine vorhandene 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 Übersichtsseite einer Instanz zu öffnen.
  3. Klicken Sie auf Bearbeiten.
  4. Maximieren Sie im Bereich Instanz anpassen den Eintrag Flags.
  5. Klicken Sie auf Flag hinzufügen.
  6. Wählen Sie im Drop-down-Menü Flag auswählen das Flag cloudsql_iam_authentication aus. Achten Sie darauf, dass An als Wert für dieses Flag ausgewählt ist, und klicken Sie dann auf Fertig.
  7. Konfigurieren Sie bei Bedarf weitere Instanzeinstellungen. Weitere Informationen zu Einstellungen finden Sie unter Einstellungen.
  8. Klicken Sie auf Speichern.

gcloud

Informationen zur Installation und den ersten Schritten mit der gcloud CLI finden Sie unter gcloud CLI installieren. Informationen zum Starten von Cloud Shell finden Sie unter Cloud Shell verwenden.

Verwenden Sie für dieses Verfahren gcloud sql instances patch.

Dabei gilt:

  • INSTANCE_NAME: der Name der neuen Instanz.
gcloud sql instances patch INSTANCE_NAME \
--database-flags=cloudsql_iam_authentication=on

Dadurch werden alle anderen vorhandenen Flag-Einstellungen der Datenbank zurückgesetzt. Weitere Informationen zum Festlegen von Datenbank-Flags finden Sie unter Datenbank-Flag festlegen.


REST Version 1

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID
  • LOCATION_ID: die Standort-ID
  • INSTANCE_ID: die gewünschte Instanz-ID
  • REGION: die gewünschte Region
  • DATABASE_VERSION: Enum-String der Datenbankversion Beispiel: MYSQL_8_0
  • PASSWORD: das Passwort für den Root-Nutzer
  • MACHINE_TYPE: Enum-String des Maschinentyps (Stufe), z. B.: db-custom-[CPUS]-[MEMORY_MBS]

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

JSON-Text anfordern:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    }
    "databaseFlags":
    [
      {
        "name": "cloudsql_iam_authentication",
        "value": "on"
      }
    ]
  }
}

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/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/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
  • LOCATION_ID: die Standort-ID
  • INSTANCE_ID: die gewünschte Instanz-ID
  • REGION: die gewünschte Region
  • DATABASE_VERSION: Enum-String der Datenbankversion Beispiel: MYSQL_8_0
  • PASSWORD: das Passwort für den Root-Nutzer
  • MACHINE_TYPE: Enum-String des Maschinentyps (Stufe), z. B.: db-custom-[CPUS]-[MEMORY_MBS]

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

JSON-Text anfordern:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    }
    "databaseFlags":
    [
      {
        "name": "cloudsql_iam_authentication",
        "value": "on"
      }
    ]
  }
}

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": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Nächste Schritte