Blog

So stellen Sie eine Verbindung zu CloudSQL mit IAM-Authentifizierung her

Mark van Holsteijn

Aktualisiert Oktober 20, 2025
2 Minuten

Haben Sie sich auch schon gefragt, wie Sie sich mit IAM-Authentifizierung mit CloudSQL verbinden können? Seit diesem Jahr ermöglicht CloudSQL for PostgreSQL IAM-Benutzern und IAM-Servicekonten die Anmeldung als Datenbankbenutzer. In diesem kurzen Blog zeige ich Ihnen, wie Sie dies mit Terraform tun können.

Wie funktioniert das?

Es ist ziemlich einfach:

  • Sie aktivieren die IAM-Authentifizierung auf der Instanz
  • Erstellen Sie einen CloudSQL IAM-Benutzer in der Instanz
  • starten Sie den CloudSQL-Proxy mit --enable_iam_login
  • Starten Sie psql!

So einfach ist es!

CloudSQL IAM-Authentifizierung aktivieren

Das folgende Terraform-Snippet aktiviert die IAM-Authentifizierung auf der Datenbankinstanz:

resource "google_sql_database_instance" "master" {
  name                   = "demo"
  database_version = "POSTGRES_9_6"

  settings {
    tier = "db-f1-micro"

    database_flags {
      name  = "cloudsql.iam_authentication"
      value = "on"
    }
  }
}

Wie Sie sehen können, ist dies für eine PostgreSQL-Datenbank. Ich hoffe, dass die MySQL-Unterstützung bald folgt.

Erstellen Sie einen CloudSQL IAM-Benutzer

Um einen CloudSQL IAM-Benutzer zu erstellen, verwenden Sie das folgende Terraform-Snippet:

resource "google_sql_user" "iam_user" {
  name     = "markvanholsteijn@binx.io"
  instance = google_sql_database_instance.master.name
  type     = "CLOUD_IAM_USER"
}

resource "google_project_iam_member" "iam_user_cloudsql_instance_user" {
  role   = "roles/cloudsql.instanceUser"
  member = format("user:%s", google_sql_user.iam_user.name)
}

resource "google_project_iam_member" "iam_user_cloudsql_client" {
  role   = "roles/cloudsql.client"
  member = format("user:%s", google_sql_user.iam_user.name)
}

Wie Sie sehen, geben Sie die E-Mail-Adresse der Google Cloud-Identität an und legen den Typ als CLOUD_IAM_USER fest. Der IAM-Benutzer benötigt die Rollen und , um sich zu verbinden. Für Servicekonten geben Sie den Typ CLOUD_IAM_SERVICE_ACCOUNT an.

CloudSQL-Proxy starten

Um den CloudSQL Proxy zu starten, geben Sie ein:

$ CONNECTION=$(gcloud sql instances 
    describe demo --format 'value(connectionName)')

$ cloud_sql_proxy 
  --instances $CONNECTION=tcp:5432 --enable_iam_login  &

In diesem Schnipsel oben frage ich den Verbindungsnamen mit gcloud ab. Der Verbindungsname hat normalerweise das Format <project>:<region>:<name>. Der CloudSQL Proxy aktualisiert die Token im Hintergrund automatisch für Sie.

psql starten

Um sich mit Ihren gcloud-Anmeldedaten mit der PostgreSQL-Datenbank zu verbinden, geben Sie ein:

$ psql "sslmode=disable dbname=postgres host=127.0.0.1 user=markvanholsteijn@binx.io"
psql (13.3, server 9.6.21)
postgres=>

Wie Sie sehen können, stellen Sie eine Verbindung mit sslmode=disable her. Der CloudSQL-Proxy verschlüsselt die Verbindung bereits für Sie.

Fazit

Mit der IAM-Authentifizierungsunterstützung von CloudSQL ist es sehr einfach, Benutzern ohne Passwort Zugriff auf eine CloudSQL-Datenbank zu gewähren. Es gibt kein Passwort, das generiert und verteilt werden muss, so dass es unmöglich ist, es auszuspähen. In Verbindung mit der Begrenzung der Lebensdauer der gcloud SDK-Anmeldeinformationen ist dies eine große Sicherheitsverbesserung. Ich empfehle die Verwendung der CloudSQL IAM-Authentifizierung für alle Ihre CloudSQL-Datenbanken.

Bild von markvanholsteijn aus Pixabay

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.