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

如何配置S3桶New-Bucket仅对指定角色开放,无需修改大量AWS角色权限?

不用修改148个角色权限的解决方案

核心思路是利用S3存储桶策略做权限隔离,不用动现有角色的权限,只需要给新桶配置针对性的策略,就能实现需求:

具体操作步骤

1. 给New-Bucket配置桶策略,仅开放给指定角色

直接编写桶策略,先允许指定的几个角色访问新桶,再拒绝其他所有主体的访问(注意保留根用户权限,防止把自己锁在外面)。示例策略如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::你的账号ID:role/允许访问的角色1",
          "arn:aws:iam::你的账号ID:role/允许访问的角色2"
        ]
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::Primary-Bucket/New-Bucket",
        "arn:aws:s3:::Primary-Bucket/New-Bucket/*"
      ]
    },
    {
      "Effect": "Deny",
      "NotPrincipal": {
        "AWS": [
          "arn:aws:iam::你的账号ID:role/允许访问的角色1",
          "arn:aws:iam::你的账号ID:role/允许访问的角色2",
          "arn:aws:iam::你的账号ID:root"
        ]
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::Primary-Bucket/New-Bucket",
        "arn:aws:s3:::Primary-Bucket/New-Bucket/*"
      ]
    }
  ]
}

这里的NotPrincipal会排除掉允许的角色和根用户,剩下的所有主体都会被拒绝访问新桶。

2. 保持Primary-Bucket的原有配置不变

主桶的角色权限、桶策略都不用改,其他148个角色依然能正常访问主桶——因为新桶是独立的资源,主桶的权限不会影响新桶的访问控制。

3. 验证权限

分别用允许的角色和普通角色测试:

  • 允许的角色应该能正常读写New-Bucket里的内容;
  • 普通角色访问New-Bucket会收到AccessDenied错误,但访问Primary-Bucket不受影响。

注意事项

  • 一定要填对角色的ARN,写错的话会导致权限不生效;
  • 必须保留根用户的权限,否则万一策略配置错了,连修改桶策略的权限都没有;
  • 如果有服务(比如Lambda、EC2)通过角色访问S3,记得测试这些服务的访问是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:22:46