【发布时间】:2018-11-11 08:11:34
【问题描述】:
我正在设置保管库和在 AWS RDS 中运行的 postgres 实例之间的集成。我的策略如下:
-
数据库注册
一个。使用 RDS 主凭据创建名为 server_admin 的角色:
CREATE ROLE server_admin WITH LOGIN PASSWORD '${password}' CREATEROLE CREATEDBb.使用 server_admin postgres 角色(python hvac 库)向 Vault 注册数据库:
vault.write("database/config/{0}".format(database_identifier), plugin_name=plugin_name, connection_url=connection_url, allowed_roles="*")`c。接下来,为管理创建一个保管库角色(模式创建):
vault.write("database/roles/{0}".format(role_name), db_name=database_identifier, creation_statements='"CREATE ROLE \"{{name}}\" WITH LOGIN INHERIT PASSWORD '{{password}}' IN ROLE SERVER_ADMIN;"', default_ttl="10000h") -
架构注册
一个。使用 Vault 获取具有 server_admin 角色的用户。 湾。创建架构
CREATE SCHEMA IF NOT EXISTS ${schema_name} AUTHORIZATION server_adminc。创建 3 个保管库角色(read_only、read_write、admin)
-
应用程序初始化
一个。从 Vault 中获取具有 admin 角色的数据库用户,并运行 flyway 迁移
b.从 Vault 中获取具有 read_write 角色的数据库用户以进行正常操作
我的问题是,在我的应用程序(flyway)进行初始架构初始化期间,表归动态生成的用户所有。下次尝试迁移时,我获得了一个具有管理员角色的新用户(通过保管库),但它没有访问第一个用户创建的表的权限。
在使用 Vault 集成与 postgresql 时,推荐的数据库/模式/表所有权策略是什么?
【问题讨论】:
标签: postgresql amazon-web-services amazon-rds flyway hashicorp-vault