在高等教育领域使用 IAM 和 Cloud Billing 的最佳做法

与其他类型的企业相比,大学、学院、职业学校和其他高等教育机构往往有着独特的 IT 需求。 本指南介绍了为您的机构设置 Google Cloud 环境时的最佳做法以及许多需要解决的关键问题。

下面介绍一些基本术语的定义,便于您更好地理解本指南。

组织节点
组织节点代表一家组织(例如您的学校)。它是 Google Cloud 资源层次结构中的根节点。
文件夹
文件夹用于整理您组织下的资源。如果在文件夹级层配置 Cloud Identity and Access Management (IAM) 政策,则这些政策将传递性地应用于文件夹中包含的资源。
项目
您在项目级层启用和使用所有 Google Cloud 服务、管理 API 和结算事宜、添加和移除协作者以及管理权限。
IAM
IAM 可控制您的组织和项目政策。它控制着项目成员在管理虚拟机、日志和其他资源时拥有的访问权限级别。
角色
一个角色对应一组权限。您不能直接为用户分配权限;而应为用户授予角色。授予一个角色就是授予该角色包含的所有权限。
资源
物理资源(如计算机或硬盘)或虚拟资源(如虚拟机)。例如,项目Compute Engine 实例Cloud Storage 存储分区都属于资源。

设置 G Suite 教育版

如果您的学校要研究 Google Cloud 的功能,通常可以从设置 G Suite 教育版开始。即使您不打算使用 Gmail,也可以通过设置 G Suite 教育版并停用 Gmail 等不使用的服务,来利用用户帐号和群组获得 Google Cloud 身份和进行身份验证。如果商业实体不符合相关条件,无法使用免费 G Suite 教育版帐号,则可以选择使用 Cloud Identity

管理资源

Google Cloud 提供了一种由组织、文件夹和项目组成的分层容器系统。在这些结构内,您可以整理一些其他资源,例如 Compute Engine 虚拟机和 Pub/Sub 主题。这种层次结构可帮助您管理多个方面,例如多个资源共同的访问权限控制以及配置设置。您可以使用 Resource Manager 以编程方式管理这些资源。

大型机构(包括许多大学)通常拥有大量直接与 Google Cloud 资源互动的项目和用户。为了以最佳方式支持现有的 IT 管理和访问权限控制策略,我们建议您实施一种集中式方法来整理 Google Cloud 资源。

组织和文件夹

资源的整理方式是以组织节点作为根层级。在组织节点下方,文件夹最多可以嵌套四层。这些文件夹可以包含项目,而项目又可以包含其他资源作为项目下的子节点。每项资源有且仅有一个父项。对父项资源设置访问控制政策与配置设置时,它的子项资源会继承这些政策与设置。

组织节点可确保超级用户能看到用户在您的 G Suite 教育版网域中创建的所有项目。G Suite 教育版中的每个主网域都有一个组织节点;辅助 G Suite 网域没有自己的组织节点。默认情况下,G Suite 超级用户在设置组织政策方面拥有不可撤消的访问权限。对于拥有单独的 IT 和云管理的组织,G Suite 超级用户必须指派一名组织管理员来管理组织。

典型 Google Cloud 组织的结构可能如下所示:

典型 Google Cloud 组织的结构

如果项目是在组织节点建立之前创建的,则可以将这些孤立项目迁移到组织节点。

如需列出组织节点中的所有项目,请运行以下命令:

gcloud projects list --filter "parent.type=organization parent.id=$ORG_ID"

如果拥有 G Suite 教育版网域的学校要采用 Google Cloud,则默认配置为使用单一组织节点。以下部分介绍了单组织节点方法与多组织节点方法。

何时使用集中式组织节点

集中式组织节点会映射到 G Suite 网域,该网域是 IAM 的数据源。您可以为每个文件夹设置自己的集中管理员以及单独的 IAM 与其他政策。

集中式组织节点

如需了解详情,请参阅以下资源:

您可以将全局资源(如跨项目网络和共享图片)托管在一个允许组织中所有用户访问的文件夹中。

何时使用多个独立的组织节点

如果您希望将学校内的各部门视为独立实体而不采用集中管理,可考虑创建多个独立的组织,如下图所示。

