gpt4 book ai didi

postgresql - Vault - AWS RDS Postgres 集成

转载 作者:行者123 更新时间:2023-12-02 17:02:56 24 4
gpt4 key购买 nike

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

  1. 数据库注册

    a.使用 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. 架构注册

    a.使用Vault获取具有server_admin角色的用户。b.创建架构

    CREATE SCHEMA IF NOT EXISTS ${schema_name} AUTHORIZATION server_admin

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

  3. 应用程序初始化

    a.从 Vault 获取具有管理员角色的数据库用户,并运行 Flyway 迁移

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

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

使用 Vault 与 postgresql 集成时,建议的数据库/架构/表所有权策略是什么?

最佳答案

我一直在努力解决同样的问题,最终我实现了本文中描述的解决方案。 (相关部分以“使用 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,并在需要时切换它们。

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

关于postgresql - Vault - AWS RDS Postgres 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50639115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com