json – 如何在S3存储桶策略中执行OR条件?

我正在研究S3存储桶策略.我们的想法是明确拒绝访问帐户中的所有IAM用户,但明确授予的用户除外.

我找到了一篇博客文章,解释了如何限制对特定用户的访问.它运作良好.但是,我想扩展语法以包括将被允许访问的第二个IAM用户.实际上,这是OR条件.

但是,我对JSON很新,而且我不确定如何去做.

以下是用于限制对单个用户的访问的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:userId": [
                        "AIDA<obfuscated id>:*",
                        "AIDA<obfuscated id>",
                        "111111111111"
                    ]
                }
            }
        }
    ]
}

任何人都可以帮我编辑上面的JSON以允许OR条件,我可以指定一个允许访问的额外用户ID吗?

AdvThanksance!

最佳答案 您不需要创建此拒绝规则,因为除非有明确的允许规则,否则所有请求都是
denied by default.

要授权多个IAM用户,可以将它们列为数组元素.因此,您可以按如下方式编写存储桶策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAllS3ActionsForSpecificIAMUsers",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::<account-number-without-hyphens>:user/<username1>",
          "arn:aws:iam::<account-number-without-hyphens>:user/<username2>"
        ]
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::my-bucket", 
        "arn:aws:s3:::my-bucket/*"
      ]
    } 
  ]
}

您可以找到有关Principal元素here的更多信息.

点赞