我有两个 VPC:A 和 B。
我希望 A 中的任何节点都能够打开到 B 中的任何节点的 TCP 连接,但反过来不行。B 中的任何节点还必须能够打开到公共 Internet 主机的传出连接。实现这一目标的最佳方法是什么?
用例:VPC A 包含许多敏感的内部服务,而 VPC B 包含运行完全不受信任的代码的节点。VPC A 需要向 VPC B 发出 HTTP 请求,但不得公开任何内部服务。
VPC 对等允许 A 和 B 中的任何节点之间的直接连接 - 这不能在路由级别上受到限制。安全组可用于阻止传出连接,但由于没有 DENY 规则,因此配置起来有点棘手。
网络 ACL 在这里没有用,因为必须允许从 B -> A 返回的流量。
还有其他选择吗?类似于 NAT 网关,只允许在一个方向打开连接?AWS 确实支持私有 NAT 网关,但我找不到任何此类配置的文档。
我没有详细阅读您的答案,但似乎有点不对劲。我完全不知道您为什么要使用 NAT 网关,它们纯粹是为了允许私有子网中的实例访问 Internet。
这里的一个关键是单向通信,它强烈表明安全组就是答案。我的解决方案(不用想太多):
这似乎可以通过在专用子网中添加私有 NAT 网关来实现。
此设置似乎有效:
由于 A1 和 B1 之间没有直接路由,所有流量都必须经过 NAT 网关。并且 NAT 网关只允许来自同一个 VPC 的传入连接,因此 B1 中的节点无法打开与 A1 中的节点的连接。
安全组和网络 ACL 可用作此处的附加安全层,并且通过子网拆分,配置将相当简单。但这也是多余的,因为没有从 B1 到 A1 的路线。