我正在尝试找到正确的terraform模块组合,以在postgres RDS实例中创建只读用户。
https://www.terraform.io/docs/providers/postgresql/
我有一个包含两个模式的数据库 -public
和www
。我从以下内容开始:
resource "postgresql_role" "readonly" {
name = "readonly"
}
resource postgresql_grant "readonly_public" {
database = "db_name"
role = postgresql_role.readonly.name
schema = "public"
object_type = "table"
privileges = ["SELECT"]
}
resource postgresql_grant "readonly_www" {
database = "db_name"
role = postgresql_role.readonly.name
schema = "www"
object_type = "table"
privileges = ["SELECT"]
}
resource "postgresql_role" "readonly_user" {
name = "readonly_user"
password = "some_password_123"
login = true
roles = [postgresql_role.readonly.name]
}
旨在:
1)创建一个名为readonly
的角色,该角色仅对db_name
数据库中的两个模式具有SELECT
访问权限。
2)创建一个名为readonly_user
的可登录用户,并将角色readonly
授予他们。
这样做后,创建的用户仍然可以(例如)创建表。 但是,他们确实对表本身具有只读访问权限。
\du
的轻微编辑结果:
db_name=> \du
Role name | Attributes | Member of
----------------+--------------------------------+---------------------------
readonly_user | Password valid until infinity | {readonly}
readonly | Cannot login +| {}
| Password valid until infinity |
如果有一种方法可以通过terraform创建一个只能读取信息的用户,我将非常感激。