【问题标题】:Vault - AWS RDS Postgres integration保险库 - AWS RDS Postgres 集成
【发布时间】:2018-11-11 08:11:34
【问题描述】:

我正在设置保管库和在 AWS RDS 中运行的 postgres 实例之间的集成。我的策略如下:

  1. 数据库注册

    一个。使用 RDS 主凭据创建名为 server_admin 的角色:

    CREATE ROLE server_admin WITH LOGIN PASSWORD '${password}' CREATEROLE CREATEDB
    

    b.使用 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")
    
  2. 架构注册

    一个。使用 Vault 获取具有 server_admin 角色的用户。 湾。创建架构

    CREATE SCHEMA IF NOT EXISTS ${schema_name} AUTHORIZATION server_admin
    

    c。创建 3 个保管库角色(read_only、read_write、admin)

  3. 应用程序初始化

    一个。从 Vault 中获取具有 admin 角色的数据库用户,并运行 flyway 迁移

    b.从 Vault 中获取具有 read_write 角色的数据库用户以进行正常操作

我的问题是,在我的应用程序(flyway)进行初始架构初始化期间,表归动态生成的用户所有。下次尝试迁移时,我获得了一个具有管理员角色的新用户(通过保管库),但它没有访问第一个用户创建的表的权限。

在使用 Vault 集成与 postgresql 时,推荐的数据库/模式/表所有权策略是什么?

【问题讨论】:

    标签: postgresql amazon-web-services amazon-rds flyway hashicorp-vault


    【解决方案1】:

    我一直在为同样的问题苦苦挣扎,最后,我实现了本文中描述的解决方案。 (相关部分以'Using Liquibase'结尾)https://www.jannikarndt.de/blog/2018/08/rotating_postgresql_passwords_with_no_downtime/

    Vault 可用于通过使用 Vault 静态角色来轮换角色,如上所述。在这种情况下,用户名保持不变,密码由 Vault 轮换和管理。 https://learn.hashicorp.com/vault/secrets-management/db-creds-rotation

    我使用蓝/绿设置,将未使用的角色设置为 NOLOGIN,并在需要时切换它们。

    通过保持角色名称静态,您可以避免新角色不继承前一个角色权限的问题。

    【讨论】:

    • 嗯,还不错 - 但最后我通过拥有一个动态用户继承权限的“所有者”角色解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2021-08-05
    • 2015-09-30
    • 2017-10-01
    • 2014-12-24
    • 2019-05-27
    • 2020-11-15
    相关资源
    最近更新 更多