2012-03-21 133 views
1

我想限制公共存取我們存儲在S3中的某些對象,但在相同層次的密鑰中顯示其他對象。例如,假設我想讓bucketname/*公開可讀。但是想要阻止任何未明確授予IAM訪問權限的用戶訪問bucketname/*/hidden/*僅適用於公共限制的Amazon S3存儲桶策略

我可以做到這一點就像一隻水桶政策:

{ 
    "Id": "Policy123", 
    "Statement": [ 
    { 
     "Sid": "Stmt123", 
     "Action": [ "s3:GetObject" ], 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::bucketname/*", 
     "Principal": { 
     "AWS": [ "*" ] 
     } 
    }, 
    { 
     "Sid": "Stmt124", 
     "Action": [ "s3:GetObject" ], 
     "Effect": "Deny", 
     "Resource": "arn:aws:s3:::bucketname/*/hidden/*", 
     "Principal": { 
     "AWS": [ "*" ] 
     } 
    ] 
} 

但防止我已授予任何IAM用戶/用戶組訪問隱藏的對象。在第二條語句中是否有本金的設置,只有匹配未經身份驗證的訪問?或者更好的是,有沒有辦法只列出那些校長那應該不是受政策聲明影響?

+1

更新2016年:您現在可以使用http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#NotPrincipal標記來表示「所有校長,但... – Claude 2016-11-18 21:35:02

回答

3

根據AWS的支持,目前這是不可能的。任何Deny策略都會覆蓋匹配(或子集)策略,並且無法僅拒絕匿名訪問。

通過爲與bucketname/*/hidden/*匹配的所有對象指定私有ACL,可以實現類似的效果,但這不是很靈活,必須手動應用。

0

您不需要在存儲桶上設置策略。實際上,您可以在IAM用戶或組上應用相同的策略,具體取決於您的方案中哪種方式效果最好。

https://console.aws.amazon.com/iam/home?#

  • 用戶
  • 選擇所需的用戶
  • 點擊權限選項卡
  • 連接用戶策略
  • 自定義策略
  • 選擇
  • 複製和粘貼政策
  • 應用策略

有時需要將額外權限添加到用戶,以便他們可以看到桶進行導航。例如,如果他們使用雲漿果,則需要爲他們提供對主桶的列表訪問權限。例如,參見我的一項政策。

{ 
    "Statement": [ 
    { 
     "Sid": "Stmt1330983243489", 
     "Action": [ 
     "s3:*" 
     ], 
     "Effect": "Allow", 
     "Resource": [ 
     "arn:aws:s3:::<allowbucket1>", 
     "arn:aws:s3:::<allowbucket1>/*" 
     ] 
    }, 
    { 
     "Sid": "Stmt1330983260440", 
     "Action": [ 
     "s3:ListAllMyBuckets" 
     ], 
     "Effect": "Allow", 
     "Resource": [ 
     "arn:aws:s3:::*" 
     ] 
    }, 
    { 
     "Sid": "Stmt1330983357419", 
     "Action": [ 
     "s3:CreateBucket", 
     "s3:DeleteBucket", 
     "s3:PutBucketNotification", 
     "s3:PutBucketPolicy", 
     "s3:PutBucketRequestPayment" 
     ], 
     "Effect": "Deny", 
     "Resource": [ 
     "arn:aws:s3:::*" 
     ] 
    } 
    ] 
} 
+0

我確實需要一個存儲桶策略來處理未經身份驗證的訪問IAM用戶已被授予訪問其自己策略中的所有對象的權限,「*/hidden/*'存儲桶上的」拒絕「策略可防止IAM用戶看到這些對象。這個問題可以讓這個更清晰 – bkirkbri 2012-03-21 18:21:57

+0

你可以在桶策略中添加一個允許規則,其原理如下:'arm:aws:iam :: '這應該允許這個用戶訪問。 iam訪問會爲用戶名輸入一個*,然後您可以使用iam權限拒絕授權用戶訪問存儲桶。 – bwight 2012-03-21 22:26:42

相關問題