Я пытаюсь найти правильную комбинацию модулей 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
, которая будет иметь SELECT
доступ только к двум схемам в базе данных db_name
.
2) Создайте пользователя, который может войти в систему с именем readonly_user
, и дайте ему роль readonly
.
Когда я это делаю, созданный пользователь все еще может (например) создать таблицу. Однако они do имеют доступ только для чтения к самим таблицам.
Слегка отредактированный результат \du
:
db_name=> \du
Role name | Attributes | Member of
----------------+--------------------------------+---------------------------
readonly_user | Password valid until infinity | {readonly}
readonly | Cannot login +| {}
| Password valid until infinity |
Если есть способ создать пользователь, который может только читать информацию через terraform, я был бы очень признателен.