PostgreSQL

PostgreSQL 是数据库机密引擎所支持的插件之一。该插件可以根据为 PostgreSQL 配置的角色动态生成数据库凭据,也支持静态角色

PostgreSQL 机密引擎使用 pq,与 PostgreSQL 存储后端使用的是同一个数据库库。连接字符串信息,包括 SSL 配置项,可以参考这篇文档

能力

数据库插件名称 根用户凭据轮换 动态角色 静态角色 自定义用户名
postgresql-database-plugin Yes Yes Yes Yes(1.7+)

配置

  1. 如果数据库机密引擎尚未启用,先启用该机密引擎:
$ vault secrets enable database
Success! Enabled the database secrets engine at: database/

默认情况下,机密引擎会挂载到名字对应的路径上。要在不同路径上启用机密引擎,请使用 -path 参数。

  1. 使用合适的插件以及连接信息来配置 Vault:
$ vault write database/config/my-postgresql-database \
    plugin_name=postgresql-database-plugin \
    allowed_roles="my-role" \
    connection_url="postgresql://{{username}}:{{password}}@localhost:5432/" \
    username="vaultuser" \
    password="vaultpass"
  1. 在 Vault 中配置一个映射到一条创建数据库凭据的 SQL 命令的 Vault 角色:
$ vault write database/roles/my-role \
    db_name=my-postgresql-database \
    creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; \
        GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
    default_ttl="1h" \
    max_ttl="24h"
Success! Data written to: database/roles/my-role

使用方法

配置了机密引擎后,一个拥有搭配了合适权限的 Vault 令牌的用户或是机器可以生成数据库凭据。

  1. 通过读取搭配角色名的 /creds 端点来创建一个新的凭据:
$ vault read database/creds/my-role
Key                Value
---                -----
lease_id           database/creds/my-role/2f6a614c-4aa2-7b19-24b9-ad944a8d4de6
lease_duration     1h
lease_renewable    true
password           SsnoaA-8Tv4t34f41baD
username           v-vaultuse-my-role-x

results matching ""

    No results matching ""