角色与权限

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本页面介绍了 Identity and Access Management (IAM) 角色,这些角色是 IAM 权限的集合。

一个角色包含一组权限,可让您对 Google Cloud 资源执行特定操作。如需向主帐号(包括用户、群组和服务帐号)提供权限,您可以向主帐号授予角色。

准备工作

角色类型

IAM 中有三种类型的角色:

  • 基本角色:包括在引入 IAM 之前已存在的 Owner、Editor 和 Viewer 角色。
  • 预定义角色:针对特定服务提供精细访问权限,并由 Google Cloud 管理。
  • 自定义角色:根据用户指定的权限列表提供精细访问权限。

要确定基本角色、预定义角色或自定义角色中是否包含某项权限,您可以使用以下方法之一:

角色组成部分

每个角色都包含以下组成部分:

  • 标题:人类可读的角色名称。角色名称用于识别 Google Cloud 控制台中的角色。
  • 名称:角色的标识符,采用以下格式之一:

    • 预定义角色:roles/SERVICE.ROLE
    • 项目级自定义角色:projects/PROJECT_ID/roles/ROLE
    • 组织级自定义角色:organizations/ORG_ID/roles/ROLE

    角色名称用于识别允许政策中的角色。

  • ID:角色的唯一标识符。对于基本角色和预定义角色,ID 与角色名称相同。对于自定义角色,ID 是角色名称中 roles/ 之后的所有内容。

  • 说明:人类可读的角色说明。

  • 阶段:角色在发布生命周期中所处的阶段,例如 ALPHABETAGA。如需详细了解发布阶段,请参阅测试和部署

  • 权限:角色中包含的权限。有了权限,主帐号便可对 Google Cloud 资源执行特定操作。当您向主帐号授予角色时,主帐号会获得该角色中的所有权限。

    权限格式如下:

    SERVICE.RESOURCE.VERB
    

    例如,拥有 compute.instances.list 权限的用户可以列出他们拥有的 Compute Engine 实例,而拥有 compute.instances.stop 权限的用户则可以停止虚拟机。

    权限通常(但不总是)与 REST 方法一对一对应。也就是说,每项 Google Cloud 服务都有与其公开的每个 REST 方法相关联的权限。要调用方法,调用者需要关联的权限。例如,要调用 Pub/Sub API 的 projects.topics.publish 方法,您需要 pubsub.topics.publish 权限。

  • ETag:角色版本的标识符,有助于防止并发更新相互覆盖。基本角色和预定义角色始终具有 ETag AA==。每次修改角色时,自定义角色的 ETag 都会更改。

基本角色

基本角色是在引入 IAM 之前就已存在的高度宽松角色。它们最初称为原初角色。您可以使用基本角色向主帐号授予对 Google Cloud 资源的广泛访问权限。

当您向主帐号授予基本角色时,主帐号会获得该基本角色中的所有权限。他们还会获得服务为拥有基本角色的主帐号提供的所有权限,例如,通过 Cloud Storage 便利值BigQuery 特殊群组成员资格获得的权限。

下表汇总了基本角色在所有 Google Cloud 服务中为用户提供的权限:

名称 称谓 权限
roles/viewer Viewer 拥有执行不会影响状态的只读操作的权限,例如查看(但无法修改)现有资源或数据。
roles/editor Editor 拥有所有查看权限,以及修改状态的操作(例如更改现有资源)的权限。
注意:Editor 角色包含为大多数 Google Cloud 服务创建和删除资源的权限。但是,它不包含对所有服务执行所有操作的权限。如需详细了解如何检查某个角色是否具有您所需的权限,请参阅本页面中的角色类型
roles/owner 所有者 拥有 Editor 的所有权限,此外还有权执行以下操作:
  • 管理项目和项目中所有资源的角色和权限。
  • 为项目设置结算。
注意
  • 在资源级层(如 Pub/Sub 主题)授予 Owner 角色并不会授予父级项目上的 Owner 角色。
  • 如果您在组织级层被授予 Owner 角色,则可以修改组织下的所有项目和其他资源。
  • 如需向组织外部的用户授予项目的 Owner 角色,您必须使用 Google Cloud 控制台,而不能使用 gcloud CLI。如果您的项目不属于组织,则必须使用 Google Cloud 控制台授予 Owner 角色。

