SQL 服务器的 HashiCorp 根数据库凭证轮换

HashiCorp Root DB Credential Rotation with SQL Server

我正在尝试在 0.10 版的 HashiCorp Vault 中使用这个新功能,它允许您轮换提供给数据库秘密引擎的根凭据。使用 SQL 服务器作为我的数据库我无法让它工作。

执行 vault write -force database/rotate-root/mssql 会引发此错误:

Error writing data to database/rotate-root/mssql: Error making API request.

URL: PUT http://0.0.0.0:8200/v1/database/rotate-root/mssql Code: 500. Errors:

  • 1 error occurred:

  • mssql: Cannot alter the login '%!s(MISSING)', because it does not exist or you do not have permission.

正在做 vault read database/config/mssql returns:

Key                                   Value
---                                   -----
allowed_roles                         [* imagine]
connection_details                    map[connection_url:sqlserver://{{username}}:{{password}}@sql:1433 username:vaultrolecreator]
plugin_name                           mssql-database-plugin
root_credentials_rotate_statements    []

想知道您是否应该提供自己的轮换语句。我想做的所有其他事情都完美无缺,这些测试是使用保险库根令牌完成的。

原始插件信息是使用以下语句完成的:

vault write database/config/mssql \
  plugin_name="mssql-database-plugin" \
  connection_url="sqlserver://{{username}}:{{password}}@sql:1433" \
  allowed_roles="*, imagine" \
  username="vaultrolecreator" \
  password="UnSafePass"`

您的帐户“vaultrolecreator”可能没有在数据库上执行 ALTER LOGINALTER CREDENTIAL 语句的权限。根据 Vault official documentation,需要这些权限才能执行 rotate-root

这似乎是 HashiCorp Vault 0.10.2(及更早版本)中的错误。正在新版本中进行修复:

https://github.com/hashicorp/vault/issues/4745