独立组织结构

若要实施这种配置,需将 school.edulab3.school.edu 设置为独立的主 G Suite 网域,从而创建独立的组织节点。仅当您已做出如下决定时,才应选择这种方法:

  • 维护多个独立的身份网域。
  • 保持 IAM、自定义角色、结算、配额和配置设置不同于中央 school.edu 单位节点。

对于许多采用集中式 IT 治理的学校来说,管理两个独立的 Google Cloud 环境会产生额外的开销。另外,多个组织节点之间的政策可能会随着时间的推移而彼此不同。

如何使用文件夹

借助文件夹,您可以整理 Google Cloud 资源、应用政策、分配管理权限,以及为各部门和团队赋予更多自主性。此外,文件夹还有助于在项目级层以上管理政策和控制访问权限。嵌套在一个文件夹中的文件夹、项目和资源将继承父文件夹的政策。

以下几种场景可能适合使用文件夹:

  • 您的机构包含不同的学校,例如工学院、商学院和文学院,每个学校都有自己的 IT 群组。
  • 您要映射到一个基于 LDAP 目录(如 Microsoft Active Directory)建立的结构。
  • 您希望按照使用案例(如 IT 基础架构、研究计算或教学)隔离项目。

项目和资源

您分配和使用的任何 Google Cloud 资源都必须属于一个项目。 可将项目视为您要构建的应用的整理性实体。项目包括设置、权限和描述您的应用的其他元数据。一个项目内的各资源可以通过内部网络通信,从而实现顺利合作,但这些资源需遵守的规则因地区或区域而异。每个项目使用的资源在各项目边界之间保持独立;您只能通过外部网络连接或共享 Virtual Private Cloud (VPC) 网络将这些资源连接起来。

每个 Google Cloud 项目都包含以下几个部分:

  • 项目名称,由您提供。
  • 项目 ID,可以由您或 Google Cloud 提供。
  • 项目编号,由 Google Cloud 提供。

设置一个新项目时,您可以将其基于以下某个场景:

  • 应用或项目的所有权,例如围绕工作负载或小型团队设置一个项目。
  • 将应用划分为生产项目和非生产项目。这样,在非生产测试环境中所做的更改将不会影响生产环境,并且可以使用部署脚本来升级或传播更改。
  • 在各实验室或一个实验室中的各项目之间隔离计算资源和数据资源。实现这种隔离后,便可在各项目之间实现完全自主性和数据分离;如果一个实验室正在处理多个项目,且这些项目涉及的利益相关方存在竞争关系,这会很有帮助。

项目必须与结算帐号(本文档稍后将介绍)相关联。请注意,只有拥有“结算帐号管理员”或“结算帐号用户”角色的用户才能将新项目与现有结算帐号相关联。

配额

Google Cloud 中的许多资源受配额的约束。例如,刚刚关联到结算帐号的新项目在 Compute Engine 上的配额为八个虚拟 CPU。您可以请求提高配额,以增加更多资源或者添加一些并非默认发布的新资源(如 GPU 资源)。

除了资源配额以外,组织可以创建的项目数量也有配额。即使您删除了一个项目,在被完全清除之前的几天里,该项目仍然占用项目配额

信任边界

在决定项目结构时,应考虑 IT 信任边界,它们可能遵循现有 IT 管理或安全模型。例如,各所独立学校(如工学院、商学院和法学院)彼此之间是否存在信任边界?学校内部的各独立部门之间是否相互信任?

通过采用最低权限访问这一 IT 安全最佳做法,您可以为单个项目中的和跨多个项目的用户帐号与服务帐号授予不同的角色。如果某个用户拥有一个项目的管理员级访问权限,而对另一个项目只应拥有查看者或只读访问权限,您可以使用 Google Cloud 中的 IAM 政策来显式定义这些角色。如需了解详情,请参阅 IAM 最低权限指南

IAM 政策

大型组织通常需要将运营团队(如安全和网络管理)与产品团队隔离开来。这种隔离操作需要使用由其他团队管理的资源并遵循最低权限原则。您可以使用 IAM 和服务帐号配置设置以实现这种隔离。

