GKE 中的网络隔离简介


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

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

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

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

最佳实践

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

控制平面访问

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

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

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

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

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

基于 DNS 的端点

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

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

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

  • 使用 VPC Service Controls 进行基于 IP 或网络的控制:用于确保对控制平面的访问安全。VPC Service Controls 通过基于网络来源等属性的情境感知访问权限,额外增加一层访问权限安全保障。借助 VPC Service Controls,您可以配置哪些网络可以访问 DNS 端点。使用 IAM 政策和 VPC Service Control 来确保对基于 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 地址。这些 IP 地址归 Google Cloud 所有。如需了解详情,请参阅在何处可以找到 Compute Engine IP 范围?

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

  • 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 地址块列表。

下表展示了:

  • 预设的 IP 地址,无论您是否启用已获授权的网络,这些 IP 地址始终可以访问 GKE 控制平面。
  • 可配置的 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 集群中隔离节点

启用专用节点

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

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

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

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

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

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

网络隔离的优势

网络隔离具有以下优势:

  • 灵活性

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

    • 基于 DNS 的端点搭配 VPC Service Controls 可提供多层安全保护模型,以保护集群免遭未经授权的网络以及未经授权的身份访问控制平面。VPC Service Controls 与 Cloud Audit Logs 集成,以监控对控制平面的访问。
    • 专用节点以及在这些节点上运行的工作负载无法通过公共互联网直接访问,从而显著降低了集群面临的外部攻击的风险。
    • 您可以阻止从Google Cloud 外部 IP 地址或外部 IP 地址访问控制平面,以完全隔离集群控制平面并降低面临潜在安全威胁的风险。
  • 合规性:如果您所在的行业对数据访问和存储有严格的法规,专用节点可确保敏感数据保留在专用网络中,从而实现合规性。

  • 控制:专用节点可让您精细控制流量流入和流出集群的方式。您可以配置防火墙规则和网络政策,以仅允许经过授权的通信。如果您在多云环境中进行操作,专用节点可以帮助您在不同环境之间建立安全且受控的通信。

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

后续步骤