0
  • 服务 A:我有一些 AWS 资源位于 AWS NLB 后面。
  • 服务 B:调用由服务 A 的 AWS NLB 公开的端点。该服务具有所需的所有身份验证。

但是我遇到了一个问题,

如果恶意用户能够侵入服务 B,由于服务 A 对服务 B 的身份验证的隐式信任,服务 A 将让恶意用户调用其 API。我想要以下内容来缓解这个问题,

只有服务 B 应该能够调用服务 A 公开的 API。

通常这应该很容易使用 IAM 角色/策略,但我猜 NLB 并不适用于我的用例,即只让选定的服务调用它。我猜 NLB 的设计是为了让任何人都可以调用它。有没有办法实现这种形式的服务到服务通信?

PS:我知道如果我们使用这里提到的 AWS ALB 和 AWS Classic LB 可以做到这一点,因为这两者都在请求级别工作,但 NLB 在 OSI 模型的连接级别(传输层)工作。

将 Application Load Balancer 和 Classic Load Balancer 的安全组配置为仅接受来自特定客户端的流量。这些安全组必须允许来自侦听器端口上的客户端的入站流量和到客户端的出站流量。

4

1 回答 1

0

您可以创建 AWS ALB 并让 NLB 将入口流量路由到 ALB,并让 ALB 将流量路由到 ec2 实例(服务 A)。

服务 B -> NLB -> ALB -> 服务 A

现在,您可以为您的 ALB 设置一个安全组,并允许仅来自附加您的其他 ec2 实例(服务 B)的安全组的入口流量。

于 2021-10-19T18:00:57.337 回答