GKE 中的网络隔离简介


本页介绍了 Google Kubernetes Engine (GKE) 集群控制平面和集群节点的网络隔离和访问控制功能的运作方式。本页面取代了介绍专用集群概念的页面。

在决定如何配置网络隔离时,需要考虑以下两个方面:

  • 控制平面访问权限,与谁可以访问集群的控制平面相关。
  • 集群网络,与隔离nodes相关。

本页介绍了如何控制和自定义哪些人可以访问集群的控制平面和集群节点(在标准集群中)或工作负载(在 Autopilot 集群中)。在确定集群的网络配置时,此自定义设置非常重要。如需直接定义网络配置,请参阅自定义网络隔离

最佳实践

与组织的网络架构师、网络工程师、网络管理员或负责定义、实现和维护网络架构的其他团队一起规划和设计网络隔离配置。

控制平面访问权限

在本部分中,您将考虑哪些人可以访问您的控制平面。

每个 GKE 集群都有一个用于处理 Kubernetes API 请求的控制平面。控制平面在由 Google 管理的项目的 VPC 网络中的一个虚拟机 (VM) 上运行。区域级集群有多个控制平面副本,每个副本都在其各自的虚拟机上运行。

控制平面有两种集群访问端点:

  • 基于 DNS 的端点
  • 基于 IP 的端点
最佳实践

仅使用基于 DNS 的端点访问控制平面,以简化配置并实现基于政策的灵活安全层。

基于 DNS 的端点

基于 DNS 的端点会为每个集群控制平面提供唯一的 DNS 或完全限定域名 (FQDN)。此 DNS 名称可用于访问您的控制平面。DNS 名称会解析为可通过 Google Cloud API 访问的端点,包括本地网络或其他云网络。启用基于 DNS 的端点后,堡垒主机或代理节点无需从其他 VPC 网络或外部位置访问控制平面。

若要访问控制平面端点,您需要配置 IAM 角色和政策以及身份验证令牌。如需详细了解所需的确切权限,请参阅自定义网络隔离

除了 IAM 政策和令牌之外,您还可以配置以下访问权限属性:

  • 结合使用 IP 或基于网络的控制功能与 VPC Service Controls:以安全地访问控制平面。VPC Service Controls 通过基于网络来源等属性的情境感知访问权限,为访问安全性增添了一层保障。借助 VPC Service Controls,您可以配置哪些网络可以访问 DNS 端点。同时使用 IAM 政策和 VPC Service Controls 来安全访问基于 DNS 的端点,可为集群控制平面提供多层安全模型。所有 Google Cloud API 都使用 VPC Service Controls,以便将集群的安全配置与托管在所有其他Google Cloud API 中的数据保持一致。

  • Private Service Connect 或 Cloud NAT:用于从无法访问公共互联网的客户端访问基于 DNS 的端点。默认情况下,您可以通过公共互联网上提供的 Google Cloud API 访问基于 DNS 的端点。如需了解详情,请参阅“自定义网络隔离”页面中的基于 DNS 的端点

基于 IP 的端点

(可选)您还可以使用基于 IP 的端点配置对控制平面的访问权限。

与集群和 IP 地址相关的术语

  • Google Cloud 外部 IP 地址

    • 分配给在Google Cloud上托管的任何客户使用的任何虚拟机的外部 IP 地址。 Google Cloud 拥有这些 IP 地址。如需了解详情,请参阅在何处可以找到 Compute Engine IP 地址范围?

    • Google Cloud 产品(例如 Cloud Run 或 Cloud Run functions)使用的外部 IP 地址。托管在 Google Cloud 上的任何客户端都可以实例化这些 IP 地址。 Google Cloud 拥有这些 IP 地址。

  • Google 预留的 IP 地址:用于管理 GKE 集群的外部 IP 地址。这些 IP 地址包括 GKE 代管式进程和生产环境中的其他 Google 服务。这些 IP 地址归 Google 所有。

  • GKE 集群 IP 地址范围:分配给集群的内部 IP 地址,GKE 会将这些地址用于集群的节点、Pod 和 Service。

  • 内部 IP 地址:集群的 VPC 网络中的 IP 地址。这些 IP 地址可能包括您的集群 IP 地址、本地网络、RFC 1918 范围或以非公开方式使用的公共 IP (PUPI) 地址(包括非 RFC 1918 范围)。

  • 外部端点:GKE 分配给控制平面的外部 IP 地址。

  • 内部端点:GKE 分配给控制平面的内部 IP 地址。

  • VPC 网络:这是一个虚拟网络,您可以在其中创建具有 IP 地址范围的子网,专门用于集群的节点和 Pod。

使用基于 IP 的端点时,您有两种选择:

  • 在外部和内部端点上公开控制平面。这意味着,您可以通过外部 IP 地址访问控制平面的外部端点,也可以通过集群的 VPC 网络访问内部端点。节点将仅通过内部端点与控制平面通信。

  • 仅在内部端点上公开控制平面。这意味着互联网上的客户端无法连接到集群,并且可以从集群 VPC 网络中的任何 IP 地址访问控制平面。节点将仅通过内部端点与控制平面通信。

    在使用基于 IP 地址的端点时,这是最安全的选项,因为它可阻止对控制平面进行的所有互联网访问。如果您有工作负载(例如因数据隐私权和安全法规而需要受控访问权限的工作负载),则这是一个不错的选择。

在上述两个选项中,您都可以通过配置已获授权的网络来限制哪些 IP 地址可以访问端点。如果您使用基于 IP 的端点,我们强烈建议您至少添加一个已获授权的网络。已获授权的网络会为控制平面授予对一组特定的受信任 IPv4 地址的访问权限,并为 GKE 集群提供保护和额外的安全优势。

