2012-01-31 143 views
9

我想要弄清楚爲IAM用戶/密鑰設置的基本權限必須只能訪問S3中的單個存儲桶 - 只能在單個存儲桶上進行讀寫訪問。S3存儲桶的基本AWS IAM權限

什麼樣的權限集是完成這項工作所需的最低要求?我在S3的IAM策略生成器中選擇了所有選項,除了CreateBucketDeleteBucket之外的所有權限都在桶上啓用。我還創建了一組特定於此用戶的密鑰。

當我嘗試使用這些憑證訪問存儲桶時,即使啓用了ListAllMyBuckets屬性,我也遇到了列出存儲桶的問題。

任何人有任何經驗設置這樣的基本桶配置?好像這將是非常常見的...

+1

爲什麼要列出桶首先,當IAM用戶只應該訪問__單個桶在S3_? – 2012-01-31 08:57:12

+1

如果您沒有記錄用戶有權訪問的存儲桶名稱,那麼ListAllMyBuckets可以 - 然後代碼可以確定用戶可以真正進入的存儲桶。這取決於你想要存儲桶名稱的'多麼私密'。但是由於存儲區名稱基本上處於公共領域(您可以ping亞馬遜以查明是否有任何存儲區名稱正在使用中),因此只有「隨機字符串」存儲區名稱在任何接近私人的位置,即使這只是稍縱即逝,因爲存儲區名稱已轉生成每個網址等等。 – 2012-01-31 15:38:14

+0

Steffen,我不把這個帳戶交給ListAllBuckets,但它不能使用我想要的許可證,所以我逐漸啓用了更多權限,以查看是否有更高級別的拒絕訪問權限上... – colemanm 2012-01-31 20:55:15

回答

12

Example Policies for Amazon S3覆蓋各種用例類似或相關的到你 - 特別是你可能可能要例1相結合:讓每一個用戶在亞馬遜主目錄S3示例2:允許用戶僅列出公司存儲桶中其主目錄中的對象 - 您只需調整Resource即可將目標鎖定到您的存儲桶根目錄,即將/home/bob/*替換爲*

請注意,例2有利於ListBucket,這是一個operation on a bucket回報的一些水桶項目的信息,而ListAllMyBucketsoperation on the service返回由發送者所擁有的所有桶的列表請求,因此可能不適用於您的用例(請參閱我對後者的說明的評論)。

0

這將允許列出所有桶假設你不否認它在其他地方(我99%肯定deny語句首先評估;爲了不與IAM策略重要):

{ 
     "Effect": "Allow", 
     "Action": [ 
      "s3:ListAllMyBuckets" 
     ], 
     "Resource": "*" 
    } 

許可證不管你(不要忘了/ *也):

{ 
     "Effect": "Allow", 
     "Action": [ 
      "s3:<Put your actions here; cherry pick from the AWS documentation>" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::<Bucket name here>", 
      "arn:aws:s3:::<Bucket name here>/*" 
     ] 
    } 
相關問題