簡體   English   中英

s3存儲桶中的我的映像可供公眾訪問,這不應該是

[英]My image in s3 bucket is accessible to public which is not supposed to be

我面臨一個非常奇怪的問題,要么是我缺乏知識,要么是aws s3中的錯誤:

因此,我創建了一個s3bucket,任何人在公共場合都無法訪問它,然后在其中放入一個圖像。 因此,當我嘗試對所有人都絕對不可見的圖像時(因此我的存儲桶和圖像都沒有公共訪問權限),然后在其中添加了以下存儲桶策略:

{
 "Version": "2012-10-17",
 "Id": "Policy1506624486110",
 "Statement": [
   {
       "Sid": "Stmt1506624421375",
       "Effect": "Allow",
       "Principal": {
           "AWS": "*"
       },
       "Action": "s3:GetObject",
       "Resource": "arn:aws:s3:::mybucketname/*"
   }
 ]
}

基於我的理解,此圖像上的所有aws資源均可訪問,但公眾中其他任何人都無法訪問。 奇怪的是,我看到公眾中的任何陌生人都可以訪問此圖像。 任何人都可以神奇地解釋該存儲桶策略使它對公眾可用嗎?

您明確地將自己的存儲桶公開。

要向所有人授予權限(也稱為匿名訪問),請將通配符“ *”設置為Principal值。 例如,如果將存儲桶配置為網站,則希望該存儲桶中的所有對象均可公開訪問。 以下是等效的:

"Principal":"*"

"Principal":{"AWS":"*"}

http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-bucket-user-policy-specifying-principal-intro.html

可能是出於歷史原因,選擇在“開始"AWS"處使用"AWS" (作為JSON對象中的對象鍵)還是使用純標量字符串"*" ,一種是比另一種舊或新的形式,但是似乎沒有記錄。 對象密鑰是一種授權類型,具有其他記錄的值,包括"CanonicalUser""Federated""Service"

除非在策略中使用其他條件測試來縮小策略的范圍,否則在策略中使用"*"有效用例很少。

另請注意,此處的*不是真正的通配符。 它只是“所有人”的占位符。 您不能在主體中使用它來匹配ARN的一部分。 例如, "AWS": [ "arn:aws:iam:account-id:user/*" ]並不意味着指定帳戶中的所有IAM用戶。

最佳實踐建議是當可以通過用戶或角色策略完成所需的操作時,不要使用存儲桶策略。

您應該特定於校長。 您可以給多個ARN而不是'*'。 您可以對策略生成器進行存儲以生成策略,並在主體中指定所需的ARN。 值得閱讀下面的鏈接,

http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM