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

关于AWS S3 Bucket Policy条件规则的权限范围验证问询

AWS S3 Bucket Policy 含义验证

问题描述

我是AWS S3 Bucket Policy的新手,在S3文档中看到如下Bucket Policy,不确定其含义。请问该策略是否表示:除用户ID为"AROAEXAMPLEID:*"、"AIDAEXAMPLEID"、"111111111111"的主体外,其他所有主体都无法对MyExampleBucket执行任何S3操作(如上传、读取、删除等)?烦请验证。

目标Bucket Policy

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::MyExampleBucket",
        "arn:aws:s3:::MyExampleBucket/*"
      ],
      "Condition": {
        "StringNotLike": {
          "aws:userId": [
            "AROAEXAMPLEID:*",
            "AIDAEXAMPLEID",
            "111111111111"
          ]
        }
      }
    }
  ]
}

策略含义分析

你的理解基本正确,以下是详细拆解验证:

  • 核心逻辑:这是一条全局拒绝规则,针对所有主体(Principal: "*"),禁止对MyExampleBucket及其所有对象执行任何S3操作(Action: "s3:*"),仅当请求发起者的aws:userId匹配列表中的任意一项时,拒绝规则才会失效。

  • 例外主体说明:

    • AROAEXAMPLEID:*:AROA开头是IAM角色的唯一标识符,后缀*表示该角色下的所有临时会话(即任何通过该角色调用AssumeRole获取临时凭证的实体)都不受此拒绝规则限制。
    • AIDAEXAMPLEID:AIDA开头是IAM用户的唯一标识符,对应的特定IAM用户可正常操作该桶。
    • 111111111111:这是AWS根账户ID,根账户拥有该桶的完全权限,不受此拒绝规则约束。
  • 权限优先级:在AWS IAM模型中,Deny规则优先级高于所有Allow规则。也就是说,即便其他策略(如IAM用户策略、桶的其他Allow规则)给了某个主体权限,只要该主体的aws:userId不在上述列表中,都会被这条Deny规则拦截,无法执行任何S3操作。

结论

该策略确实实现了:仅允许aws:userId为AROAEXAMPLEID:*、AIDAEXAMPLEID、111111111111的主体对MyExampleBucket执行S3操作,其他所有主体的所有操作都会被拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:55:16