使用client.write不利于将机密信息使用python hvac写入Vault中由PostgreSQL支持的数据库后端。我应该使用什么方法/功能。
import os
import hvac
from vault_psycopg2 import vault
client = hvac.Client(url=os.environ['VAULT_URL'], token=os.environ['VAULT_TOKEN'])
client.read('dbs/creds/readonly/')
那是可读的代码,但是我该如何编写以创建基于角色的访问,该访问通过Vault指向Postgres DB。
在docker的Vault命令行上,我通常运行它来创建角色和密码。
vault write dbs/roles/readonly\
db_name=postgres \
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: dbs/roles/readonly
答案 0 :(得分:0)
不确定是否可以解决这个问题,但是需要类似以下内容的东西:
client.write("database/roles/readonly", db_name='postgres',
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="24hr")
在保管库中创建角色定义。
然后,要实际创建postgres用户/角色并获取凭据,您需要使用
response = client.read("database/roles/readonly")
username = response.get("data").get("username")
password = response.get("data").get("password")