2012-02-01 51 views
1

我正在使用AWS IAM STS(通過boto)爲我訪問S3存儲桶創建憑證。我對以下政策中的錯誤感到不知所措。我儘可能簡化了我的政策,並且仍然收到意想不到的結果。在簡單的AWS用戶策略中指定單個存儲桶的問題

當我得到我附上了以下策略的用戶令牌:

user_policy_string = r'{"Statement":[{"Effect":"Allow","Action": "s3:*","Resource":"arn:aws:s3:::*"}]}' 

這個工作,但顯然是有點過於寬鬆。在縮小與這些憑據關聯的權限,我嘗試使用相同的策略,但指定鬥:

user_policy_string = r'{"Statement":[{"Effect":"Allow","Action": "s3:*","Resource":"arn:aws:s3:::buck_binary_bucket_bay-earth-d5a/*"}]}' 

在這裏,我得到403錯誤,當我嘗試訪問S3。基於AWS文檔,我相信這是解決策略中特定問題的方法,所以我很遺憾可能會導致此限制。我指的是桶不正確嗎?

在S3控制檯中,該策略爲空(嘗試添加完全寬鬆的策略)。對於用於生成STS令牌的AWS賬戶,該政策如下:

"Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": "sts:GetFederationToken", 
     "Resource": "*" 
    }, 
    { 
     "Effect": "Allow", 
     "Action": "iam:GetUser", 
     "Resource": "*" 
    }, 
    { 
     "Effect": "Allow", 
     "Action": "s3:*", 
     "Resource": "*" 
    } 
    ] 
} 

回答

6

Here I get 403 errors when I try to access S3.

你怎麼居然嘗試通過該工具,服務,API的方式訪問S3,即?

很多時候,一個用例涉及S3 API調用,除了該策略已定位的Resource之外,還處理不同的資源類型。具體而言,您需要了解Operations on the Service(例如ListAllMyBuckets),Operations on Buckets(例如ListBucket)和Operations on Objects(例如GetObject)之間的差異。

如果您的S3訪問方法也隱式使用任何其他資源類型(即,除了您已通過buck_binary_bucket_bay-earth-d5a/*尋址的對象資源外),則這些方法需要相應的附加策略。例如,能夠通過ListBucket訪問對象本身就需要一個相應的策略片斷解決水桶像這樣前列出在桶中的對象的共同要求:

"Statement":[{ 
     "Effect":"Allow", 
     "Action":"s3:ListBucket", 
     "Resource":"arn:aws:s3:::buck_binary_bucket_bay-earth-d5a", 
     } 
    ] 
+0

感謝。這恰恰是*問題。 – 2012-02-01 03:12:21

+5

AUGH。 AWS的政策機制是_aggravating_。作爲參考,我的具體問題(讓用戶完全訪問一個存儲桶)通過以下行解決:「Resource」:[「arn:aws:s3 ::: BUCKETNAME」,「Resource」:「arn:aws: s3 ::: BUCKETNAME/*「] – Erhannis 2012-10-24 08:07:58

+0

@Steffen:先生我已經將策略應用於s3以列出單個桶,但是當我登錄到控制檯時,我無法看到任何出現此錯誤的信息:'您沒有權限訪問it' – user3086014 2014-02-12 11:55:00

相關問題