MongoDB
MongoDB 是数据库机密引擎所支持的插件之一。该插件可以根据为 MongoDB 配置的角色动态生成数据库凭据,也支持静态角色。
能力
数据库插件名称 | 根用户凭据轮换 | 动态角色 | 静态角色 | 自定义用户名 |
---|---|---|---|---|
mongodb-database-plugin |
Yes | Yes | Yes | Yes(1.7+) |
配置
- 如果数据库机密引擎尚未启用,先启用该机密引擎:
$ vault secrets enable database
Success! Enabled the database secrets engine at: database/
默认情况下,机密引擎会挂载到名字对应的路径上。要在不同路径上启用机密引擎,请使用 -path
参数。
- 使用合适的插件以及连接信息来配置 Vault:
$ vault write database/config/my-mongodb-database \
plugin_name=mongodb-database-plugin \
allowed_roles="my-role" \
connection_url="mongodb://{{username}}:{{password}}@mongodb.acme.com:27017/admin?tls=true" \
username="vaultuser" \
password="vaultpass!"
- 在 Vault 中配置一个映射到一条创建数据库凭据的 MongoDB 命令的 Vault 角色:
$ vault write database/roles/my-role \
db_name=my-mongodb-database \
creation_statements='{ "db": "admin", "roles": [{ "role": "readWrite" }, {"role": "read", "db": "foo"}] }' \
default_ttl="1h" \
max_ttl="24h"
Success! Data written to: database/roles/my-role
使用方法
配置了机密引擎后,一个拥有搭配了合适权限的 Vault 令牌的用户或是机器可以生成数据库凭据。
- 通过读取搭配角色名的
/creds
端点来创建一个新的凭据:
$ vault read database/creds/my-role
Key Value
--- -----
lease_id database/creds/my-role/2f6a614c-4aa2-7b19-24b9-ad944a8d4de6
lease_duration 1h
lease_renewable true
password LEm-lcDJ2k0Hi05FvizN
username v-vaultuser-my-role-ItceCZHlp0YGn90Puy9Z-1602542024
客户端 x509 证书身份验证
该插件支持使用 MongoDB 的 x509 客户端证书身份验证。
要配置插件使用该身份验证机制:
$ vault write database/config/my-mongodb-database \
plugin_name=mongodb-database-plugin \
allowed_roles="my-role" \
connection_url="mongodb://@mongodb.acme.com:27017/admin" \
tls_certificate_key=@/path/to/client.pem \
tls_ca=@/path/to/client.ca
请注意,tls_certificate_key
和 tls_ca
对应了 MongoDB 配置中的 tlsCertificateKeyFile
以及 tlsCAFile
配置项,但 Vault 参数应配置为这些文件的内容而非文件名。有鉴于此,这两个选项彼此独立。请阅读 MongoDB 配置选项 获取更多相关信息。