You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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认证:

  1. 客户端通过IRSA角色获取临时AWS凭证
  2. 向MongoDB Atlas发送包含凭证签名的认证请求
  3. Atlas调用AWS STS验证角色身份,匹配Atlas中配置的IAM用户权限
  4. 验证通过后,Pod即可无密码访问MongoDB集群

内容的提问来源于stack exchange,提问作者blaiso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:43:11