我正在 AWS 中创建一个内部应用程序负载均衡器。我希望它只能通过 SNS 访问/访问并阻止所有其他请求。
我尝试查找 AWS 使用的 SNS IP(因此我只能将这些 IP 列入白名单),但没有可靠的范围。
有没有办法做到这一点?
PS。我正在使用 cloudformation
我正在 AWS 中创建一个内部应用程序负载均衡器。我希望它只能通过 SNS 访问/访问并阻止所有其他请求。
我尝试查找 AWS 使用的 SNS IP(因此我只能将这些 IP 列入白名单),但没有可靠的范围。
有没有办法做到这一点?
PS。我正在使用 cloudformation
您可以将 HTTP 终端节点订阅到 Amazon SNS 主题。
您可以使用负载均衡器的 DNS 名称作为端点,因此消息将被发送到负载均衡器。负载均衡器需要位于公共子网中,因为 Amazon SNS 位于 Internet 上。
您还需要通过 SNS 发送到端点的链接来确认订阅。(请参阅使用 Amazon SNS 以 HTTP/S 终端节点作为订阅者的系统到系统消息传递)
要“限制”向负载均衡器发送流量的能力,以便只有 Amazon SNS 可以发送请求,您可以在负载均衡器上配置一个安全组。但是, AWS IP 地址范围的文件中并未列出Amazon SNS ,因此您不知道允许哪些 IP 地址作为入站流量。ip-ranges.json
您可以进行一些试验以查看 SNS 似乎使用的 IP 地址,然后分配更大的 CIDR 范围,但这并不能保证您会知道所有可能的 IP 地址。因此,您唯一的希望是不要限制访问,而是冒着其他系统/人向负载均衡器发送流量的风险。
另类设计
您可以重新设计您的应用程序以使用 Amazon SQS 队列,而不是通过负载均衡器将消息从 Amazon SNS 发送到您的应用程序(可能在 Amazon EC2 实例上运行):