我正在尝试使用具有指定生存时间的查询字符串来限制对存储在 S3 存储桶中的文件资源的访问,(如此处所述http://birkoff.net/blog/amazon-s3-query-string-authentication-using -php/ ) 为我的存储桶的别名。例如,在 Route53 中,我有一个别名类型的 A 记录,securefiles.mysite.com指向 S3 别名securefiles.mysite.com.s3-website-ap-southeast-2.amazonaws.com。
这适用于使用标准 S3 地址寻址的文件: securefiles.mysite.com.s3-ap-southeast-2.amazonaws.com/privateresource.png?biglongquerystring 或 securefiles.mysite.com.s3.amazonaws.com /privateresource.png?biglongquerystring 但是当我尝试使用较短的 securefiles.mysite.com/privateresource.png?biglongquerystring链接它时,它会失败并显示 403,访问被拒绝消息。
为了调查,我编辑了存储桶策略以允许所有用户访问所有存储桶资源
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::securefiles.mysite.com/*"
}
]
}
查询字符串现在适用于较短的地址,但它不再受到保护,因为所有用户现在都可以访问。
我还尝试对我的存储桶“不启用网站托管”,这对于完整的 S3 地址 Securefiles.mysite.com.s3.amazonaws.com/privateresource.png?biglongquerystring 再次正常工作,但 在寻址时失败,出现 404 NoSuchWebsiteConfiguration较短的securefiles.mysite.com/privateresource.png?biglongquerystring
关于如何安全地将 S3 存储桶中的文件从 Route53 A 记录寻址到我的 S3 存储桶别名的任何想法?