Vault配置MongoDB连接失败:SCRAM-SHA-1认证失败但Mongo Shell可登录
问题:Vault配置MongoDB SCRAM-SHA-1认证失败(Shell连接正常)
我可通过Mongo Shell连接MongoDB路由器Pod的admin数据库(使用SCRAM-SHA-1认证),但用相同参数配置Vault的MongoDB数据库连接时,出现「无法使用SCRAM-SHA-1机制认证」的错误。
Mongo Shell成功连接的命令及输出
root@nexus-config-mongo-cluster-router-node1-rc-fcwnj:/# mongo --verbose mongodb://nexus-global-admin-user:<password>@mongo-cluster-router-node1-svc.cluster.local:27017/admin?authMechanism=SCRAM-SHA-1 MongoDB shell version v4.2.2 connecting to: mongodb://nexus-config-mongo-cluster-router-node1-svc.nexusdash.svc.cluster.local:27017/admin?authMechanism=SCRAM-SHA-1&compressors=disabled&gssapiServiceName=mongodb 2023-03-16T18:27:46.128+0000 D1 NETWORK [js] creating new connection to:mongo-cluster-router-node1-svc.cluster.local:27017 2023-03-16T18:27:46.134+0000 D1 NETWORK [js] connected to server mongo-cluster-router-node1-svc.cluster.local:27017 2023-03-16T18:27:46.134+0000 D1 NETWORK [js] connected connection! Implicit session: session { "id" : UUID("9de4c2a0-a279-4f9c-ac1e-bd3ff99051ce") } MongoDB server version: 4.2.2 mongos> show dbs Global-aegis 0.001GB Global-griffin 0.001GB Global-sorcerer 0.002GB Global-spartan 0.002GB admin 0.000GB config 0.002GB nexusdash-ndi 3.324GB nexusdash-sitehub 0.000GB nexusdash-thanos 0.000GB mongos> use admin switched to db admin mongos> show collections system.users system.version
Vault配置命令及错误输出
root@vault-0-0:/# vault write database/config/nexus_config_mongodb \ plugin_name=mongodb-database-plugin \ allowed_roles="test-mongodb-nexusdash-aquarius-readwrite" \ connection_url="mongodb://{{username}}:{{password}}@mongo-cluster-router-node1-svc.cluster.local:27017/admin?authMechanism=SCRAM-SHA-1" \ username="nexus-global-admin-user****" \ password="replaced with password" \ username_template="{{.RoleName}}-user" Error writing data to database/config/nexus_config_mongodb: Error making API request. URL: PUT https://vault-0.default.svc.cluster.local:8200/v1/database/config/nexus_config_mongodb Code: 400. Errors: * error creating database object: failed to verify connection: connection() error occured during connection handshake: auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-1": (AuthenticationFailed) Authentication failed.
排查方案
验证用户名/密码准确性
确认Vault命令中username的星号占位已替换为完整正确的用户名,password为实际有效密码。若密码包含@、&等特殊字符,需做URL编码(比如@替换为%40)。检查插件版本兼容性
确认Vault的mongodb-database-plugin版本与MongoDB 4.2.2兼容,旧版本插件可能存在SCRAM-SHA-1支持缺陷,尝试升级插件至匹配版本。修正连接URL细节
- 补充完整FQDN:Shell连接实际使用的是
mongo-cluster-router-node1-svc.nexusdash.svc.cluster.local,Vault中需确保使用相同的完整主机名(避免跨namespace DNS解析失败)。 - 显式指定认证源:在连接URL中添加
authSource=admin参数,确保插件明确使用admin数据库进行认证,修改后URL示例:connection_url="mongodb://{{username}}:{{password}}@mongo-cluster-router-node1-svc.nexusdash.svc.cluster.local:27017/admin?authMechanism=SCRAM-SHA-1&authSource=admin"
- 补充完整FQDN:Shell连接实际使用的是
确认用户权限与认证机制
在Mongo Shell中执行以下命令,验证用户的SCRAM配置及权限:use admin db.getUser("nexus-global-admin-user")确保用户的
authenticationMechanisms包含SCRAM-SHA-1,且拥有足够权限(如userAdminAnyDatabase,用于Vault生成动态用户)。测试Vault到MongoDB的网络连通性
在Vault Pod内执行以下命令,确认网络可达:nc -zv mongo-cluster-router-node1-svc.nexusdash.svc.cluster.local 27017若连接失败,检查网络策略、防火墙规则是否阻止了Vault对MongoDB端口的访问。
内容的提问来源于stack exchange,提问作者Anish Mathew
相关产品推荐
相关产品推荐