借助 IAM,您可以通过定义谁对哪些资源具有何种级别的访问权限来管理访问控制。如需为用户授予角色,可以创建 IAM 政策,政策是一组附加到资源上的语句的集合,这些语句用于定义和控制谁对该资源拥有何种访问权限。如需指定对特定 Google Cloud 资源的更细化的访问权限,请使用预定义角色或定义自定义 IAM 角色

如何使用特权帐号

遵循最低权限原则,将超级用户角色分配给不常用的帐号。例如,您可以使用 jo.watanabe@school.edu 进行日常活动,而使用 jo.watanabe.admin@school.edu 来更改 G Suite 管理控制台或 Cloud Console。

如何使用服务帐号

Google Cloud 使用 IAM 服务帐号进行 Google API 调用,这样便不会直接采用独立用户的凭据。这些帐号的一个特点是它们既可被视为身份,也可被视为资源

  • 当服务帐号充当身份时,您可以为该帐号授予角色以使其能访问资源(例如 Cloud Storage 存储分区)。

  • 当服务帐号充当资源时,您必须为用户授予该帐号的访问权限,具体方式与授予 BigQuery 数据集访问权限的方式相同。您可以为用户授予 Owner、Editor、Viewer 或 Service Account User 角色。具有 Service Account User 角色的用户可以访问该服务帐号有权访问的所有资源。

何时使用群组

如果政策中使用的是群组而非个人,那么当有团队成员加入和离开时,您的管理员可以调整群组的成员。因此,正确的政策更改会自动发生。要实施这种做法,可以针对每个项目或文件夹基于作业功能来创建群组,然后再根据相应作业功能的要求为每个群组分配多个角色。

群组管理由 Google 网上论坛企业版(G Suite 产品之一)处理。G Suite 管理员用户或委派管理员可以使用管理控制台来访问此工具。

网络选项

借助 Virtual Private Cloud (VPC),您可以将私有云服务隔离起来。例如,您可以使用 VPC 设置一个覆盖您的所有项目的网络,即一个普通的专用 RFC 1918 IP 空间。然后,可将任意项目的实例添加到此网络或其子网中。

您也可以将虚拟专用网 (VPN) 连接到单个可供全部或部分项目使用的网络中。通过 VPN 连接,您可以连接到 Google Cloud 专用 RFC 1918 IP 地址空间或扩展您本地网络的 RFC 1918 IP 地址空间。

Google 提供了以下用于连接到 VPC 实例的选项。

互连 对等互连
专用互连 IPsec VPN 直接对等互连 运营商对等互连
适用于将企业网络和 RFC 1918 IP 地址空间扩展到云中。

访问 VPC 中的 Google Cloud 资源不需要 VPN。
适用于通过公共互联网连接到 Google 的隧道以及传输的数据量较少的连接。 适用于直接连接到 Google,与经由互联网的 VPN 或公共访问相比,出站流量费用可节省多达 50%。 如果您希望享受直接对等互连的优点,但没有合作伙伴时无法满足对等互连的要求,则此选项很有用。
每个链路 10 Gbps 每条隧道 1.5–3 Gbps 每个链路 10 Gbps 因合作伙伴的产品而异

要详细了解这些选项,请参阅 Cloud Interconnect 页面。

何时使用直接对等互连

任何已注册自治系统编号 (ASN) 且拥有可路由的公共 IP 地址前缀的 Google Cloud 客户都可以与 Google 建立直接对等互连。该选项使用与公共互联网相同的互连模型,但没有中间服务提供商。详细了解如何与 Google 建立对等互连

何时使用运营商对等互连

对于没有公开 ASN 或者希望通过服务提供商连接到 Google 的客户,Google 可提供运营商对等互连服务。运营商对等互连专为希望与 Google 边缘网络建立企业级连接的客户而设计。

Cloud Billing

您可以使用 Cloud Console 来管理 Cloud Billing 帐号。在 Cloud Console 中,您可以更新帐号设置(如付款方式和管理联系人)。您还可以配置 Cloud Console,以设置预算、触发提醒、查看付款记录以及导出结算数据。

