选择预定义角色

Identity and Access Management (IAM) 为大多数 Google Cloud 服务提供多个预定义角色。每个预定义角色都包含执行任务或一组相关任务所需的权限。

对于简单任务,查找适当的预定义角色通常很简单。例如,如果主帐号需要查看 Cloud Storage 存储桶中的对象,则 Storage Object Viewer 角色 (roles/storage.objectViewer) 可能是一个不错的选择。

但是,有数百个预定义角色,这很难确定要授予主帐号的最合适角色。找到满足最小权限原则的角色可能也很困难,该原则指出主帐号不应具有比实际所需更多的权限。

本页面将引导您完成选择最合适的预定义角色的过程:

  1. 确定必要的权限
  2. 查找包含权限的角色
  3. 选择最合适的角色
  4. 确定授予角色的位置
  5. 向主帐号授予角色

确定必要的权限

要确定主帐号所需的权限,请先列出他们需要执行的任务,以及他们将用于执行这些任务的 Google Cloud 服务。例如,主帐号可能需要使用 Compute Engine 来创建虚拟机实例。

在确定任务和服务后,您可以使用一些策略来确定每个任务的必要权限:

  • 查看 Google Cloud 服务的文档。

    对于某些服务,面向任务的方法指南在“准备工作”部分或每项任务的说明中列出了每项任务所需的角色或权限。例如,请参阅 Compute Engine 导入和导出虚拟机映像的前提条件

    一些其他服务会标识有关访问权限控制的页面所需的角色和权限。例如,请参阅 Cloud Spanner Google Cloud Console 任务所需的权限

  • 确定用于完成任务的 REST 或 RPC API 方法,并查看 API 参考文档以获取所需的 IAM 权限。

    对于某些服务,REST 和 RPC API 文档列出了每种方法所需的权限。例如,请参阅适用于 instances.get 方法的 Compute Engine 文档。

  • 查看每项服务的权限列表,并根据您的判断查找相关权限。

    在大多数情况下,每个权限的名称也说明了该权限允许您执行的操作。例如,用于创建 Compute Engine 虚拟机实例的权限名为 compute.instances.create

    为了帮助您了解每个权限名称,请记得权限名称采用 SERVICE.RESOURCE_TYPE.ACTION 格式。

通常,您无需确定每个任务所需的每项权限。相反,请专注于为每个任务确定最相关的权限。如果预定义角色包含该权限,则该权限可能还包含相关权限。

在此过程中,您还应尝试确定哪些所需权限是最强大的。通常,更强大的权限包含在较少数量的预定义角色中。因此,如果您专注于这些权限,您将拥有较短的潜在角色列表供您选择。

例如,以下类型的权限特别强大:

  • 创建和删除资源的权限
  • 访问诸如加密密钥或个人身份信息 (PII) 等敏感数据的权限
  • 用于为资源设置允许政策或拒绝政策的权限
  • 更新组织、文件夹和项目的权限,可能会导致其他资源继承更新

相比之下,以下类型的权限的功能不太强大:

  • 用于列出资源的权限
  • 访问非敏感数据的权限
  • 更新风险有限的设置(例如 Compute Engine 虚拟机实例的最低要求 CPU 平台)的权限

查找包含权限的角色

确定所需的权限后,您可以搜索包含这些权限的预定义角色,并创建一个可能合适的角色列表。如需查找这些角色,最简单的方法是搜索权限参考文档,其中列出了所有 IAM 权限以及包含每个权限的角色。

为了遵循最小权限原则,您可能需要确定多个要授予的预定义角色,尤其是在所需权限属于多个 Google Cloud 服务的情况下。例如,如果主帐号需要查看 Cloud Storage 对象和管理 Cloud SQL 数据库,则单个预定义角色不太可能包含这两项服务的适当权限。如果存在此类角色,则该角色还可能包含主帐号不需要的大量不相关的权限。为了降低风险,请查找包含 Cloud Storage 所需权限的一个角色,以及包含 Cloud SQL 所需权限的其他角色。

选择最合适的角色

现在您已拥有可能合适的预定义角色列表,接下来您可以从列表中选择最合适的角色。

首先消除以下类型的角色:

  • 对于生产环境:基本角色,包括 Owner (roles/owner)、Editor (roles/editor) 和 Viewer (roles/viewer)。

    基本角色具有针对所有 Google Cloud 服务的数千项权限。在生产环境中,除非没有替代角色,否则请勿授予基本角色。应授予满足您的需求的最受限的预定义角色或自定义角色。

  • Service Agent 角色,标题通常以“Service Agent”结尾且名称以 serviceAgent 结尾。

    这些角色适用于服务代理,即 Google Cloud 服务用于访问资源的特殊服务帐号类型。Service Agent 角色往往包含多项服务的权限,其中可能包括您的主帐号不需要访问的服务。

接下来,使用预定义角色参考文档Cloud Console 中的角色页面列出每个角色具有的权限。检查每个角色,确定您不希望主帐号拥有的权限,并消除包含不需要的权限的任何角色。

如果此过程消除了所有预定义角色,请考虑创建一个适合您用例的自定义角色。否则,请选择包含最少权限的一个或多个角色,同时仍满足您的需求。

确定授予角色的位置

授予角色时,始终会针对属于资源层次结构的特定 Google Cloud 资源授予该角色。较低级层资源(例如 Compute Engine 虚拟机实例)会继承在较高级层资源(例如项目、文件夹和组织)上授予的角色。

选择您要授予已识别的预定义角色的位置:

  • 如果主帐号需要访问特定较低级层的资源,请针对这些资源授予相应角色。
  • 如果主帐号需要访问项目、文件夹或组织中的多个资源,请授予项目、文件夹或组织的角色。选择满足主帐号需求的最低级别资源。

    此外,还请考虑使用 IAM Conditions 仅在项目、文件夹或组织内的特定资源上授予角色

如果您确定了多个预定义角色,请考虑是否应在资源层次结构的不同层级授予这些角色。例如,如果主帐号需要访问单个 Cloud SQL 数据库,但访问了许多不同的 Compute Engine 虚拟机实例,您可能希望在数据库上授予 Cloud SQL 的角色和 Compute Engine 针对项目的角色。

向主帐号授予角色

现在您可以将角色授予主帐号了。如需了解如何授予角色,请参阅以下内容:

授予这些角色后,您可以使用 Policy Analyzer 和 Policy Troubleshooter 来检查主帐号可以访问哪些资源并排查访问权限问题。

如果主帐号拥有正确资源的预期权限,但无法完成其任务,那么您可能忽略了主帐号所需的权限。通过向列表添加所需的权限来迭代您之前的尝试:查找包含这些权限的角色,并选择最合适的角色。

如果您不小心授予某个角色过多的权限,则角色建议可能会建议权限较少的角色来满足主帐号的需求。某些角色绑定不会获得角色建议

后续步骤