我已经在 Linux VM 中部署了 HashiCorp Vault,并且希望它连接到我的主机上运行的 MySQL 数据库实例。
在我的数据库(主机 IP 100.101.102.103)中,我专门为此目的创建了一个用户:
CREATE USER 'vaultuser'@'%' IDENTIFIED BY 'vaultpass';
GRANT ALL PRIVILEGES ON amdb.* TO 'vaultuser'@'%' WITH GRANT OPTION;
GRANT CREATE USER ON *.* to 'vaultuser'@'%';
FLUSH PRIVILEGES;
在我的 Vault(VM IP 200.201.202.203)中,我已运行以下步骤:
- 启动 Vault -
vault server -dev -dev-listen-address="0.0.0.0:8200"
。我看到我的根令牌是hvs.ROOTTOKEN
- 启用数据库机密引擎 -
vault secrets enable database
- 使用适当的插件和连接信息配置 Vault -
vault write database/config/mydb plugin_name=mysql-database-plugin connection_url="{{username}}:{{password}}@tcp(100.101.102.103:3306)/mydb" allowed_roles="vault-role" username="vaultuser" password="vaultpass"
- 强制更换 root 密码 -
vault write -force database/rotate-root/mydb
。此时,我无法再使用以下方式登录数据库:mysql -uvaultuser -pvaultpass
- 配置一个角色,将 Vault 中的名称映射到一组创建语句以创建数据库凭据 -
vault write database/roles/vault-role db_name=mydb creation_statements="CREATE USER '{{name}}'@'%' IDENTIFIED BY '{{password}}';GRANT SELECT ON *.* TO '{{name}}'@'%';" default_ttl="1h" max_ttl="24h"
现在,我想远程创建一个新用户。在另一台机器上(假设为 192.168.100.200),我运行curl -X POST -H "X-Vault-Token: hvs.ROOTTOKEN" http://200.201.202.203:8200/v1/database/creds/vault-role
。我看到的响应是
{"errors":["1 error occurred:\n\t* unsupported operation\n\n"]}
我不知道我做错了什么。有人能给我指出正确的方向吗?