0

我正在 AWS 中创建一个内部应用程序负载均衡器。我希望它只能通过 SNS 访问/访问并阻止所有其他请求。

我尝试查找 AWS 使用的 SNS IP(因此我只能将这些 IP 列入白名单),但没有可靠的范围。

有没有办法做到这一点?

PS。我正在使用 cloudformation

4

1 回答 1

3

您可以将 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 实例上运行):

  • 将 Amazon SQS 队列订阅到 Amazon SNS 主题
  • 让您的应用程序轮询 SQS 队列中的消息(而不是等待通过 HTTP 和负载均衡器接收消息)
于 2019-07-17T02:27:35.743 回答