【问题标题】:HashiCorp Vault Database Secrets display Connection URLHashiCorp Vault 数据库机密显示连接 URL
【发布时间】: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


    【解决方案1】:

    恐怕目前的数据库插件无法做到这一点。

    其他可能的解决方案是使用连接 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)

    【讨论】:

      【解决方案2】:

      如果你不介意我问,我可以问你为什么需要connection_url。如果要提供给应用程序进行配置,您可以使用 Vault 模板吗?

      https://www.vaultproject.io/docs/agent/template/

      正如用户 2599522 所说,直接使用 Vault 是不可能的,但一个简单的 bash 脚本或模板就可以解决问题。一切都取决于最佳解决方案的用例。

      【讨论】:

      • 感谢您的回答。用例是新的\现有的开发人员需要来自 SRE 的 DB RO 访问。使用 Vault,过程变得更加容易。新\现有开发人员还需要知道connection_url 才能通过客户端或应用程序进行连接。我认为vault read 会理想地阻止我们编写 bash 脚本。我认为编写 bash 脚本可以解决问题。谢谢。 :)
      • 我认为这里有一个非常优雅的解决方案,绝对值得花费精力来构建工作流。我在想两件事,写一个小开发实用程序creds 你给它传递一些简单的参数,比如你想要凭据的数据库,它会使用 Vault(可能使用 Github)对你进行身份验证并返回一个连接字符串。或者更好的db_proxy 你运行数据库代理,它从保险库中获取凭据并为开发人员公开一个经过预认证的本地主机连接。再次使用 GitHub creds 或 LDAP 自动验证 Vault。
      • 它确实需要一点点构建,但 Vault API 非常健全并且非常易于集成。还有多种语言的客户端库。如果你这样做了,那么你会得到两件事总是好的抽象,并且工作流程非常适合你的需求。哦,还有可能开源一个漂亮的工具。
      猜你喜欢
      • 2019-07-19
      • 2019-03-22
      • 2021-10-14
      • 2017-05-16
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      • 2020-10-26
      相关资源
      最近更新 更多