Vault-如何为mysql创建动态机密并仅授予特定数据库的权限

Vault-如何为mysql创建动态机密并仅授予特定数据库的权限,mysql,automation,hashicorp-vault,Mysql,Automation,Hashicorp Vault,我现在正在运行,它为我的mysql数据库提供了动态秘密。此时,我的数据库角色如下所示: 答复: { "lease_duration" : 0, "data" : { "revocation_statements" : [], "default_ttl" : 3600, "rollback_statements" : [], "m

我现在正在运行,它为我的mysql数据库提供了动态秘密。此时,我的数据库角色如下所示:

答复:

{
   "lease_duration" : 0,
   "data" : {
      "revocation_statements" : [],
      "default_ttl" : 3600,
      "rollback_statements" : [],
      "max_ttl" : 86400,
      "db_name" : "my-mysql-database",
      "creation_statements" : [
         "CREATE USER '{{name}}'@'%' IDENTIFIED BY '{{password}}'",
         "GRANT SELECT ON *.* TO '{{name}}'@'%'"
      ],
      "renew_statements" : []
   },
   "warnings" : null,
   "auth" : null,
   "renewable" : false,
   "request_id" : "f155ede2-12ce-2ab1-f05e-b0f52acb153a",
   "wrap_info" : null,
   "lease_id" : ""
}
最重要的是创建_语句,其中新用户被授予对每个数据库的权限。我的目标是发送我需要一个用户的数据库,并只给他该数据库的权限。我还没有看到任何关于如何做到这一点的资源


我的想法可能是检查Vault是否具有特定数据库的角色,如果Vault错误响应该角色不存在,我可以为该数据库创建一个新角色,然后生成新凭据。

据我所知,创建语句是静态的,这意味着一旦创建了“Vault\u数据库\u机密\u后端\u角色”,这些语句无法更改

我们遇到了一个类似的问题,我们最终为每个不同的数据库动态创建了新的数据库

因为我们使用terraform,所以我可以为创建语句设置模板。(即:当我创建一个名为“abcd”的新数据库时,相应的
vault\u database\u secret\u backend\u角色
creation\u语句是“生成的”/“呈现的”,因此它只授予访问此(
abcd
)数据库的权限。

您好,谢谢您的回复:)我最后做了一些非常类似的事情。现在,我正在为每个数据库创建一个新角色。我在客户端和Vault之间有一个代理API,可以在其中检查某个数据库是否已经有角色,或者如果该数据库没有,我将为其创建一个新角色。