Cloudfront 限制存储桶策略中的 IP

Posted

技术标签:

【中文标题】Cloudfront 限制存储桶策略中的 IP【英文标题】:Cloudfront restricting to IPs in bucket policy 【发布时间】:2018-04-24 05:35:18 【问题描述】:

我正在使用 AWS S3 开发一个演示网站,并使用存储桶策略(例如)限制了一定数量的 IP。


"Id": "S3PolicyId1",
"Statement": [
    
        "Sid": "IPDeny",
        "Effect": "Deny",
        "Principal": 
            "AWS": "*"
        ,
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::my-wicked-awesome-bucket/*",
        "Condition": 
            "NotIpAddress": 
                "aws:SourceIp": "XX.XX.XX.XX/XX"
            
        
    
]

这很好用。现在我想使用 CloudFront 在自定义域上通过 HTTPS 为网站提供服务。我已创建分配并且已修改存储桶策略(以允许 CloudFront 访问),但当我尝试访问 CloudFront URL 时,我不断收到拒绝访问错误。

是否仍然可以使用 CloudFront 使用存储桶策略 IP 访问列表?如果是这样,我该怎么做?

【问题讨论】:

【参考方案1】:

您可以从 S3 存储桶策略中删除 IP 黑名单/白名单,并将具有所需访问规则的 AWS WAF 附加到 CloudFront 分配。

注意:确保在将 S3 存储桶设为私有时,在 CloudFront 和 S3 中正确设置源访问身份用户。此外,如果存储桶位于与北弗吉尼亚不同的区域,则 DNS 传播可能需要一些时间。

【讨论】:

谢谢阿山。我目前正在尝试使用我认为不包括 WAF 的 AWS 免费套餐。有其他选择吗? 使用 CloudFront,白名单的唯一选项是 WAF。 好的,我可能不得不退回到这个。与 IP 相比,基本身份验证可能是一种选择,但我不确定这是否会更容易。【参考方案2】:

一个 lambda 函数,可根据已发布的 IP 列表Here 的变化更改存储桶策略

该功能可以被SNS主题监控IP列表调用。 Here is the documentation on that.

这是它的 SNS 主题。

arn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged

【讨论】:

以上是关于Cloudfront 限制存储桶策略中的 IP的主要内容,如果未能解决你的问题,请参考以下文章

通过 IP 限制对 CloudFront 的访问

如何使用特定的引用策略和 CloudFront 分配改进 S3 存储桶的反抓取

AWS CloudFront:不存在这样的存储桶

同一 CloudFront 分配中的多个 S3 存储桶

在 CloudFront 的账户之间共享 S3 存储桶

如何获取使用 Cloudfront 上传的 S3 存储桶中的文件?