如何在 AWS 中安全连接专用资源

Blog
Author:
Ori HochOri Hoch
Published On:
12月 7, 2022
Estimated reading time:
1 minute

假设您的客户端,例如 HTTP 应用程序接口端点或更复杂的服务或协议等,需要访问网络资源。那么最直接的方式就是创建一个服务,并利用其连接外部世界。但是,如果您的客户端有着严格的服务访问要求,那么您又该怎么办呢?例如,您的客户端可能无法访问公共互联网,必须通过专用或内部网络进行所有连接。在这篇文章中,我将探讨几种能够实现此目标的可用方案。

PrivateLink

AWS PrivateLink 允许您使用网络负载均衡器,通过专用网络,在客户端访问 AWS 资源。您可以在 VPC 上创建一个网络负载均衡器,作为客户端入口点,然后向特定 AWS 账户、IAM 用户或 IAM 角色授予权限,允许他们访问您的服务。然后,他们就可以通过其专用网络,从客户端访问您的服务。

请注意 AWS PrivateLink 考虑因素和前提条件,需要考虑的要点如下:

  • 网络负载均衡器仅支持 TCP 流量。有关更多高级通信要求,请参见本文中的其他方案。
  • 客户端只有在您创建端点服务的区域和配置的子网可用区中才能使用端点服务。
  • 该服务的价格基于激活的接口端点和处理的 GB,按小时计费。不同区域的价格不同(详见 AWS PrivateLink 定价)。
  • 每个 VPC/区域的端点数量有限,但是可以增加。网络带宽也有限(详见 AWS PrivateLink 配额)。

如果您选择使用 AWS PrivateLink,那么您将可以轻松地使用 AWS PrivateLink 与客户端共享服务:

  • 为您的服务创建网络负载均衡器(或使用现有的负载均衡器)。
  • 创建 VPC 端点服务并将其连接到网络负载均衡器。
  • 向相关 AWS 账户、IAM 用户、IAM 角色授予访问端点服务的权限。
  • 向客户端提供服务名称和支持的可用区。
  • 客户端创建 VPC 接口端点,以连接到您的端点服务。
  • 批准客户端连接端点服务的请求。

VPC peering

VPC peering 服务允许您将两个 AWS VPC 连接在一起,并使用专用 IP 地址在它们之间路由流量。这种连接是专用的、加密的,并且与互联网的其他部分相互独立。如果您不想使用 AWS PrivateLink,这是一个很好的替代方案。但是 VPC peering 有一些非常严格的限制,在使用其之前,您需要了解清楚:

  • 对于激活或待定的 peering 连接数量,存在固定配额(详见 VPC Peering 连接配额)。
  • 无法连接或查询对端 VPC 中的 Amazon DNS 服务器。
  • VPC peering 连接不支持单播反向路径转发。
  • 不能在具有匹配或重叠 IP CIDR 块的 VPC 之间创建 VPC peering 连接,即使您只打算使用非重叠 CIDR 块进行 peering 连接。
  • 有关更多详细信息,请参见 VPC Peering 限制

如果您决定使用 VPC peering,操作流程非常简单,如下:

  • VPC peering 连接一侧的所有者向另一侧发送请求,以发起 peering 连接。另一侧接受连接请求,然后 VPC peering 连接被激活。
  • VPC peering 连接的每一侧都需要向其一个或多个 VPC 路由表中添加路由,以路由到另一个 VPC 的 IP 地址范围。
  • 每一侧应更新其安全组规则,确保进出对端 VPC 的流量不受限制。如果两个 VPC 都在同一个区域,可以从对端 VPC 中引用一个安全组。

结合使用 VPC peering 和 AWS PrivateLink

如果您是服务提供商,想使用简单的 AWS PrivateLink 配置将您的服务连接至您的客户端,从而将其连接至专用 VPC,这可能是一个很好的方案。您的客户端可以配置(或者您可以为其配置)VPC peering 连接,这将允许其在一侧使用某些更复杂的路由配置或安全要求来访问您的服务。另一个优势是,这允许从多个区域跨区域访问您的服务,而通过 AWS PrivateLink 服务端点可能无法实现这一点。

AWS Transit Gateway

AWS Transit Gateway 是核心方案。与前述方案相比,AWS Transit Gateway 更复杂(也更昂贵)。其用于配置和管理,具备更多的配置选项,更少的限制因素。Transit Gateway 允许将多个 AWS VPC 或本地网络连接在一起,使用专用、加密和独立的连接在它们之间路由流量。该服务非常复杂,有许多配置选项,在这里就不详细介绍了,因为具体配置高度依赖于具体需求。有关更多详细信息,请参见 AWS Transit Gateway 相关资料。以下是一些可以使用 AWS Transit Gateway 的示例:

  • 通过在 Transit Gateway 上添加 VPC 来克服 VPC Peering 的一些限制。
  • 满足严格的安全要求,使用 VPC Peering 可能无法满足这些要求。
  • 使用AWS Direct Connect 通过标准以太网光缆进行直接连接。
  • 使用AWS Site-to-Site VPN 连接到本地网络。

总结

本文介绍了一些方案,用于将您的服务连接至客户端或实现专用网络之间的安全连接。下表总结了各个方案以及其适用场景:

方案 适用场景 何时需要其他方案
AWS PrivateLink 您只想连接通过网络负载均衡器就能连接至 AWS 网络的服务。 您的服务有更复杂的要求,通过网络负载均衡器无法满足这些要求,或者需要跨区域连接。
VPC peering 有复杂的网络要求,或者只需要跨区域连接到 AWS 网络。 您的服务需要连接至非 AWS 网络,或者有更复杂的配置或安全要求。
AWS PrivateLink VPC peering 相结合 您可以使用网络负载均衡器来连接服务,但也需要 VPC peering 的某些优势,例如跨区域。 AWS PrivateLink 或 VPC Peering 无法满足您的服务要求。
AWS Transit Gateway 所有其他方案都不合适,或者需要连接到非 AWS 网络或本地网络。 根据配置,价格可能是一种限制,在这种情况下,您可能需要考虑自托管 VPN 服务。