对于大多数用户来说,使用一个 Cloud Billing 帐号就足够了。 与该帐号关联的所有项目都可享受整个机构范围的折扣。 用户需向 Google 一次性付清月度帐单上的费用,并采用内部 IT 费用分摊流程来收取特定部门或特定实验室项目的费用。

使用单一结算帐号的方案如下所示:

单一结算帐号

此外,结算方面的注意事项还有助于您决定如何在 Google Cloud 中整理项目和文件夹。根据内部成本中心,您可能会决定按下图所示的方式来进行整理。

结算帐号拆分到多个文件夹

  • 在此图中,文件夹标识与成本中心、部门或 IT 项目关联的所有项目和资源。
  • 使用项目来整理资源。按项目显示费用,并且导出的帐单数据中包括项目 ID。
  • 使用标签对项目进行标注以指明附加分组信息,例如 environment=test。导出的帐单数据中包含标签。
  • 对成本中心进行编码并将其包括在项目名称或 ID 中。

如果要使每个文件夹对应一个独立的内部成本中心,此模型则会非常实用。不过,因为 Google 对于给定的结算帐号仅发送一个帐单,所以您仍需要进行内部费用分摊。

如果成本中心有需要单独支付的帐单,或者一些工作负载的费用需要单独使用特定币种进行支付,则可以选择使用多个结算帐号。使用这种方法时,您可能需要为每个结算帐号签署一份协议。

管理 Cloud Billing 帐号

Cloud Billing 帐号角色可帮助您管理结算帐号。您可以在组织级层分配以下结算角色。

角色 说明
Billing Account Administrator 管理组织中的所有结算帐号。
Billing Account Creator 在组织中创建结算帐号。
Billing Account User 将项目与结算帐号关联起来。
项目结算管理员 提供为项目分配结算帐号或停用项目结算功能的权限。

在组织节点级别授予“结算帐号管理员”角色,以允许查看组织中的所有结算帐号。要限制谁能创建结算帐号以及如何创建此类帐号,可使用“结算帐号创建者”角色并限制哪些用户拥有此权限。以下 Google 帮助中心文章提供了更多信息:

更改结算帐号

如果您想要更改项目的 Cloud Billing 帐号,或完全停用结算功能,请按照以下步骤操作。

  1. 在 Cloud Console 的左侧导航菜单中,点击结算
  2. 在项目名称右侧,点击三点状图标,然后点击更改结算帐号。也可以使用此图标来停用结算功能,从而停用相应项目。

    更改结算帐号

创建预算

预算会生成提醒,但不会停用项目的结算功能,因此即使某个项目超出预算,该项目仍会继续运行。如果项目超出预算,您必须手动停用结算功能。或者,您可以停用会产生可结算费用的资源,以防止进一步超出预算。由于预算不会实时更新,因此在项目刚开始超支的一两天内,您可能无法发现这种情况。

请按照以下步骤创建预算。

  1. 在 Cloud Console 中,转到结算菜单,点击预算和提醒,然后点击创建预算

    创建预算

    此示例中的帐号已经超出当月的预算。请记住,预算不会停用任何服务,只会在超出预算时向结算管理员发出通知。

  2. 输入预算详细信息以及您希望在预算使用量达到多少时接收提醒。

    预算提醒

  3. 项目或结算帐号下方,选择是要监控整体预算还是只监控个别项目的预算。预算功能的工作周期是日历月。您可以为给定月份确定所需的预算数额。

设置帐单导出功能

如果您需要 Cloud Billing 帐号使用的所有服务的详细报告,请从 Cloud Console 中的结算菜单中设置帐单导出。将详细信息存储在 Cloud Storage 或 BigQuery 中。如果您选择使用 Cloud Storage,则可以使用 JSON 或 CSV 格式存储数据。

帐单导出

将结算数据导出到 BigQuery 后,您可以快速找到支出超出所设定限额的项目。您还会看到需要付费的服务。例如,以下查询列出了当前月份中支出超过 $0.10 的所有项目。将 [YOUR_BIGQUERY_TABLE] 替换为您的表名。

SELECT
  project.name,
  cost
FROM
  [YOUR_BIGQUERY_TABLE]
WHERE
  cost > 0.1
ORDER BY
  cost DESC

后续步骤