【发布时间】:2018-08-12 10:48:27
【问题描述】:
我在 AWS 云中有一个安全的 Web API,我正在尝试找出在不影响安全性的情况下将其置于负载均衡器后面的最佳方法。
目前,所有通信都采用传统的端到端加密方式。 API 服务器有一个 Let's Encrypt 证书,用于处理与客户端交换的所有消息。除非加密被破坏,否则除了服务器及其客户端之外,没有人可以查看消息的原始内容。
如果我开始使用负载均衡器并允许我的服务器的多个实例同时运行,我将不得不放弃 LE 并使用集中式证书管理(例如 ACM)。 AWS 方便地支持将 ACM 生成的证书链接到负载均衡器 HTTPS 侦听器。这对于自动续订特别有用。但是,负载均衡器随后会移除加密层,并且从那时起,与我的服务器实例的所有通信都将被解密。
我不太愿意让我的原始数据在公共云中传输。不过,我欢迎对此提出第二意见。
因此,我的问题是:让负载均衡器剥离 HTTPS 加密层并将所有流量作为 HTTP 转发到内部服务器实例是否安全?
既然我能猜到答案,我将不胜感激有关如何安全部署负载平衡的任何建议。
【问题讨论】:
-
答案归结为 AWS 网络基础设施是否创建了一个真正的 私有 网络,互联网上的陌生人无法为您回答这个问题。亚马逊肯定说是,但这可能只是意味着尚未发现漏洞。
-
“公有云”这个词并不是对 VPC 网络环境的完全公平的描述。您担心的威胁的性质是什么?如果这个问题的答案似乎太明显了,那么您可能是在对底层网络的一些错误假设下进行操作。
-
我的问题来自一个基本假设,即除非采取特定步骤来保护它,否则任何网络基础设施都应该被认为是不安全的。在这种情况下,我能想象到的最有可能的威胁是第三方拦截或利用(例如 MITM 攻击)负载均衡器和目标组中的服务器实例之间未受保护的通信。
-
您打算使用应用程序还是经典 ELB?
-
@PetrMánek 就我而言,我在 ALB 的 TargetGroup(使用 ECS)下注册了 ALB 和 Docker 容器。 ALB 是一种通过 HTTP 向容器发送流量。稍后我们不得不更改容器以通过 HTTPS 进行侦听。带硬编码证书的容器有点困难,后来我更改了 docker 入口点,以便在运行时从 ACM 下载证书并进行初始化。
标签: amazon-web-services security https amazon-elb amazon-ecs