您可以使用 Google Cloud 控制台、API 和 gcloud CLI 授予基本角色。如需了解相关说明,请参阅授予、更改和撤消访问权限

预定义角色

除了基本角色之外,IAM 还提供其他预定义角色,这些角色可提供对特定 Google Cloud 资源的精细访问权限。这些角色由 Google 创建和维护。Google 会根据需要自动更新其权限,例如 Google Cloud 添加新功能或服务时。

您可以在资源层次结构的任何级层向同一用户授予多个角色。例如,同一位用户可以拥有项目上的 Compute Network Admin 和 Logs Viewer 角色,并且对该项目中的 Pub/Sub 主题具有 Pub/Sub Publisher 角色。如需列出角色中包含的权限,请参阅获取角色元数据

如需有关选择最合适的预定义角色的帮助,请参阅选择预定义角色

如需查看预定义角色的列表,请参阅角色参考

自定义角色

IAM 还允许您创建自定义 IAM 角色。自定义角色可帮助您实施最低权限的原则,因为它们有助于确保组织中的主帐号只能有他们需要的权限。

自定义角色是用户定义的,可让您捆绑一个或多个受支持的权限以满足您的特定需求。创建自定义角色时,您必须选择要在哪个组织或者项目中创建该角色。然后,您可以在组织或项目的级别上授予该自定义角色,也可以在该组织或项目中的任何资源的级别上授予该角色。

您只能在创建一个自定义角色的项目或组织中授予该角色,不能在其他项目或组织中授予该角色,也不能在其他项目或组织中的资源级别上授予该角色。

您可以通过将一个或多个受支持的 IAM 权限组合在一起来创建自定义角色。

支持的权限

您可以在自定义角色中包括多项(但不是所有)IAM 权限。每个权限都具有以下某个支持级别供在自定义角色中使用:

支持级别 说明
SUPPORTED 自定义角色中完全支持该权限。
TESTING Google 正在对该权限进行测试,以检查其与自定义角色的兼容性。您可以在自定义角色中包括该权限,但可能会看到某些意外行为。不建议用于生产用途。
NOT_SUPPORTED 自定义角色中不支持该权限。

组织级层自定义角色可以包含自定义角色支持的任何 IAM 权限。项目级层自定义角色可以包含任何受支持的权限,但只能在组织或文件夹级层使用的权限除外。

您不能在项目级层角色中包含特定于文件夹和组织的权限,因为在项目级层授予这些权限时,它们不执行任何操作。这是因为 Google Cloud 中的资源以分层方式进行组织。权限通过资源层次结构继承,这意味着这些权限对资源以及该资源的所有后代有效。但是,组织和文件夹始终位于 Google Cloud 资源层次结构中的项目上方。因此,您永远无法使用在项目级层获得的权限来访问文件夹或组织。因此,特定于文件夹和组织的权限(例如 resourcemanager.folders.list)对项目级层自定义角色无效。

何时使用自定义角色

在大多数情况下,您应该可以使用预定义角色,而不是自定义角色。预定义角色由 Google 维护,并会在向 Google Cloud 添加新权限、功能或服务时自动更新。相反,自定义角色并非由 Google 维护;当 Google Cloud 添加新的权限、功能或服务时,您的自定义角色将不会自动更新。

不过,在以下情况下,您可能需要创建自定义角色:

  • 主帐号需要某项权限,但包含该权限的每个预定义角色也包括主帐号不需要且不应具有的权限。
  • 您可以使用角色建议来使用更合适的角色授权替换过于宽松的角色授权。在某些情况下,您可能会收到创建自定义角色的建议

另请注意以下限制:

  • 自定义角色最多可以包含 3000 个权限。此外,自定义角色的名称、描述和权限名称的总大小不得超过 64 KB。
  • 您可以创建的自定义角色数量有限制:

    • 您最多可以在组织中创建 300 个组织级层自定义角色
    • 您最多可以在组织中的每个项目中创建 300 个项目级自定义角色。

关联权限

某些权限仅在同时提供时才有效。例如,如需更新允许政策,您必须先读取该政策,然后才能对其进行修改和写入。因此,除了 setIamPolicy 权限之外,几乎总是需要该服务和资源类型的 getIamPolicy 权限才能更新允许政策。

