如何针对内部和外部请求配置面向 LB 安全组的 AWS 互联网

问题描述 投票:0回答:1

我很难弄清楚如何为我的 LoadBalancer 设置正确的安全组规则。我做了一个图表来尝试说明这个问题,请看下图:

我有一个面向互联网的 LoadBalancer(图中的“服务 A LoadBalancer”),它是从“内部”和我们的一项 ECS 服务(图中的“任务 B”)请求的。对于内部请求,我可以为“Service A LoadBalancer”配置一个 SecurityGroup 规则,允许从我们内部 IP 的 CIDR 向端口 80 上的 LoadBalancer 传入请求。那里没问题。但对于其他 ECS 服务(任务 B),我如何添加一条仅允许来自任务 B 的请求的规则(图中的“服务 A 安全组”)? (或者仅来自 ECS 集群中的任务)?由于它是面向互联网的负载均衡器,因此请求是从机器 EC2 的公共 IP 发出的,而不是私有 IP(据我所知?)。

我显然可以制定一条规则,允许来自 0.0.0.0/0 的端口 80 上的请求,这可以工作,但这还远远不够限制。由于它是面向互联网的负载均衡器,因此添加允许来自“集群安全组”(图中)的请求的规则并不会减少它。我认为这是因为 LB 无法推断请求源自哪个 SecurityGroup,因为它是面向互联网的 - 如果它是内部 LoadBalancer,那么这将起作用。但我无法使用内部 LoadBalancer,因为它也是从 AWS 外部(内部)请求的。

如有任何帮助,我们将不胜感激。

谢谢 弗雷德里克

amazon-web-services amazon-elb aws-security-group
1个回答
1
投票

我们通过运行单独的面向互联网和内部负载均衡器来解决这个问题。同一集群可以有多个 ELB 或 ALB (ELBv2)。假设您的 ECS 集群运行在诸如

10.X.X.X
之类的 IP 范围内,您可以打开
10.X.0.0/16
以在内部 ELB 上进行内部访问。只需确保 ECS 集群 SG 也对 ELB 开放即可。假设您在发出请求时使用内部 ELB 地址的 DNS,任务 B 可以通过内部 ELB 地址到达任务 A。如果您访问公共 DNS 的 IP,它将始终是公共请求。

但是,您可能需要从长远考虑是否真的需要公共 ELB。下一步通常是运行 OpenVPN 等 VPN,而不是 IP 限制,以便您可以连接到 VPC 并访问专用网络上的所有内容。通常,如果我们确实想要在互联网上获得某些东西(例如为外部客户提供服务),我们通常只会运行面向互联网的 ELB。

© www.soinside.com 2019 - 2024. All rights reserved.