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

SCP策略配置疑问:拒绝S3桶公共访问及白名单设置

SCP策略白名单配置建议

你当前的策略尝试用aws:SourceArn做白名单,但这个条件键是用来标识触发请求的源资源ARN(比如Lambda函数、SNS主题等),并不适合匹配你要修改的目标S3桶。针对你的需求,这里提供几种不同场景的白名单配置方案:

1. 白名单特定S3桶(允许修改指定桶的Public Access Block)

使用s3:ResourceArn条件键匹配目标桶的ARN,这样只有白名单内的桶能被修改,其他桶全部拒绝:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyBlockPublicAccessExceptWhitelistedBuckets",
      "Effect": "Deny",
      "Action": "s3:PutBucketPublicAccessBlock",
      "Resource": "arn:aws:s3:::*",
      "Condition": {
        "StringNotEquals": {
          "s3:ResourceArn": [
            "arn:aws:s3:::blockpublicaccesstest",
            "arn:aws:s3:::your-second-whitelisted-bucket"
          ]
        }
      }
    }
  ]
}

如果需要支持多个白名单桶,直接在数组里添加对应的ARN即可。

2. 白名单特定IAM实体(用户/角色)

如果需要允许特定IAM用户或角色执行该操作(不管操作哪个桶),可以用aws:PrincipalArn条件键:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyBlockPublicAccessExceptWhitelistedPrincipals",
      "Effect": "Deny",
      "Action": "s3:PutBucketPublicAccessBlock",
      "Resource": "arn:aws:s3:::*",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::123456789012:role/your-allowed-role"
        }
      }
    }
  ]
}

如果要同时白名单多个IAM实体,同样把值改成数组形式。

3. 白名单整个AWS账号

如果要允许某个账号下的所有实体执行该操作,使用aws:PrincipalAccount条件键:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyBlockPublicAccessExceptWhitelistedAccount",
      "Effect": "Deny",
      "Action": "s3:PutBucketPublicAccessBlock",
      "Resource": "arn:aws:s3:::*",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalAccount": "123456789012"
        }
      }
    }
  ]
}

4. 组合场景:同时限制桶和IAM实体

如果需要同时满足“白名单桶”和“白名单IAM实体”两个条件,可以用And操作符组合多个条件:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyBlockPublicAccessExceptCombinedWhitelist",
      "Effect": "Deny",
      "Action": "s3:PutBucketPublicAccessBlock",
      "Resource": "arn:aws:s3:::*",
      "Condition": {
        "And": [
          {
            "StringNotEquals": {
              "s3:ResourceArn": "arn:aws:s3:::blockpublicaccesstest"
            }
          },
          {
            "StringNotEquals": {
              "aws:PrincipalArn": "arn:aws:iam::123456789012:user/allowed-user"
            }
          }
        ]
      }
    }
  ]
}

这个策略的逻辑是:只有当操作的桶不在白名单,且执行操作的IAM实体不在白名单时,才拒绝请求。换句话说,只要满足其中一个白名单条件,就允许操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 02:17:27