面向教育和培训客户的政策设计

本文介绍如何设计一组政策来让您的公司(一家名为 TrainingExampleOrganization 的虚构培训组织)能够使用 Google Cloud Platform (GCP)

教育和培训组织是一种特殊的使用场景,因为培训提供机构通常具有以下特点:

  • 拥有所有资源和帐单。
  • 支付课程或实验室的基础架构使用费。
  • 确保用户之间、用户与培训提供机构之间相互隔离。
  • 确保每个会话的配置过程完全自动化且快速完成。

TrainingExampleOrganization 是一家培训组织,它提供了一系列可供学生订阅的在线课程。课程中每个模块的实验室练习将用到云资源,后者可按需增加。课程环境的可用时长取决于所需的实验室或练习。TrainingExampleOrganization 需要根据需求管理费用并暂停课程及其实验室模块的使用。

借助本文中介绍的政策,TrainingExampleOrganization 能够使用 GCP 并满足以下要求:

  • 保留云资源的所有权。
  • 创建并管理临时帐号和会话。
  • 实现学生之间的隔离。
  • 通过自动配置扩展到大量用户。
  • 通过中心团队管理帐单和政策。
  • 监控实验室和学生环境中发生的活动并发送提醒。
  • 限制可使用的资源。
  • 防范滥用行为。

管理和可见性

以下部分介绍了 TrainingExampleOrganization 可用来满足这些要求的各种 GCP 方法。

身份管理

TrainingExampleOrganization 要求包括:

  • 创建并管理临时帐号和会话。

您可配置 Cloud Identity,以便存储用户帐号。您还可使用 Directory API 根据需要自动创建、启用和停用用户。您可以使用此 API 创建将不具备任何其他应用的访问权限的帐号。课堂或实验室所有者负责预配学生。

组织设置

TrainingExampleOrganization 要求包括:

  • 保留云资源的所有权。

实现 Google Directory 时,即表示存在 G Suite 网域。G Suite 帐号与 GCP 资源层次结构之间存在固有关系。通过将组织资源部署到位,您可以集中查看并控制在提供培训环境过程中使用的所有 GCP 资源。您可以将 Cloud Folders 用作项目和其他文件夹的容器。借助 Cloud Folders,用户可将项目分组到文件夹下,从而实现资源和政策的大规模管理。

下图简略地展示了这一结构。

用于保留云资源所有权的 TrainingExampleOrganization 架构。

此结构与实验室并行,其中实验室(文件夹)中的每个项目均映射到每位学生的环境中。您还可以使用这些文件夹来识别与特定实验室或课堂相关的所有项目和资源。

系统操作

TrainingExampleOrganization 要求包括:

  • 通过自动配置扩展到大量用户。

您可以使用 Directory API 自动预配用户。您还可使用 Cloud Deployment Manager 通过相应资源和 Cloud Identity and Access Management 政策自动创建和配置项目。

组织安全控制

TrainingExampleOrganization 要求包括:

  • 实现学生之间的隔离。
  • 监控实验室和学生环境中发生的活动并发送提醒。
  • 限制可使用的资源。
  • 防范滥用行为。

若将项目视为信任边界,您可通过采用最低权限方法仅分配参与实验室教室所需的权限。

如果在文件夹级分配常用权限,则为每位学生创建的项目将继承这些权限。之后,您可以在项目级分配学生级权限。

借助组织政策服务,可以程序化的方式集中控制 TrainingExampleOrganization 的云资源。该服务提供了一种简单的机制,让您能够在整个云资源层次结构中强制实施行允许的配置。在此上下文中,政策指的是组织政策,它们让您能够控制云资源的组织级配置。

组织政策具有下列优势:

  • 您可以对每个项目、每个文件夹或每个组织设置政策。
  • 政策沿资源层次结构由上至下继承,政策管理员可以在可设置组织政策的任何级层将其替换。
  • 由组织政策管理员(而非资源所有者)管理政策。个人用户和项目所有者不能替换组织政策。

借助组织政策,您能够限制哪些 API 可被组织资源下的所有项目调用。您可限制每个项目仅能对课堂或实验室环境所需 API 进行调用。

下例中的 Cloud IAM 政策可帮助 TrainingExampleOrganization 满足其要求:

Cloud IAM 政策说明 功能
授予政策的资源层级:组织

要授予的角色:结算用户

要绑定的成员:用于自动创建项目和对象的服务帐号
结算用户角色向服务帐号授予以下操作的权限:
  • 创建项目。
  • 启用结算功能(将项目与组织所有项目的结算帐号关联)和 API。
  • 在项目下创建资源。

要防止资源滥用,您可设置每个项目的配额上限,从而限制可在项目中启动的资源数量。

您可以使用 Cloud Audit Logs 查看最近的审核日志。Logging 可记录 GCP 服务生成的管理员活动日志和数据访问日志,从而帮助您确定谁何时在您的 GCP 项目中的何处执行了哪些操作。

您可在 Stackdriver 中将各审核日志条目保留指定时长,该产品的信息中心显示有近期项目活动。Stackdriver Logging 配额政策说明了日志条目的保留时长,但您不能删除或修改审核日志或其条目。要延长保留期限,您可以导出审核日志条目到 Cloud Storage 存储分区、BigQuery 数据集、Cloud Pub/Sub 主题或上述三者的任意组合中。

借助基于日志的指标,您可以监控和触发提醒政策,以便就任何潜在的滥用行为及时通知 TrainingExampleOrganization。

您可以使用防火墙规则日志记录来审核、验证和分析防火墙规则所带来的影响。例如,您可以确定用于拒绝流量的防火墙规则是否如期发挥作用。

