gcp cloud sql iam - ghdrako/doc_snipets GitHub Wiki
https://cloud.google.com/iam/docs/understanding-roles#cloud-sql-roles
Enable CloudSQL IAM authentication###
resource "google_sql_database_instance" "master" {
name = "demo"
database_version = "POSTGRES13"
settings {
tier = "db-f1-micro"
database_flags {
name = "cloudsql.iam_authentication"
value = "on"
}
}
}
Create a CloudSQL IAM user
resource "google_sql_user" "iam_user" {
name = "[email protected]"
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)
}
Specify the email address of the Google Cloud identity and specify the type as CLOUD_IAM_USER
. The IAM user requires the roles cloudsql.instanceUser
and cloudsql.client
to connect. For service accounts, specify the type CLOUD_IAM_SERVICE_ACCOUNT
.
When an IAM user is added to a database instance, that new user is granted no privileges on any databases, by default.
When a user or service account connects to a database, they can run queries against any database objects whose access has been granted to PUBLIC.
grant select on TABLE_NAME to "USERNAME";
gcloud sql users delete USERNAME --instance=INSTANCE_NAME; # Remove an IAM user or service account from the database