MongoDB Compass通过IAM认证连接AWS DocumentDB时授权失败问题求助
MongoDB Compass通过IAM认证连接AWS DocumentDB时授权失败问题求助
我现在遇到个头疼的问题:用MongoDB Compass通过IAM认证连接AWS DocumentDB一直报Authorization Failure,但用mongosh却能正常连上,实在搞不懂哪里出问题了,想求助大家帮我排查下细节。
我的环境与前置操作
- 身份凭证:通过AWS Identity Center获取的临时访问密钥(带会话令牌),已经在终端导出了环境变量:
export AWS_ACCESS_KEY_ID="ASIAXAMPLEKEY123456" export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEMz//////..." - DocumentDB集群:连接地址为
docdb-cluster.cluster-abc123.us-east-1.docdb.amazonaws.com:27017,需TLS加密,CA证书文件已准备完成 - 工具版本:MongoDB Compass v1.49.1(MacOS系统),mongosh可正常连接集群
能成功的操作(mongosh连接)
用以下命令可以毫无障碍地连接到DocumentDB集群:
mongosh "mongodb://docdb-cluster.cluster-abc123.us-east-1.docdb.amazonaws.com:27017" \ --authenticationMechanism=MONGODB-AWS \ --authenticationDatabase='$external' \ --tls \ --tlsCAFile=<cert>
全部失败的Compass连接尝试
不管用哪种方式启动或配置Compass,最终都触发Authorization Failure:
- 直接打开Compass,使用和mongosh完全相同的连接字符串(依赖终端已导出的环境变量,未手动输入密钥),连接失败
- 手动在Compass的AWS IAM认证区域填写访问密钥、密钥ID和会话令牌,同样报授权失败
- 尝试论坛看到的命令行启动Compass的方式,依然失败:
先编码会话令牌:
再启动Compass:ENCODED_TOKEN=$(node -p "encodeURIComponent(\"${AWS_SESSION_TOKEN}\")")/Applications/MongoDB\ Compass.app/Contents/MacOS/MongoDB\ Compass \ --username="${AWS_ACCESS_KEY_ID}" \ --password="${AWS_SECRET_ACCESS_KEY}" \ --trustedConnectionString \ "mongodb://docdb-cluster.cluster-abc123.us-east-1.docdb.amazonaws.com:27017/?authMechanism=MONGODB-AWS&authSource=\$external&tls=true&tlsCAFile=/Users/username/global-bundle.pem&replicaSet=rs0&retryWrites=false&authMechanismProperties=AWS_SESSION_TOKEN:${ENCODED_TOKEN}"
我的疑问
- 为什么mongosh能正常认证,Compass却不行?两者用的是同一套凭证和连接参数
- 有没有针对临时会话令牌的特殊处理是Compass需要但我没做的?
- 是不是Compass的MONGODB-AWS认证机制对临时凭证的支持有什么隐藏的坑?




