亚马逊上的存储桶权限

use*_*408 2 amazon-s3 amazon-web-services

我正在尝试允许只对其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
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

Joh*_*ein 6

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

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

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

  • 访问控制列出单个对象的权限
  • 一个桶策略(如上所述)
  • IAM用户和组

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

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

  • 不要通过上面列出的常规方法分配任何权限(这默认情况下保持私有)
  • 使用预签名URL访问对象

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