【发布时间】:2020-05-27 21:23:04
【问题描述】:
以下:
https://www.vaultproject.io/docs/secrets/databases/mysql-maria/
当我通过以下方式查询 Vault 时,我想显示 connection_url 或数据库主机以及用户密码:
vault read database/creds/my-role
【问题讨论】:
标签: mysql hashicorp-vault
以下:
https://www.vaultproject.io/docs/secrets/databases/mysql-maria/
当我通过以下方式查询 Vault 时,我想显示 connection_url 或数据库主机以及用户密码:
vault read database/creds/my-role
【问题讨论】:
标签: mysql hashicorp-vault
恐怕目前的数据库插件无法做到这一点。
其他可能的解决方案是使用连接 url 创建一个 KV 并检索它。为了保持一致性,您可以保持与凭据相同的路径,例如
带有vault read database/creds/my-role 的数据库凭据
和vault read kv/database/creds/my-role的连接字符串
这意味着您在设置保管库和检索凭据时会产生一些开销
另一个选项是通过 API 发送read the database config。
这将产生类似的东西
{
"data": {
"allowed_roles": ["readonly"],
"connection_details": {
"connection_url": "{{username}}:{{password}}@tcp(127.0.0.1:3306)/",
"username": "root"
},
"plugin_name": "mysql-database-plugin"
}
}
您可以在哪里获取connection_url 并对其进行正则表达式以获取连接字符串。我认为这需要更多的努力,因为您的客户需要知道如何转换连接字符串(与我提到的第一个解决方案相比,在您生成数据库引擎配置时生成 KV)
【讨论】:
如果你不介意我问,我可以问你为什么需要connection_url。如果要提供给应用程序进行配置,您可以使用 Vault 模板吗?
https://www.vaultproject.io/docs/agent/template/
正如用户 2599522 所说,直接使用 Vault 是不可能的,但一个简单的 bash 脚本或模板就可以解决问题。一切都取决于最佳解决方案的用例。
【讨论】:
connection_url 才能通过客户端或应用程序进行连接。我认为vault read 会理想地阻止我们编写 bash 脚本。我认为编写 bash 脚本可以解决问题。谢谢。 :)
creds 你给它传递一些简单的参数,比如你想要凭据的数据库,它会使用 Vault(可能使用 Github)对你进行身份验证并返回一个连接字符串。或者更好的db_proxy 你运行数据库代理,它从保险库中获取凭据并为开发人员公开一个经过预认证的本地主机连接。再次使用 GitHub creds 或 LDAP 自动验证 Vault。