命名规则和加标签

TrainingExampleOrganization 要求包括:

  • 跨团队及其开发的产品分配交叉收费项。
  • 监控 OurTrainingOrg 的 GCP 帐号中发生的活动

标签是许多 GCP 资源所支持的键值对,TrainingExampleOrganization 可使用标签来跟踪所有团队及其开发产品的已导出结算数据的支出。通过使用标签进行过滤和分组,TrainingExampleOrganization 即可使用 Stackdriver 资源组来监控每个团队或每个应用的活动

跟踪和了解支出

TrainingExampleOrganization 要求包括:

  • 防范滥用行为。
  • 通过中心团队管理帐单和政策。

与 Resource Manager 和结算功能一并应用的单个结算帐号可以满足 TrainingExampleOrganization 的要求。结算功能包括:

  • 使用表示附加分组信息的标签(如 environment=Lab1)进行项目注释。标签随附在导出的帐单数据中,可让 TrainingExampleOrganization 将费用进行细分。虽然标签随时可能更改,但仍然很有用。
  • 将类 ID 进行编码并包含到 Project NameID 中。
  • Cloud Billing 报告有利于快速了解使用费和分析趋势。
  • 直接导出结算数据到 BigQuery 进行详细分析。

下图展示了与 Resource Manager 一并应用的单个结算帐号。

结算结构

要集中管理结算,必须向结算帐号授予结算管理员角色,并将此 Cloud IAM 角色绑定到管理结算的任何人。

由于项目是自动创建的,因此请创建一个共享资源项目。在此项目中,创建您要向其授予结算用户角色的服务帐号。然后,使用此服务帐号创建每个实验室环境所需的项目。

通过设置每个项目的结算提醒,您可在项目意外达到实验室上限时收到提醒。此监控另外提供了一种帮助防止滥用行为的方法。

组织和身份管理政策提案

下图展示了建议的 TrainingExampleOrganization 组织政策。

TrainingExampleOrganization 的组织政策。

上图有四个主要特征:

  1. 组织政策用于限制可启用的 API,从而确保项目只能使用每个实验室所需的资源。

  2. 共享资源项目包含用于为每个学生/实验室会话预配新项目的服务帐号。

  3. 每个项目的配额可以避免学生启动大量资源并防止滥用。

  4. 网域管理员是唯一可以创建、停用或删除用户、拥有对学生访问权限的最终控制权并防止滥用的管理员。

网络配置和安全控制

TrainingExampleOrganization 要求包括:

  • 实现学生之间的隔离。

在预配置的实验室环境中,学生通常不进行网络更改。因此,首选方式是集中管理网络和安全性:您可按项目逐个管理,也可通过实现共享的 VPC 模型进行管理(此方法更佳)。

共享 VPC

借助共享 VPC,您可以通过中央宿主项目管理常见的网络资源,例如 VPC 网络和子网。其他项目也可访问这些资源。通过此设置及其 Cloud IAM 控制,简化了中央网络的实现和管理。

借助共享 VPC,您还能拥有 VPC 网络,例如跨多个项目的普通专用 RFC 1918 IP 空间。您可以将任何项目中的实例添加到此 VPC 网络或其子网中。

您可以将 VPN 连接到上述单个 VPC 网络,让其可供全部或部分项目使用。

共享 VPC 具有以下功能:

  • 允许存在一组与项目管理员分开的集中式网络管理员。

  • 让您能够指定一组管理员来通过 IAM 控制管理共享 VPC。

  • 让您能够轻松创建单独的管理员集。每个 GCP 项目的管理员都可以在 VPC 网络上创建和使用实例。

  • 允许网络管理员隶属于集中管理团队,同时组织中不同部门的用户可以共享 VPC 网络或子网。

  • 提供一种集中管理 IP 地址和子网等网络资源的方法。

  • 让您能够应用一致的政策并在整个组织中强制实施。

  • 网络管理员可以定义一组常用防火墙规则、网关、安全政策和 NAT,只需定义一次即可将其应用于所有子网。各个项目中的这些政策无需进行多次定义和维护。

作为实验室的一部分而执行的项目使用集中式 VPC 网络,并且只能使用该 VPC 网络,例如要在该 VPC 网络中启动实例。

Cloud IAM 网络角色

功能 必需的 Cloud IAM 政策的说明
数量有限的用户可同时管理网络和安全控制。所有项目共享一个 VPC 网络。
  • 按照最佳做法,设置一个组,其中包含集中管理网络和安全性的用户的身份。在满足此要求所需的 Cloud IAM 政策中使用此组。
  • 通过使用共享 VPC,您可以映射集中管理团队来管理网络配置。
  • 在云资源层次结构的组织级层上向该组分配网络管理员角色和共享 VPC 管理员角色。此外,通过在组织级层上向此管理组授予安全管理员角色,可提供管理防火墙规则和 SSL 证书所需的权限。

下图展示了满足 TrainingExampleOrganization 集中控制要求的最简单的模型。

满足 TrainingExampleOrganization 集中控制要求的架构。

上图有四个主要特征:

  1. 集中管理员和服务帐号在组织级层实现所有模板化的资源更改。

  2. 网络和安全控制集中管理在共享 VPC 主机项目中实现。

  3. 子网中的单个实验室管理员可以管理所有实验室。

  4. 共享资源位于单独的子网中。

防火墙规则

防火墙规则可管理源子网与目标子网和/或带标记或使用服务帐号的实例之间的流量。这些规则为确保学生环境之间充分隔离提供了必要控制。

参考

要求 参考
身份管理
组织设置
结算
网络和安全控制

后续步骤