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

时间:2014-07-01 07:21:35

标签: amazon-web-services amazon-s3 amazon-iam

我正在尝试编写一个IAM策略,该策略拒绝访问除一个文件夹之外的所有文件夹。这似乎是关于here的确切用例。

我写了一个看起来像这样的政策:

{
  "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/*"]
    }
  ]
}

基本上(对我来说),与他们的例子完全相同。

它不起作用。

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

2 个答案:

答案 0 :(得分:0)

有关调整/诊断任何类型IAM Policies的问题,我强烈推荐IAM Policy Simulator(有关详细信息和直接访问,请参阅Using the IAM Policy Simulator):

  

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

策略模拟器可能有点挑剔/难以使用,但我刚刚将引用的示例策略验证到Allow Users to Access a Personal "Home Directory" in Amazon S3,如下所示:

  1. 将策略添加到测试IAM用户
  2. 直接点击AWS管理控制台
  3. 中的“模拟政策”链接
  4. 选择服务Amazon S3和所需的操作,例如GetObject(或只是全选
  5. 以S3资源格式输入正在测试的资源,例如: arn:aws:s3:::testbucket.example.com/home/testuser/*
  6. 随后为测试输入aws:username的变体,即testuseranotheruser
  7. 顺便说一句,它起初对我来说不起作用,因为anotheruser已成为授予一般S3读取访问权限的组的一部分,这是IAM策略模拟器立即浮出水面 - 也许这就是你的问题IAM配置呢?

答案 1 :(得分:0)

这个怎么样:

{
  "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 以了解相关操作。