【问题标题】:Is it possible to make a Load balancer (ELB) only be accessed by SNS?是否可以使负载均衡器 (ELB) 仅由 SNS 访问?
【发布时间】:2019-11-24 14:03:50
【问题描述】:

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

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

有什么办法吗?

附言。 我正在使用 cloudformation

【问题讨论】:

  • “被 SNS 使用”是什么意思? Amazon Simple Notification Service 不“使用”数据库。
  • 您是否打算使用负载均衡器来接收来自 SNS 的 HTTP 通知?如果是,那么您不能使用内部负载均衡器,因为它不接受来自 Internet 的请求。对于您的实际问题,可能有更好的解决方案,但您需要告诉我们这个问题是什么。
  • @JohnRotenstein 我的意思是只允许 SNS 向 ELB 发出请求。 (其他都被列入黑名单)
  • @kdgregory 哦。那么内部负载均衡器无法接收来自 SNS 的 HTTP 请求?如果是这样的话,你知道我怎样才能实现我的目标吗? (正如问题所说,将除 SNS 之外的所有其他内容列入黑名单)
  • 你不能。您要解决的真正问题是什么?您要防止的威胁是什么?

标签: amazon-web-services networking amazon-cloudformation amazon-elb internal-load-balancer


【解决方案1】:

您可以订阅 HTTP 终端节点到 Amazon SNS 主题。

您可以使用负载均衡器的 DNS 名称作为端点,因此消息将被发送到负载均衡器。负载均衡器需要位于公共子网中,因为 Amazon SNS 在 Internet 上。

您还需要通过 SNS 发送到端点的链接确认订阅。 (见Using Amazon SNS for System-to-System Messaging with an HTTP/S Endpoint as a Subscriber

要“限制”向负载均衡器发送流量的能力,以便只有 Amazon SNS 可以发送请求,您可以在负载均衡器上配置安全组。但是,Amazon SNS没有列在 AWS IP Address Rangesip-ranges.json 文件中,因此您不知道允许哪些 IP 地址作为入站流量。

您可以尝试一下,看看 SNS 似乎使用了哪些 IP 地址,然后分配更大的 CIDR 范围,但这并不能保证您会知道所有可能的 IP 地址。因此,您唯一的希望是限制访问,但冒着其他系统/人员向负载均衡器发送流量的风险。

另类设计

您可以重新设计您的应用程序以使用 Amazon SQS 队列

  • 将 Amazon SQS 队列订阅到 Amazon SNS 主题
  • 让您的应用程序轮询 SQS 队列以获取消息(而不是等待通过 HTTP 和负载均衡器接收消息)

【讨论】:

  • 嗨,John,我认为您说 SNS“在 Internet 上”是不正确的。根据我收集的信息,您可以在虚拟私有云上私下使用 SNS:docs.aws.amazon.com/sns/latest/dg/sns-vpc-tutorial.html
  • @drone1 是的,您可以向 VPC 添加 VPC Endpoint for Amazon SNS 以获得对 Amazon SNS 的访问权限。但是,这是用于发送 Amazon SNS。这个特定问题是关于 Amazon SNS 联系负载均衡器的,负载均衡器将来自 Amazon SNS 通过 Internet。无法通过 VPC 端点将此类通信导入 VPC。
猜你喜欢
  • 2015-08-24
  • 1970-01-01
  • 2017-01-25
  • 2023-01-13
  • 2021-12-07
  • 1970-01-01
  • 2019-02-14
  • 2018-05-19
  • 1970-01-01
相关资源
最近更新 更多