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

AWS S3存储桶策略无法拒绝EC2实例上传的原因排查

S3存储桶策略无法阻止EC2上传的原因及解决办法
  • 核心问题:你错误指定了请求主体(Principal)
    当SSH登录EC2后用aws s3 cp text.txt s3://bucket-name上传时,发起请求的身份是EC2实例关联的IAM角色(或你手动配置的IAM用户),而非EC2服务本身(ec2.amazonaws.com)。你当前策略里指定的Principal: Service: ec2.amazonaws.com,只会匹配EC2服务直接发起的请求(比如系统级的实例备份操作),完全覆盖不到你通过CLI发起的用户/角色请求,所以策略根本不会触发。

  • 正确的配置方式
    针对实际发起请求的IAM身份配置Deny策略,两种常用方案:

    1. 修改存储桶策略:将Principal替换为目标IAM角色/用户的ARN,同时缩小Action范围(只限制上传用s3:PutObject即可):
      {
          "Version": "2012-10-17",
          "Id": "Policy1668560706336",
          "Statement": [
              {
                  "Sid": "Stmt1668560704089",
                  "Effect": "Deny",
                  "Principal": {
                      "AWS": "arn:aws:iam::你的账户ID:role/EC2实例关联的角色名"
                  },
                  "Action": "s3:PutObject",
                  "Resource": "arn:aws:s3:::bucket-name/*"
              }
          ]
      }
      
    2. 直接修改EC2的IAM角色:给实例关联的IAM角色添加内联Deny策略,效果相同:
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Deny",
                  "Action": "s3:PutObject",
                  "Resource": "arn:aws:s3:::bucket-name/*"
              }
          ]
      }
      
  • 额外提醒

    • 如果是在EC2上手动用aws configure设置了IAM用户凭证,那存储桶策略的Principal要换成该IAM用户的ARN。
    • Deny策略优先级高于所有Allow权限,只要配置正确,一定会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:11:30