Anthos 安全蓝图:对 Google Cloud 上的集群实施位置限制

本文档介绍了如何管理资源,使其仅在特定地区可用。其中简要介绍了您可能需要如何满足位置限制及相应原因,并介绍了执行此任务时需要用到的 Google Cloud 控制措施。

本文档是提供有关如何使用 Anthos 的指导性指南的系列安全蓝图中的一篇。

简介

许多企业都必须满足特定于位置的驻留要求。也就是说,他们要求其服务(在许多情况下,都是运行服务的集群)只能从特定位置进行部署或访问。这其中的原因可能有很多:监管要求、延迟要求,或仅在特定国家/地区提供服务的业务要求。

为满足特定于位置的驻留要求,您需要考虑以下事项:

  • 服务需要处于什么位置。
  • 是否需要限制特定地区对您的服务的访问权限。
  • 您的服务依赖于哪些 Google Cloud 服务。
  • 您是使用 GKE on Google Cloud,还是 GKE On-Prem。
  • 应用内以及进出应用的有哪些允许的流和操作。

了解这些问题后,您就可以确定如何配置每个适用的安全控制措施,以满足特定于位置的驻留要求。

了解您需要的安全控制措施

本部分探讨了的控制措施可用于帮助您实现可满足要求的位置限制级别。

命名空间

为应使用相同政策的资源加标签

借助命名空间,您可以为集群内的相关资源(例如 Pod、Service 和副本控制器)提供范围。通过使用命名空间,您可以将相关资源的管理责任作为一个单元进行委派。因此,命名空间是大多数安全模式不可或缺的一部分。

命名空间是控制平面隔离的一项重要功能。不过,它们不提供节点隔离、数据平面隔离和网络隔离。

一种常用的方法是为各个应用创建命名空间。例如,您可以为应用的界面组件创建命名空间 myapp-frontend

组织政策

限制可以部署集群的位置

组织政策服务用于配置对 Google 组织内的受支持资源的限制。您可以针对受支持的资源配置限制条件

将服务限制为仅允许从某个位置访问时,请使用资源位置限制条件。此限制条件定义了可以创建基于位置的 Google Cloud 资源的一组位置。针对此限制条件的政策可以指定不同的允许或拒绝的位置。例如,政策可以指定多地区(如亚洲和欧洲)、单地区(如 us-east1europe-west1),或单个区域(如 europe-west1-b)。必须明确列出各个要允许或拒绝的位置。

Anthos Config Management

将配置应用于您的 Anthos 集群

管理 Anthos 集群时的一个最佳做法是使用 Anthos Config Management,它可以使已注册的集群与配置保持同步。配置是存储在代码库中的 YAML 或 JSON 文件,包含您可以通过 kubectl apply 命令手动应用于集群的相同类型的配置详细信息。借助 Anthos Config Management,您可以像管理应用一样管理政策和基础架构部署,只需采用“政策即代码”的方法即可。

您可以将 Anthos Config Management 与作为您声明的政策的单一可信来源的 Git 代码库结合使用。Anthos Config Management 可以管理访问权限控制政策,例如 RBAC、资源配额、命名空间和平台级基础架构部署。Anthos Config Management 以声明性的方式运作,它会不断检查集群状态并将其调整到配置中声明的状态,实施相应的政策。

用于实现集群主服务器访问通道的授权网络

限制可访问 Kubernetes API 服务器的位置

通过授权网络,您可以允许特定 CIDR 范围(即将其列入白名单),并允许这些范围内的 IP 地址使用 HTTPS 访问您的集群主服务器端点。专用集群不公开外部 IP 地址,并且可以选择性运行这些节点的无可公开访问的端点的集群主服务器。

最佳做法是遵循 GKE 安全强化指南中的指导信息,其中建议使用专用集群并启用授权网络。

选择集群类型

为了解哪种集群类型适合您的使用场景,您需要了解地区和区域以及可以部署资源的位置。地区是独立的地理位置,由多个区域组成。例如,伦敦 (europe-west2) 是欧洲的一个地区,而俄勒冈 (us-west1) 则是美洲的一个地区。

区域是地区中用于部署 Google Cloud 资源的位置。区域可被视为地区内的一个故障网域。为了部署具备高可用性的容错应用,您可以跨一个地区中的多个区域部署应用。

地区内位置的往返网络延迟时间在第 95 百分位下往往低于 1 毫秒。举例来说,位置可以是日本东京,它有 3 个区域,位于 asia-northeast1 地区。

GKE 提供以下三种类型的集群:

  • 单区域集群。单区域集群有一个控制层面(主服务器),该层面在一个区域中运行,并负责管理在同一区域中运行的节点上的工作负载。
  • 多区域集群。多地区集群有单个控制平面副本(该副本在单个区域中运行),并且有一些节点(这些节点在多个区域中运行)。
  • 地区级集群地区级集群会在单个地区内的多个区域中复制集群主服务器和节点。例如,us-east1 地区中的地区级集群会在以下三个 us-east1 区域中创建控制层面和节点的副本:us-east1-bus-east1-cus-east1-d

您应该根据自己的可用性需求选择相应的集群。例如,如果您需要工作负载具备高可用性,请使用地区级集群。

综合应用

为了整合控制措施,请确定您的位置限制要求。然后,确定本指南中探讨的控制措施的范围以及需要配置这些控制措施的阶段,如下所述:

  1. 明确您的地区需求。
  2. 确定集群的适当位置。
  3. 创建资源位置组织政策,只允许在可满足您要求的位置创建 GKE 集群
  4. 按照 GKE 集群安全强化指南中的指导信息创建专用集群。创建集群时,请务必遵循安全强化指南并使用 --enable-network-policy 标志。网络政策是必需的,此步骤让您可以在稍后实现防火墙规则,以限制在集群中的 Pod 之间传输的流量。
  5. 授权网络添加到您的专用集群。

如果您需要限制客户只能从哪里访问您的服务,请执行以下操作:

  • 对于 GKE on Google Cloud 集群,请指定 Google Cloud Armor 安全政策,以根据传入流量的地理位置强制执行访问权限控制。将安全政策附加到与 Ingress 资源关联的每个后端。
  • 使用 Anthos Config Management 指定政策,限制哪些人可以访问您的集群。