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

Haben Sie sich auch schon gefragt, wie Sie sich mit IAM-Authentifizierung mit CloudSQL verbinden können? Seit diesem Jahr
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 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.
Unsere Ideen
Weitere Blogs
Contact



