我尝试仅允许对其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
}
}
}
]
}
但仍有人可以访问我的网址。
有什么想法吗?
答案 0 :(得分:6)
“任何人仍然可以访问”您的对象这一事实表明您已授予对象的默认访问权限,然后您尝试拒绝没有签名的访问权限(预签名URL)。
如果您希望仅使用预签名URL提供对Amazon S3中对象的访问权限,则不需要存储桶策略。解释......
默认情况下,Amazon S3中的所有对象都是私有的。然后,您可以添加权限,以便人们可以访问您的对象。这可以通过以下方式完成:
Pre-Signed URL 可用于授予对S3对象的访问权限,作为“覆盖”访问控制的一种方式。通过附加到期时间和签名,可以通过URL访问通常的私有对象。这是一种在不需要Web服务器的情况下提供私有内容的好方法。
如果您的目标是仅在使用预签名网址的位置投放内容,则:
这样,访问对象的唯一方法是使用预签名URL(具有签名)。不需要存储桶策略。