【问题标题】:How to restrict access to AWS NLB?如何限制对 AWS NLB 的访问?
【发布时间】:2021-12-06 11:12:23
【问题描述】:
  • 服务 A:我有一些 AWS 资源位于 AWS NLB 后面。
  • 服务 B:调用服务 A 的 AWS NLB 公开的端点。该服务具有所有所需的身份验证。

我遇到了一个问题,

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

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

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

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

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

【问题讨论】:

  • 服务 B 与闯入和控制服务 B 的攻击者有什么区别?

标签: authentication amazon-iam amazon-elb nlb aws-nlb


【解决方案1】:

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

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

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

【讨论】:

  • 攻击者闯入服务 B。他发出的任何请求都可能来自服务 B 内部,因此与合法流量具有相同的源安全组。
  • 我同意,攻击者可以从服务 B 向服务 A 发送请求,但只能在 ALB 安全组中配置的允许入口端口上。这并未考虑这些服务之间的流量类型以及为验证请求而采取的安全措施。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 2020-03-04
  • 1970-01-01
  • 2021-09-14
  • 2019-04-08
  • 2016-11-23
相关资源
最近更新 更多