[英]MongoAtlas AWS IAM Role Authentication
我正在为我公司的 API 服务器设置部署,它无法通过 IAM 角色连接到 MongoAtlas
我做了什么:
钥匙 | 价值 |
---|---|
URL | mongodb+srv://dev.<cluster>.mongodb.net/<DB> |
授权来源 | '$外部' |
授权机制 | 'MONGODB-AWS' |
我最终收到以下错误消息
MongoServerError: bad auth : user arn:aws:sts::<my aws acc id>:assumed-role/APIServer/* is not found
注意:包含在 <> 中的信息是有意替换的,因为我已经找到了几个解决方案指出将 <> 作为密码的一部分,这不是我这里的情况
我有同样的问题,到目前为止我发现的唯一解决方案是创建一个 aws iam 用户(不是角色,因此您可以生成安全凭证),在 atlas 上设置该用户并将用户的安全凭证放入 a. .env 文件在您的节点应用程序中。 这样 mongodb 将自动检索该用户并且它可以工作,因为您没有担任角色,所以 arn 是正确的。 这对我来说仍然不是一个好的解决方案,因为我不想管理这些密钥。 您可以做的最好的事情可能是将这些凭据存储在 aws secrets manager 中,授予 ec2 角色检索该密钥的权限,当您使用脚本启动实例时,您可以自动检索该密钥并创建 .env 文件。 (对我来说仍然是一个令人失望的解决方案)
编辑:正如我在这篇文章中自己回答的那样: AWS EC2 connection to MongoDB Atlas failed, could not find user
我的解决方案是更改 Atlas 用户的 scope。
您需要AWS_ACCESS_KEY_ID
、 AWS_SECRET_ACCESS_KEY
和AWS_SESSION_TOKEN
才能连接。 您可以从 AWS IAM > Users
仪表板获取/创建它们。 我建议为 mongo 创建一个新的密钥。
创建后,如果您已经有一个集群,您可以从 mongodb 网站获取连接字符串。
示例 URL:
mongodb+srv://<AWS access key>:<AWS secret key>@cluster0.zphy22p.mongodb.net/?authSource=%24external&authMechanism=MONGODB-AWS&retryWrites=true&w=majority&authMechanismProperties=AWS_SESSION_TOKEN:<session token (for AWS IAM Roles)>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.