为确保自定义角色有效,您可以基于具有类似权限的预定义角色创建自定义角色。预定义角色在设计时考虑了特定任务,并包含完成这些任务所需的所有权限。查看这些角色可以帮助您查看通常一起授予的权限。然后,您可以使用该信息来设计有效的自定义角色。

要了解如何基于预定义角色创建自定义角色,请参阅创建和管理自定义角色

自定义角色生命周期

以下部分介绍了自定义角色生命周期的各个阶段的关键注意事项。您可以使用此信息来了解如何创建和管理自定义角色

创建

创建自定义角色时,请选择有助于识别角色的 ID、标题和说明:

  • 角色 ID:角色 ID 是角色的唯一标识符。最多可包含 64 个字节,并且可以包含大写和小写字母数字字符、下划线和英文句点。您不能在组织或项目中重复使用角色 ID。

    角色 ID 不能更改,因此请务必谨慎选择。您可以删除自定义角色,但只有在 44 天的删除过程结束之后,才能在同一组织或项目中创建具有相同 ID 的新自定义角色。如需详细了解删除流程,请参阅删除自定义角色

  • 角色名称:角色名称显示在 Google Cloud 控制台中的角色列表内。名称不必是唯一的,但我们建议您使用唯一的描述性名称,以便更好地区分您的角色。此外,请考虑在角色名称中指明角色是在组织级层还是项目级层创建的。

    角色名称最多可以包含 100 字节,并且可以包含大写和小写字母数字字符及符号。您可以随时更改角色名称。

  • 角色说明:角色说明是一个可选字段,您可以在其中提供角色的其他信息。举例来说,您可以添加该角色的预期用途、创建或修改该角色的日期,以及该自定义角色所基于的任何预定义角色。说明不得超过 256 字节,且包含大写和小写字母数字字符及符号。

此外,在创建自定义角色时,请注意权限依赖项

要了解如何基于预定义角色创建自定义角色,请参阅创建和管理自定义角色

发布

自定义角色包含发布阶段作为角色元数据的一部分。自定义角色最常见的发布阶段是 ALPHABETAGA。这些发布阶段均为参考信息;有助于您跟踪每个角色是否已准备好投入广泛使用。另一个常见的发布阶段是 DISABLED。在此发布阶段中可以停用自定义角色

我们建议您使用发布阶段来传达有关角色的以下信息:

  • EAPALPHA:该角色仍在开发或测试中,或者包含针对尚未公开发布的 Google Cloud 服务或功能的权限。它尚未准备好投入广泛使用。
  • BETA:该角色已在有限的范围内进行了测试,或包含针对未正式发布的 Google Cloud 服务或功能的权限。
  • GA:该角色已经过广泛测试,并且其所有权限都是针对已正式发布的 Google Cloud 服务或功能。
  • DEPRECATED:该角色已不再使用。

如需了解如何更改角色的发布阶段,请参阅修改现有自定义角色

维护

您负责维护自定义角色。这包括在用户责任发生变化时更新角色,以及更新角色以允许用户访问需要其他权限的新功能。

如果您的自定义角色基于预定义角色,我们建议您定期检查这些预定义角色是否存在权限更改。跟踪这些更改可帮助您确定何时以及如何更新自定义角色。例如,您可能会注意到预定义角色更新了使用新预览版功能的权限,并且可能决定将这些权限添加到自定义角色中。

为了更轻松地查看要监控的预定义角色,我们建议您在自定义角色的说明字段中列出您的自定义角色所基于的任何预定义角色。当您使用 Google Cloud 控制台根据预定义角色创建自定义角色时,Google Cloud 控制台会自动执行此操作。

如需了解如何更新自定义角色的权限和说明,请参阅修改现有自定义角色

如需确定最近有哪些角色和权限发生了更改,请参阅权限更改日志

正在停用

如果您不再希望自己组织中的任何主帐号使用自定义角色,则可以停用该角色。如需停用此角色,请将其发布阶段更改为 DISABLED

已停用的角色仍会出现在您的 IAM 政策中,并且可以授予主帐号,但没有任何效果。

如需了解如何停用自定义角色,请参阅停用自定义角色

后续步骤