2014-07-01 63 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

相關問題