繁体   English   中英

Google CloudSQL - 如何删除由 terraform 创建的超级用户权限

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM