要限制存储桶的访问权限,您可以使用AWS S3的存储桶策略和AWS CloudFront的分配策略来实现。下面是一个包含代码示例的解决方法:
{
"Version": "2012-10-17",
"Id": "RestrictBucketAccess",
"Statement": [
{
"Sid": "AllowCloudFrontAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity Your-Origin-Access-Identity"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
},
{
"Sid": "DenyOtherAccess",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*",
"Condition": {
"StringNotEquals": {
"aws:Referer": "https://your-cloudfront-domain.com/*"
}
}
}
]
}
上述策略中,your-bucket-name
应替换为您的存储桶名称,your-cloudfront-domain.com
应替换为您的CloudFront分配的域名,Your-Origin-Access-Identity
应替换为您的CloudFront Origin Access Identity的ARN。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowS3Access",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*",
"Principal": {
"AWS": "*"
},
"Condition": {
"StringLike": {
"aws:Referer": "https://your-cloudfront-domain.com/*"
}
}
}
]
}
上述策略中,your-bucket-name
应替换为您的存储桶名称,your-cloudfront-domain.com
应替换为您的CloudFront分配的域名。
请注意,以上示例仅供参考,您需要根据您的具体要求和环境来调整策略。