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

如何限制AWS IAM角色仅由EMR扮演,管控数据访问并防止策略被修改?

解决方案:实现EMR专属IAM角色及数据访问控制

1. 限制IAM角色仅允许EMR扮演,禁止用户假定

核心是通过角色的信任策略限定调用源,完全排除IAM用户的角色扮演权限:

  • 打开目标IAM角色的信任策略编辑页,替换为以下配置(替换占位符为你的AWS账号ID和区域):
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceArn": "arn:aws:emr:your-region:your-account-id:cluster/*"
        }
      }
    }
  ]
}
  • 策略说明:仅允许来自EMR集群的EC2实例扮演该角色(通过aws:SourceArn锁定请求源为EMR集群ARN),IAM用户无法直接调用sts:AssumeRole获取该角色权限。
  • 若为EMR服务角色(供EMR服务本身调用其他AWS服务),则将Principal改为"elasticmapreduce.amazonaws.com",无需EC2相关Condition。

2. 限制特定数据仅允许EMR访问

以S3存储为例,结合IAM角色权限和S3桶策略实现双重控制:

步骤1:给EMR角色添加数据访问权限

在EMR实例角色的权限策略中添加S3访问规则:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:ListBucket"],
      "Resource": [
        "arn:aws:s3:::your-target-bucket",
        "arn:aws:s3:::your-target-bucket/*"
      ]
    }
  ]
}

步骤2:配置S3桶策略拒绝非EMR角色访问

编辑目标S3桶的桶策略,添加强制拒绝规则:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::your-account-id:role/your-emr-instance-role"
      },
      "Action": ["s3:GetObject", "s3:ListBucket"],
      "Resource": [
        "arn:aws:s3:::your-target-bucket",
        "arn:aws:s3:::your-target-bucket/*"
      ]
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["s3:GetObject", "s3:ListBucket"],
      "Resource": [
        "arn:aws:s3:::your-target-bucket",
        "arn:aws:s3:::your-target-bucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::your-account-id:role/your-emr-instance-role"
        }
      }
    }
  ]
}
  • 规则说明:Deny优先级高于Allow,确保只有指定EMR角色能访问数据,Lambda、SageMaker等其他资源或用户一律被拒绝。

3. 限制EMR角色关联策略的修改权限

通过创建拒绝修改的IAM策略,阻止管理员对目标角色的权限调整:

步骤1:创建拒绝策略

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "iam:AttachRolePolicy",
        "iam:DetachRolePolicy",
        "iam:PutRolePolicy",
        "iam:DeleteRolePolicy",
        "iam:UpdateRole",
        "iam:DeleteRole"
      ],
      "Resource": "arn:aws:iam::your-account-id:role/your-emr-instance-role"
    }
  ]
}
  • 策略说明:禁止所有针对目标角色的修改、删除、策略附加/分离操作。

步骤2:应用策略

  • 将该策略附加到所有IAM管理员组、用户;若为AWS组织环境,可通过服务控制策略(SCP) 在组织层面强制生效,覆盖所有账号权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:22:16