最佳实践

使用基于 IP 的端点时,请启用授权网络以保护您的 GKE 集群。

授权网络的工作原理

授权网络提供基于 IP 地址的防火墙,用于控制对 GKE 控制平面的访问权限。对控制平面的访问权限取决于来源 IP 地址。启用授权网络后,您可以将允许访问 GKE 集群控制平面端点的 IP 地址配置为一个 CIDR 块列表。

下表显示了:

  • 无论您是否启用授权网络,始终可以访问 GKE 控制平面的预设 IP 地址。
  • 当您通过启用授权网络将可配置的 IP 地址列入许可名单后,这些地址便可以访问控制平面。
控制平面端点 始终可以访问端点的预设 IP 地址 可配置的 IP 地址,可在启用授权网络后访问端点
已启用外部和内部端点
  • Google 预留的 IP 地址
  • GKE 集群 IP 地址范围
  • 许可名单中的外部 IP 地址
  • 已列入许可名单的内部 IP 地址
  • Google Cloud 外部 IP 地址
仅启用内部端点
  • Google 预留的 IP 地址
  • GKE 集群 IP 地址范围
  • 已列入许可名单的内部 IP 地址。

借助授权网络,您还可以配置内部 IP 地址可以从哪个区域访问控制平面的内部端点。您可以选择仅允许从集群的 VPC 网络访问,也可以允许从 VPC 或本地环境中的任何 Google Cloud 区域访问。

使用基于 IP 的端点的限制

  • 如果您扩展子网(具有已获授权的网络的集群使用该子网),则必须更新已获授权的网络配置以包含扩展的 IP 地址范围。
  • 如果客户端是从具有动态 IP 地址的网络(例如员工在家中的网络)连接的,您必须经常更新已获授权的网络列表,以便客户端能够继续访问集群。
  • 停用对控制平面外部端点的访问权限会导致您无法远程与集群互动。如果您需要远程访问集群,则必须使用堡垒主机,将客户端流量转发到集群。相比之下,使用基于 DNS 的端点只需设置 IAM 权限即可。
  • 基于 IP 的端点不会直接与 VPC Service Controls 集成。VPC Service Controls 在服务边界级运行,用于控制 Google Cloud中的数据访问和移动。我们建议您将基于 DNS 的端点与 VPC Service Controls 结合使用,以实现强大的安全防御。
  • 您最多可以指定 100 个已获授权的 IP 地址范围(包括外部和内部 IP 地址)。

集群网络访问

本部分介绍了如何在 Kubernetes 集群中隔离nodes

启用专用节点

通过仅为这些节点预配内部 IP 地址,使其成为专用节点,从而防止外部客户端访问节点。在没有外部 IP 地址的节点上运行的工作负载无法访问互联网,除非在集群的网络上启用 NAT。您可以随时更改这些设置。

您可以在单个集群级别或节点池级别(对于 Standard 集群)或工作负载级别(对于 Autopilot 集群)启用专用节点。在节点池或工作负载级别启用专用节点会覆盖集群级别的任何节点配置。

如果您将公共节点池更新为专用模式,在以下情况下,需要访问集群网络之外的工作负载可能会失败:

  • 未启用专用 Google 访问通道的共享 VPC 网络中的集群。手动启用专用 Google 访问通道,以确保 GKE 下载分配的节点映像。对于不在共享 VPC 网络中的集群,GKE 会自动启用专用 Google 访问通道。

  • 需要访问互联网的工作负载(未启用 Cloud NAT 或未定义自定义 NAT 解决方案的情况下)。如需允许流向互联网的出站流量,请启用 Cloud NAT 或自定义 NAT 解决方案。

无论您是否启用专用节点,控制平面仍仅通过内部 IP 地址与所有节点进行通信。

网络隔离的好处

网络隔离具有以下优势:

  • 灵活性

    • 集群具有统一且灵活的配置。无论是否包含外部端点,集群都采用相同的架构并支持相同的功能。您可以根据符合您需求的控件和最佳实践来确保访问安全。集群中的节点与控制平面之间的所有通信都使用内部 IP 地址。
    • 您可以随时更改控制平面访问权限和集群节点配置设置,而无需重新创建集群。
    • 如果您需要从有互联网连接的任何位置或与 VPC 未直接连接的网络或设备管理集群,可以选择启用控制平面的外部端点。或者,如果您需要为敏感工作负载维护网络隔离,也可以停用外部端点以增强安全性。无论是哪种情况,您都可以使用已获授权的网络来限制对受信任 IP 地址范围的访问。
  • 安全性

    • 结合使用 VPC Service Controls 的基于 DNS 的端点可提供多层安全模型,可保护您的集群免受未经授权的网络以及未经授权的身份访问控制平面的影响。VPC Service Controls 与 Cloud Audit Logs 集成,以监控对控制平面的访问。
    • 专用节点及其上运行的工作负载无法从公共互联网直接访问,这大大降低了集群遭到外部攻击的可能性。
    • 您可以阻止从 Google Cloud 外部 IP 地址或从外部 IP 地址访问控制平面,以完全隔离集群控制平面并降低潜在的安全威胁。
  • 合规性:如果您所在的行业对数据访问和存储有严格的规定,私有节点可确保敏感数据始终位于您的专用网络中,从而帮助您遵从相关规定。

  • 控制:借助专用节点,您可以精细控制流量进出集群的方式。您可以配置防火墙规则和网络政策,以仅允许授权的通信。如果您在多云环境中开展业务,私有节点可帮助您在不同环境之间建立安全可控的通信。

  • 费用:通过启用专用节点,您可以降低不需要外部 IP 地址访问互联网上的公共服务的节点的费用。

后续步骤