【问题标题】:AWS Cloudfront and ELB Security GroupsAWS Cloudfront 和 ELB 安全组
【发布时间】:2014-04-06 22:59:11
【问题描述】:

有人知道如何将您的云端发行版添加到 ELB 的安全组入站规则中吗?

我们为一个新站点设置了一个 Cloudfront 发行版,该站点具有一组列入白名单的安全组规则作为其来源。我看不到如何配置安全组以允许来自云端发行版的请求...

有什么想法吗?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-cloudfront amazon-elb


    【解决方案1】:

    Beginning 2022 年 2 月,您应该使用 AWS Managed Prefix List。它们是由 AWS 管理并保持最新的 IP 列表,您可以在路由表和安全组中使用这些 IP。

    请注意,Amazon CloudFront 托管前缀列表在一个安全组中计为 55 条规则。默认配额为 60 条规则,在一个安全组中仅保留 5 条额外规则的空间。您应该请求增加此配额的配额。它在路由表中计为 55 条路由。默认配额为 50 个路由,因此您必须请求增加配额才能将前缀列表添加到路由表。

    【讨论】:

      【解决方案2】:

      我在这篇文章的帮助下解决了这个问题:Automatically update security groups for Amazon CloudFront IP ranges using AWS Lambda

      这是一个循序渐进的教程,非常详细,已经有点过时了,但你不会迷路。

      唯一的缺点是每次 Lambda 函数创建一个新的安全组时,您都必须手动将其附加到您的 EC2 实例或 ELB。或许这也能以高效的方式自动解决,但博文并未提及。

      【讨论】:

        【解决方案3】:

        这更像是一个问题而不是一个答案,但嵌入其中的是我将如何做到这一点:

        第 1 步:从这里获取数据:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/LocationsOfEdgeServers.html -> http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips

        第 2 步:使用数据创建安全组...

        问题部分: 为什么AWS API对规则数量的限制少于其服务的端点数量......

        当您调用 API 时会发生这种情况(这就是我在这里结束的方式): HTTP: 400 ->

        【讨论】:

        【解决方案4】:

        如果您点击上述 cmets 中 Amir Mehler 提供的链接,则博客作者指向 Github 上的 official AWS Lambda function,它将使用 CloudFront IP 更新安全组。我用过这个,效果很好。

        如果你不喜欢 Lambda,you could do it manually

        Note第一次尝试使用示例测试配置时,更新MD5以匹配当前ip-ranges.json文件的hash,否则会出错。

        【讨论】:

        【解决方案5】:

        当您在 Cloudfront 分发中说“添加源”并单击“源域名”框时,它会列出来自该账户的所有 AWS 资源(包括 ELB)。你可以选择它。

        但是,与您的 ELB 关联的安全组应该允许公共访问(HTTP/HTTPS,0.0.0.0/0)。这一点也不安全,因为无论如何您都希望公众通过云端访问 ELB。当您通过 CDN 提供内容时,它是供公众访问的。我一直在以这种方式配置 ELB 安全组。接受其他建议!

        现在对于 ELB 后面的 EC2 的安全组:这里您不应该允许公共访问。而是只允许来自 ELB 的安全组的访问(您可以通过从列表中选择 ELB 安全组来实现此目的,而不是键入入站 IP 地址。

        现在,如果源是 S3,则可以稍作不同的配置。在这里,您无需公开存储桶。而是使用仅允许 IAM 源访问身份的存储桶策略(此处不是任何安全组)限制对存储桶的访问。更多信息在这里 - Serving Private Content through CloudFront - Amazon CloudFront

        【讨论】:

        • 是的,我可以选择它作为源,但是当连接回源时,云端会挂起(它被安全组规则阻止)。它仍然找不到这样做的方法:(
        • 我喜欢只有 cloudfront 才能访问 ELB 的想法。例如,有人在 ELB 上进行 DDoS。 ELB 启动实例,直到它达到限制并且您的应用程序不再工作。但是,如果有些人在 Cloudfront URL 上进行 DDoS,亚马逊会保护您的 ELB 并为您节省高额成本。那么,该怎么做呢?
        • 目前并没有什么捷径可走(至少我没找到),但是这个人写了一个脚本,用 CloudFront 的所有 IP 更新一个专用安全组。所以你只能允许这个sg。 24hoursmedia.com/2015/10/08/aws-cloudfront-elb-securitygroup
        • 由于 AWS WAF 已经问世,如果您通过 CloudFront 使用 AWS WAF,现在向全世界开放您的 ELB 是一个坏主意。否则,人们可能会绕过您的 WAF 设置。我们使用 Terraform 来使我们的 SG 保持最新。需要注意的一点是,每个 SG 只能有 50 条规则,因此如果 ELB 支持 HTTP 和 HTTPS,则可能需要多个 SG。
        • @SonyKadavan CloudFront 如何与 ELB 通信?是 AWS 内部还是通信未加密(如果设置为 http)并且容易受到中间人攻击?
        猜你喜欢
        • 2021-01-29
        • 1970-01-01
        • 2016-05-11
        • 1970-01-01
        • 2021-09-06
        • 1970-01-01
        • 1970-01-01
        • 2017-06-21
        • 2022-01-15
        相关资源
        最近更新 更多