hashicorp/vault-plugin-database-mongodbatlasVault MongoDB Atlas 数据库插件是 HashiCorp Vault 的官方后端插件,旨在为 MongoDB Atlas 项目提供动态数据库凭证管理能力。该 Docker 镜像封装了插件的运行环境,支持在容器化部署中集成至 Vault 生态系统。
[***])通过 Docker Hub 或 HashiCorp 容器仓库拉取官方镜像:
bashdocker pull hashicorp/vault-plugin-database-mongodbatlas:latest
bashdocker run -d \ --name vault-mongodbatlas-plugin \ --restart unless-stopped \ -v /etc/vault/plugins:/vault/plugins \ hashicorp/vault-plugin-database-mongodbatlas:latest
| 参数 | 说明 | 示例值 |
|---|---|---|
-v /etc/vault/plugins:/vault/plugins | 挂载插件目录至 Vault 可访问路径 | 宿主机插件目录需与 Vault 配置一致 |
--name | 容器名称 | vault-mongodbatlas-plugin |
--restart | 容器重启策略 | unless-stopped |
bashvault secrets enable database
bash# 获取插件 SHA256 校验和(需替换为实际镜像内插件二进制路径) PLUGIN_SHA256=$(sha256sum /vault/plugins/vault-plugin-database-mongodbatlas | awk '{print $1}') # 注册插件 vault plugin register -sha256="$PLUGIN_SHA256" database mongodbatlas-database-plugin
bashvault write database/config/mongodbatlas \ plugin_name="mongodbatlas-database-plugin" \ allowed_roles="readonly,readwrite" \ public_key="ATLAS_PUBLIC_KEY" \ # MongoDB Atlas API 公钥 private_key="ATLAS_PRIVATE_KEY" \ # MongoDB Atlas API 私钥 project_id="ATLAS_PROJECT_ID" \ # MongoDB Atlas 项目 ID base_url="[***]" # API 基础地址(默认值)
bash# 创建只读角色(示例) vault write database/roles/readonly \ db_name="mongodbatlas" \ creation_statements='{ "database_name": "admin", "roles": [{"roleName": "read", "databaseName": "myappdb"}] }' \ default_ttl="1h" \ max_ttl="24h"
database/config/mongodbatlas)| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
plugin_name | string | 是 | 插件名称,固定为 mongodbatlas-database-plugin |
public_key | string | 是 | MongoDB Atlas API 公钥 |
private_key | string | 是 | MongoDB Atlas API 私钥 |
project_id | string | 是 | MongoDB Atlas 项目 ID |
base_url | string | 否 | MongoDB Atlas API 基础 URL(默认:[***]) |
allowed_roles | string | 否 | 允许关联的 Vault 角色列表(逗号分隔) |
database/roles/<role-name>)| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
db_name | string | 是 | 关联的数据库配置名称(即 database/config/<name> 中的 <name>) |
creation_statements | JSON | 是 | MongoDB 用户创建语句(定义权限、数据库等) |
default_ttl | string | 否 | 凭证默认生命周期(默认:1h) |
max_ttl | string | 否 | 凭证最大生命周期(默认:24h) |
bash# 运行插件容器并挂载至 Vault 插件目录 docker run -d \ --name vault-mongodbatlas-plugin \ --restart unless-stopped \ -v /opt/vault/plugins:/plugins \ # 宿主机 Vault 插件目录(需与 Vault 配置一致) hashicorp/vault-plugin-database-mongodbatlas:latest
yamlversion: "3.8" services: vault-plugin: image: hashicorp/vault-plugin-database-mongodbatlas:latest container_name: vault-mongodbatlas-plugin restart: unless-stopped volumes: - /opt/vault/plugins:/plugins # 挂载至 Vault 可访问的插件目录 networks: - vault-network # 确保与 Vault 容器在同一网络 networks: vault-network: external: true # 假设已存在 Vault 网络
bashvault read database/creds/readonly
输出示例:
Key Value --- ----- lease_id database/creds/readonly/abc123... lease_duration 1h lease_renewable true password vauLt-abcdef***... username v-token-readonly-xyz789...
bash# 使用生成的用户名/密码连接 MongoDB Atlas mongo "mongodb+srv://<username>:<password>@cluster0.mongodb.net/myappdb" --authenticationDatabase admin
javascript// 在 MongoDB Shell 中验证权限 db.runCommand({ connectionStatus: 1 }) // 确认连接成功 db.getRoles({ showPrivileges: true }) // 验证已分配的只读权限
Project Owner 或 Database Access Admin 权限,否则无法创建/管理用户。v1.2.0)而非 latest。default_ttl 和 max_ttl,建议根据业务需求设置合理的轮换周期(如生产环境 default_ttl=15m)。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务