集中访问 VPC 私有终端节点 - 构建可扩展且安全的多 VPC AWS 网络基础设施

集中访问 VPC 私有终端节点

VPC 终端节点允许您私下将 VPC 连接到受支持的 AWS 服务,而无需互联网网关或 NAT 设备。使用此接口终端节点,VPC 中的实例无需公有 IP 地址即可与 AWS 服务终端节点进行通信。VPC 与其他服务之间的流量不会离开 AWS 网络骨干。当前可以预置两种类型的终端节点:接口终端节点(由 AWS PrivateLink 提供支持)和网关终端节点。网关终端节点可随意预置,而且没有强大的集中化使用案例。

接口 VPC 终端节点

接口终端节点包含一个或多个具有私有 IP 地址的弹性网络接口,用作发送到受支持 AWS 服务的流量的入口点。当您预置接口终端节点时,用户需要为该终端节点运行的每个小时支付费用。默认情况下,您将在要从中访问 AWS 服务的每个 VPC 中创建一个接口终端节点。在登录区设置中,客户希望跨多个 VPC 与特定 AWS 服务进行交互,这可能非常昂贵且难以管理。为避免这种情况,您可以在一个集中式 VPC 中托管接口终端节点。所有分支 VPC 都将使用这些集中式终端节点。

当您为 AWS 服务创建 VPC 终端节点时,可以启用私有 DNS。启用后,该设置将创建一个 AWS 托管的 Route 53 私有托管区域(PHZ,private hosted zone),从而能够将公有 AWS 服务终端节点解析为接口终端节点的私有 IP。托管式 PHZ 只能在具有接口终端节点的 VPC 内工作。在我们的设置中,当我们希望分支 VPC 能够解析托管在集中式 VPC 中的 VPC 终端节点 DNS 时,托管式 PHZ 将无法正常工作。要解决此问题,请禁用在创建接口终端节点时自动创建私有 DNS 的选项。或者,您可以手动创建 Route 53 PHZ 并添加别名记录,其完整 AWS 服务终端节点名称指向接口终端节点,如图 18 所示。

图 18 – 手动创建的 PHZ

我们将此私有托管区域与登录区内的其他 VPC 关联。此配置允许分支 VPC 将全方位服务终端节点名称解析为集中式 VPC 中的接口终端节点。

注意

要访问共享的私有托管区域,分支 VPC 中的主机应使用其 VPC 的 Route 53 Resolver IP。接口终端节点还可通过 VPN 和 Direct Connect 从本地网络进行访问。使用条件转发规则将全方位服务终端节点名称的所有 DNS 流量发送到 Route 53 Resolver 入站终端节点,后者将根据私有托管区域解析 DNS 请求。

在图 19 中,Transit Gateway 支持从分支 VPC 到集中式接口终端节点的流量。在网络服务账户中为它创建 VPC 终端节点和私有托管区域,并与分支账户中的分支 VPC 共享它。有关与其他 VPC 共享终端节点信息的更多详细信息,请参阅将 AWS Transit Gateway 与 AWS PrivateLink 和 Amazon Route 53 Resolver 集成博客文章。

注意:分布式 VPC 终端节点方法(即每个 VPC 一个终端节点)允许您对 VPC 终端节点应用最低权限策略。在集中式方法中,您将对单个终端节点上的所有分支 VPC 访问应用和管理策略。随着 VPC 数量的增加,使用单个策略文档维护最低权限的复杂性可能会增加。单个策略文档还会导致更大的影响范围。策略文档的大小也受到限制(20480 个字符)。

图 19 – 集中化接口 VPC 终端节点