![](/img/trans.png)
[英]AWS S3 bucket , uploaded image files are accessible only after setting individual object permission to public manually
[英]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.