MongoDB IAM身份认证故障:无法使用IAM角色完成身份验证
你遇到的13号未授权错误完整信息如下:
error: { "operationTime" : Timestamp(1635767862, 1), "ok" : 0, "errmsg" : "command find requires authentication", "code" : 13, "codeName" : "Unauthorized", "$clusterTime" : { "clusterTime" : Timestamp(1635767862, 1), "signature" : { "hash" : BinData(0,"WibtM8VK2aorci9mA6QNyP/ummU="), "keyId" : NumberLong("7023742477949468676") } } }
可按以下步骤逐一排查:
- 首先确认Atlas集群版本支持IAM身份认证:仅M10及以上付费集群支持AWS IAM身份验证,M0/M2/M5免费集群不支持该特性,若使用免费集群需切换为密码认证方式。
- 检查Atlas数据库访问配置:需在Atlas控制台「数据库访问」页面新建类型为AWS IAM角色的数据库用户,填入对应AWS IAM角色的完整ARN,并为该用户分配目标数据库的对应操作权限,仅在AWS侧创建绑定EC2的IAM角色无法直接访问Atlas数据库。
- 验证AWS IAM角色配置:检查IAM角色的信任策略是否允许EC2服务代入角色,可登录EC2实例执行
aws sts get-caller-identity命令,确认返回的角色ARN和你配置的一致,同时需确保实例内没有硬编码的AWS凭证(例如~/.aws/credentials文件内的AK/SK)覆盖实例角色的默认凭证。 - 核对数据库连接字符串:使用IAM认证的连接字符串必须指定
authSource=$external和authMechanism=MONGODB-AWS参数,标准格式参考:
连接时无需额外填写用户名和密码,MongoDB驱动会自动从EC2实例元数据获取角色凭证完成认证。mongodb+srv://<你的集群地址>.mongodb.net/?authSource=%24external&authMechanism=MONGODB-AWS&retryWrites=true&w=majority - 检查网络访问规则:确认Atlas集群的IP白名单已放通EC2实例的出口公网IP,或已配置正确的VPC对等连接/私有端点,网络限制也可能触发认证类报错。
内容的提问来源于stack exchange,提问作者Aritra Nag
相关产品推荐
相关产品推荐

