[英]Google CloudSQL - How to remove remove superuser permissions created by terraform
我正在使用 terraform 创建 cloudsql 用户。
resource "google_sql_user" "postgresql" {
for_each = toset(var.db_user_name)
name = each.value
project = var.app_project
instance = google_sql_database_instance.postgresql.name
password = var.db_user_password
}
它创建用户,但具有Create role, Create DB
角色和cloudsqlsuperuser
的成员。 我只想创建 BuildIn 用户,而不是使用 IAM 用户或 IAM 服务帐户。 我们可以稍后使用以下资源撤销这些角色和成员资格吗? 如果不使用 postgresql 提供程序,可以使用community.postgresql.postgresql_privs
ansible 模块来实现。
terraform {
required_providers {
postgresql = {
source = "cyrilgdn/postgresql"
version = ">=1.4.0"
}
}
}
provider "postgresql" {
#scheme = "gcppostgres"
host = var.postgres_host
username = "postgres"
password = "pass"
superuser = false
expected_version = "10.1"
alias = "postgres"
}
resource "postgresql_grant" "readwrite" {
provider = postgresql.postgres
for_each = { for role in var.roles : "${role.role}-${role.database}-${role.object_type}-${role.schema}" => role if role.object_type != "default_privs" }
role = each.value.role
database = each.value.database
object_type = each.value.object_type
objects = (each.value.object_type == "database" || each.value.object_type == "schema") ? [] : each.value.objects
schema = each.value.schema
privileges = each.value.privileges
}
variable "roles" {
type = list(object({
role = string
database = string
object_type = string
obj_t = string
objects = list(string)
schema = string
privileges = list(string)
}))
}
当您通过 Cloud SQL API(Terraform 用于创建它的 API)创建用户时,它将始终是超级用户。
删除超级用户权限或在任何情况下创建具有自定义权限的用户的唯一方法是登录数据库并在那里创建用户,所以是的,使用community.postgresql.postgresql_privs
可能是个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.