AWS NLB 到 ALB IP 白名单
Posted
技术标签:
【中文标题】AWS NLB 到 ALB IP 白名单【英文标题】:AWS NLB to ALB IP Whitelisting 【发布时间】:2019-01-22 13:00:10 【问题描述】:我已经实现了 AWS 提供的这个解决方案:Using static IP addresses for Application Load Balancers,但我遇到了一个问题。
我需要将一些静态 IP 列入白名单,并且由于此解决方案需要目标与 IP 而不是实例进行通信,因此未在 NLB 上执行 IP 保留,如下所述:Target Groups for Your Network Load Balancers。
所以,我真的不能在安全组和 NACL 上建立白名单。
在维护这个架构的同时,有没有人能解决这个问题?
【问题讨论】:
在与 AWS TAM 和 AWS 解决方案架构师交谈后,可能的解决方案是使用 AWS Global Accelerator。这基本上充当 ALB 的“云端代理”。另一个“解决方案”是在 NLB 和 ALB 之间放置一个 haproxy 实例,使用代理协议从 NLB 的目标组到 haproxy,并在发送到 ALB 之前让 haproxy 设置 X-Forwarded-For。在 ALB,使用 AWS WAF 将 X-forwarded-for 解析为准安全白名单。虽然这可能会奏效,但它是一个非常简单的解决方案,不会成为堆栈溢出的“答案”。 另一个可能的解决方案是在单个负载均衡器前使用 nginx+。 Nginx+ 可以将 IP 列入白名单,并在 X-forwarded 中保留 IP 地址,并且可以动态更新而无需重新启动。可能不是正确的解决方案,但这可能是另一种剥猫皮的方法。值得一看 imo 【参考方案1】:您是否查看过您在Using static IP addresses for Application Load Balancers 提到的文章中的Lambda 函数采取的步骤 部分?
您可以从 AWS S3 存储桶以及 AWS CloudWatch 流中获取要列入白名单的 IP。您甚至可以通过更新相同的 AWS Lambda 函数或创建您自己的函数并使用 AWS 开发工具包 API 调用(如 authorize_security_group_ingress() 和 revoke_security_group_ingress() 通过对象上传时触发的 Lambda 函数来自动更新安全组入站和出站规则) (新 IP 列表)在 S3 上。
【讨论】:
ALB 在设置为使用 lambda“胶水”功能时将不会接收外部客户端 IP 地址。转发到由 IP 地址组成的目标组的 NLB 将收到 NLB 的私有 IP 地址,而不是 NLB 提供给由 EC2 实例组成的目标组的完整直通。以上是关于AWS NLB 到 ALB IP 白名单的主要内容,如果未能解决你的问题,请参考以下文章
使用现有策略的 AWS Gateway 中的无服务器白名单 IP
如何将 AWS RDS 安全组中的 Zapier IP 地址列入白名单
可以将 ip 列入白名单以与 aws 负载均衡器后面的 ec2 实例进行入站通信吗?