我有一个用于图像和文件资产的Amazon S3 REST端点。我希望只有CloudFront和访问图像的网站(使用http referrer)才能访问S3存储桶。
到目前为止,这是我的存储桶政策:
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXXX"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<DOMAIN>/*",
"Condition":{
"StringLike":{"aws:Referer":["http://<DOMAIN>/*"]}
}
}
]
}
但是,一旦我应用该政策,图像就无法在网站上访问。
这可能吗?
CloudFront默认剥离Referer标头,因此S3不会看到它。
您需要在CloudFront中将Referer标头列入白名单,并使缓存无效以查看其是否有效。