亚马逊上的存储桶权限

时间:2014-11-23 17:24:17

标签: amazon-web-services amazon-s3

我尝试仅允许对其URL(时间戳)上有签名的用户访问存储桶文件。

我在桶中添加了一项政策:

{
    "Version": "2008-10-17",
    "Id": "Policy1416760830285",
    "Statement": [
        {
            "Sid": "Stmt1416760822325",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/*",
            "Condition": {
                "Null": {
                    "aws:TokenIssueTime": false
                }
            }
        }
    ]
}

但仍有人可以访问我的网址。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

“任何人仍然可以访问”您的对象这一事实表明您已授予对象的默认访问权限,然后您尝试拒绝没有签名的访问权限(预签名URL)。

如果您希望仅使用预签名URL提供对Amazon S3中对象的访问权限,则不需要存储桶策略。解释......

默认情况下,Amazon S3中的所有对象都是私有的。然后,您可以添加权限,以便人们可以访问您的对象。这可以通过以下方式完成:

  • 单个对象的访问控制列表权限
  • 一个Bucket政策(如上所述)
  • IAM用户和群组

Pre-Signed URL 可用于授予对S3对象的访问权限,作为“覆盖”访问控制的一种方式。通过附加到期时间和签名,可以通过URL访问通常的私有对象。这是一种在不需要Web服务器的情况下提供私有内容的好方法。

如果您的目标是仅在使用预签名网址的位置投放内容,则:

  • 不要通过上面列出的常规方法分配任何权限(默认情况下将其保密)
  • 使用预签名网址访问对象

这样,访问对象的唯一方法是使用预签名URL(具有签名)。不需要存储桶策略。