繁体   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