我已使用 terraform 模板 在 GCP 上安装了 Vault。 我已登录到 Vault 站点 *:8200 并从我的控制台和 Vault 控制台成功创建了测试秘密引擎和秘密。
数据库秘密引擎也成功创建。但不幸的是我无法设置 mysql-database-plugin 插件。
我尝试了多种方法来设置数据库秘密引擎:
export VAULT_TOKEN=xxxxxxxxxxxxxxxxxxx
export VAULT_ADDR=https://xx.xx.xx.xx:8200
vault write -tls-skip-verify database/config/xx plugin_name=mysql-database-plugin connection_url="{{username}}:{{password}}@tcp(xx.xx.xx.xx:3306)/" allowed_roles="vault-mysql-role" username="xx" password="xx"
但我得到:
将数据写入数据库/config/xx 时出错:超出上下文截止时间
还从 Vault 控制台尝试过:
vault write database/config/mmc plugin_name=mysql-database-plugin connection_url="{{username}}:{{password}}@tcp(xx.xx.xx.xx:3306)/" allowed_roles="vault-mysql-role" username="xx" password="xx"
我遇到的错误:
写入数据库/config/mmc 时出错。 网址:未定义 代码:未定义
还尝试了API:
curl -k --header "X-Vault-Token: xxxxxxxxxxx" --request POST --data @payload.json https://xx.xx.xx.xx:8200/v1/database/config/mysql
作为payload.json:
{
"plugin_name": "mysql-database-plugin",
"allowed_roles": "readonly",
"connection_url": "{{username}}:{{password}}@tcp(xx.xx.xx.xx:3306)/xx",
"max_open_connections": 5,
"max_connection_lifetime": "5s",
"username": "xx",
"password": "xx"
}
但我得到:
{“errors”:[“创建数据库对象时出错:验证连接时出错:拨打 tcp xx.xx.xx.xx:3306:连接:连接超时”]}
有人知道出了什么问题吗? 预先感谢。
已解决,这是 Google Cloud Platform (GCP) 问题。 Cloud SQL 实例已使用公共 IP 设置,但 Vault 已使用私有 IP(堡垒主机模式)设置,为了将 Compute Engine 私有 IP 连接到 Cloud SQL,有两个选项: 1) 设置Vault使用公共IP 2) 设置 Cloud SQL 以使用私有 IP 和自定义 vpc 网络,与 Vault 使用的相同。出于安全考虑选择了这一点。
您能否协助您了解如何使用 cloudsql 对保管库进行身份验证? 我遇到了同样的问题,但无法按照您提到的解决方案解决它。如果我在这里遗漏了什么,请告诉我。