拒绝访问除一个文件夹外的所有文件夹



我正在尝试编写一个拒绝访问除一个文件夹以外的所有文件夹的IAM策略。这似乎就是这里写的用例。

我写了一个像这样的策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": ["s3:*"],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::bucket"],
      "Condition":{"StringLike":{"s3:prefix":["folder/subfolder/*"]}}
    },
    {
       "Action":["s3:*"],
       "Effect":"Allow",
       "Resource": ["arn:aws:s3:::folder/subfolder/*"]
    }
  ]
}

基本上(至少对我来说)和他们的例子完全一样。

它不工作

用户被拒绝访问所有其他桶,但这个桶似乎有自由范围

对于任何类型的IAM策略的调试/诊断问题,我强烈建议使用IAM策略模拟器(请参阅使用IAM策略模拟器了解详细信息和直接访问):

在将IAM策略提交到生产环境之前,您可以使用IAM策略模拟器来测试AWS身份和访问管理(IAM)策略的效果,并测试您现有的IAM策略以验证它们是否具有预期的效果。

策略模拟器使用起来可能有点挑剔/棘手,但我刚刚验证了引用的示例策略,以允许用户访问Amazon S3中的个人"主目录",如下所示:

  1. 将策略添加到测试IAM用户
  2. 从AWS管理控制台点击"模拟策略"链接
  3. 选择业务Amazon S3和所需动作,例如GetObject(或仅 select All)
  4. 以S3资源格式输入待测资源,例如:arn:aws:s3:::testbucket.example.com/home/testuser/*
  5. 随后输入aws:username的变化进行测试,即testuseranotheruser

顺便说一句,它也没有为我工作,因为anotheruser已经是一个组的一部分,授予一般S3读访问,无论如何,这是立即浮出水面的IAM策略模拟器-也许这是你的IAM配置的问题?

这个怎么样:

{
  "Statement": [
    {
      "Sid": "AllowGroupToSeeBucketListInTheConsole",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::*"
      ]
    },
    {
      "Sid": "AllowRootLevelListingOfCompanyBucket",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::bucket"
      ],
      "Condition": {
        "StringEquals": {
          "s3:prefix": [
            ""
          ],
          "s3:delimiter": [
            "/"
          ]
        }
      }
    },
    {
      "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::bucket"
      ],
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "folder/subfolder/*"
          ]
        }
      }
    },
    {
      "Sid": "AllowUserToFullAccess",
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::bucket/folder/subfolder/*"
      ]
    }
  ]
}

阅读每条语句中的 Sid 来理解操作

相关内容

  • 没有找到相关文章

最新更新