使用python hvac向Vault写入机密

时间:2019-06-07 23:32:33

标签: python hashicorp-vault

使用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

1 个答案:

答案 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")