S3存储桶策略以允许访问特定用户并限制所有

roc*_*cky 4 amazon-s3 amazon-web-services

我搜索了现有问题,找不到答案。因此在这里发布。

我想将对S3存储桶的访问限制为所有用户,但使用S3存储桶策略选择少数用户除外。我知道IAM策略易于管理,我不喜欢为此特定情况创建角色和组,而是希望创建S3存储桶策略。

这是到目前为止我尝试过的操作,它并没有像预期的那样限制对用户的访问。

{
  "Version": "2012-10-17",
  "Id": "bucketPolicy",
  "Statement": [
    {

      "Effect": "Allow",
      "Principal": {
        "AWS": ["arn:aws:iam::1234567890:user/allowedusername"]
      },
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::examplebucket",
                   "arn:aws:s3:::examplebucket/*"]
    },
    {

      "Effect": "Deny",
      "Principal": {
        "AWS": ["arn:aws:iam::1234567890:user/denieduser"]
      },
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::examplebucket",
                   "arn:aws:s3:::examplebucket/*"]
    }

  ]
}
Run Code Online (Sandbox Code Playgroud)

我试图拒绝所有类似下面的内容,但是该明确的拒绝优先于allow,我本人现在无法访问存储桶;-(那是我遇到的另一个问题

{

          "Effect": "Deny",
          "Principal": {
            "AWS": ["*"]
          },
          "Action": "s3:*",
          "Resource": ["arn:aws:s3:::examplebucket",
                       "arn:aws:s3:::examplebucket/*"]
        }
Run Code Online (Sandbox Code Playgroud)

小智 5

要实现所需的目标,请使用带有“ NotPrincipal”策略元素的显式拒绝。以下策略将确保“ NotPrincipal”元素中列出的用户以外的其他用户无法访问存储桶。

    {
            "Id": "bucketPolicy",
            "Statement": [
                    {
                            "Action": "s3:*",
                            "Effect": "Deny",
                            "NotPrincipal": {
                                    "AWS": [
                                            "arn:aws:iam::1234567890:user/alloweduser"
                                    ]
                            },
                            "Resource": [
                                    "arn:aws:s3:::examplebucket",
                                    "arn:aws:s3:::examplebucket/*"
                            ]
                    }
            ],
            "Version": "2012-10-17"
    }
Run Code Online (Sandbox Code Playgroud)

  • 我收到以下错误:```此策略包含以下错误:已禁止字段 ID 有关 IAM 策略语法的更多信息,请参阅 AWS IAM 策略。``` (2认同)
  • @excessivedemon 如果任何 AWS 服务想要访问此存储桶怎么办?即 EMR 或红移。 (2认同)