如何配置IRSA使EKS Pod通过IAM角色访问MongoDB Atlas集群?
配置IRSA实现EKS Pod无密码访问MongoDB Atlas
核心逻辑说明
MongoDB Atlas的IAM认证依赖AWS STS服务验证角色身份,因此你不需要在AWS IAM策略中直接指定MongoDB集群作为资源——AWS策略的作用是允许你的IRSA角色被MongoDB Atlas的服务验证身份,而MongoDB层面的访问权限需要在Atlas控制台单独配置。
AWS IAM策略配置示例
创建一个IAM策略,授权IRSA角色允许MongoDB Atlas调用sts:GetCallerIdentity接口验证身份,同时通过条件限制仅允许Atlas服务调用,提升安全性:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:GetCallerIdentity", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalAccount": "<MONGODB_ATLAS_AWS_ACCOUNT_ID>" } } } ] }
关键参数说明
sts:GetCallerIdentity: 必须动作,MongoDB Atlas通过该API确认你的IRSA角色的合法身份aws:PrincipalAccount: 替换为MongoDB Atlas对应区域的AWS账户ID(可在Atlas控制台的IAM认证设置页获取),用于限制仅Atlas服务能触发该验证- 资源
*:sts:GetCallerIdentity是全局STS接口,无特定资源ARN,因此用*即可,条件已确保调用方安全
后续MongoDB Atlas配置
光有AWS策略不够,还需在Atlas中完成身份关联与权限配置:
- 在Atlas控制台创建IAM数据库用户,选择「AWS IAM Role」作为认证方式
- 输入你的IRSA角色ARN(格式:
arn:aws:iam::<你的AWS账户ID>:role/<IRSA角色名>) - 为该用户分配MongoDB权限(如
readWrite指定数据库、dbAdmin等) - 确认EKS集群VPC与Atlas的VPC peering/VPC端点已配置完成,Pod可正常访问Atlas集群
验证流程
EKS Pod中的MongoDB客户端(如Mongo Shell、官方驱动)需配置使用AWS IAM认证:
- 客户端通过IRSA角色获取临时AWS凭证
- 向MongoDB Atlas发送包含凭证签名的认证请求
- Atlas调用AWS STS验证角色身份,匹配Atlas中配置的IAM用户权限
- 验证通过后,Pod即可无密码访问MongoDB集群
内容的提问来源于stack exchange,提问作者blaiso
相关产品推荐
相关产品推荐

