2014-07-01 61 views
1

我正在尝试编写一个拒绝访问除一个文件夹之外的所有文件的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/*"] 
    } 
    ] 
} 

这基本上是,同样的事情作为自己的例子:

我写了一个政策,看起来像这样。

它不起作用。

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

回答

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. 选择服务Amazon S3并选择所需的操作,例如GetObject(或只是全选
  4. 以S3资源格式输入待测资源,例如: arn:aws:s3:::testbucket.example.com/home/testuser/*
  5. 随后进入aws:username变化进行测试,即testuseranotheruser

顺便也没有为我无论是在第一,因为anotheruser工作已经是理所当然一般S3读访问反正一组的一部分,它立即被IAM策略模拟器浮出水面 - 也许这就是你的IAM配置的问题?

+0

最后我们找到了一个只重命名桶并限制用户访问的解决方案,所以我没有测试它是否有效。 – blockhead

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在每个语句理解的动作。

+0

最后,我们采用了重命名桶和限制用户访问权限的解决方案,因此我没有测试它是否有效。 – blockhead

相关问题