用于显示图像的AWS S3策略(只读)。请验证

时间:2015-09-07 22:38:05

标签: amazon-s3

我很惊讶为AWS S3-bucket提供只读权限是多么复杂。也许它只是我,但我想会有几个使用S3来存储网站的图像,从而使它们可用,但是只读应该是一个"点击并选择" -option。

相反,据我所知,您使用他们的bucket policy generator为此使用了一个存储桶策略。

我已经创建了这个政策,据我所知应该做我想做的事情:

{
    "Version": "2012-10-17",
    "Id": "Policy1441664301333",
    "Statement": [
        {
            "Sid": "Stmt1441664293105",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket-name/*"
        }
    ]
}

当然my-bucket-name被替换。这适用于使我的图像(整个桶只是图像)公开可用。由于我根本不理解本政策中的代码,而且我似乎无法找到有关它的内容,我想验证一下:

  • 此策略是否允许用户除了读取存储桶中的文件之外还执行其他操作?即有人可以删除,上传文件等吗?基本上,我是否有可能在我的图像中发生恶意事件?

我认为这是StackOverflow可以提出的问题的边界,但我认为这个问题非常普遍,因此对其他人和参考都很有意思。

1 个答案:

答案 0 :(得分:4)

解释此政策:

Version": "2012-10-17",

这是政策语言的版本。 2012-10-17是最新的。

"Id": "Policy1441664301333",

这是一个不透明的标识符,一个标签,对系统没有任何意义。

"Statement": [
    {

开始制定政策声明。

        "Sid": "Stmt1441664293105",

另一个不透明的标识符。

        "Effect": "Allow",

此政策(如果匹配)允许指定的操作。相反的是拒绝。

        "Principal": "*",

此政策适用的用户是谁? * =任何人和所有人

        "Action": "s3:GetObject",

匹配此规则时允许执行哪些操作?从S3存储桶中获取对象。

        "Resource": "arn:aws:s3:::my-bucket-name/*"

存储桶中的哪个存储桶和哪些文件?

    }

政策声明结束。

此政策符合您的要求。

当然,有一种更简单的方法可以实现这一目标。通过控制台上传到S3时,您可以选择“公开所有内容”,或者通过API上传时,您可以使用名为public-read的预制ACL。这样做会授予相同的权限,但是在对象级别而不是桶级别,但效果是相同的。

在S3中,以及所有受IAM策略约束的AWS,默认操作都是拒绝。 Something 必须允许访问,对于你想要公开的东西...而在S3的情况下,某些东西可以是桶级策略,对象级。没有任何允许放置,删除,列表等的规则,意味着这些内容被隐含地拒绝。

评估策略时,单个匹配的“拒绝”规则(内置隐式拒绝除外)会覆盖任何“允许”规则。