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

配置S3存储桶策略:仅允许指定IAM用户与EC2角色访问

仅允许指定IAM用户和角色访问的S3存储桶策略实现

这份S3存储桶策略可以精准实现仅让IAM用户test和IAM角色test-role访问目标存储桶的需求,下面是对策略的拆解和使用说明:

策略逻辑解析

策略采用「允许指定主体+拒绝所有其他主体」的双重控制逻辑,确保访问范围严格受限:

  • 允许规则:前两条语句分别给test用户和test-role角色授予存储桶及所有对象的全量S3操作权限
  • 兜底拒绝规则:第三条语句通过NotPrincipal匹配所有不在允许列表中的主体,直接拒绝他们对存储桶的任何操作(Deny权限优先级高于Allow,彻底杜绝未授权访问)

可直接使用的策略(需替换占位符)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowTestUSER",
      "Effect": "Allow",
      "Principal": {
        "AWS": ["arn:aws:iam::account-id:user/test"]
      },
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*"]
    },
    {
      "Sid": "AllowEC2Role",
      "Effect": "Allow",
      "Principal": {
        "AWS": ["arn:aws:iam::account-id:role/test-role"]
      },
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*"]
    },
    {
      "Sid": "DenyEverythingIfNotTestUserandTestRole",
      "Effect": "Deny",
      "NotPrincipal": {
        "AWS": [
          "arn:aws:iam::account-id:user/test",
          "arn:aws:iam::account-id:role/test-role"
        ]
      },
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*"]
    }
  ]
}

关键使用提示

  • 把策略里的account-id替换成你的AWS账号数字ID,my-bucket替换成实际的存储桶名称
  • 如果不需要给主体开放全部S3权限,建议把s3:*改成具体需要的操作(比如s3:GetObject、s3:PutObject),遵循最小权限原则
  • AWS根用户默认拥有所有资源的访问权,如果需要限制根用户访问,要在第三条规则的NotPrincipal数组里添加根用户ARN:arn:aws:iam::account-id:root

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:43:36