访问权限控制概览

默认情况下,所有 Google Cloud Platform 项目都只包含一位用户:原始项目创建者。其他用户在被添加为项目成员或绑定到特定资源之后,才能访问相关项目和 Compute Engine 资源。本页面介绍了向项目中添加新用户的不同方式,以及如何设置 Compute Engine 资源的访问权限控制。

另外,如果您在虚拟机 (VM) 实例上运行应用,并且应用需要访问 Compute Engine 或其他 Google Cloud Platform API,那么您可以使用服务帐号(而非使用用户凭据)对应用进行身份验证。

针对用户的访问权限控制选项

要使用户能够创建和管理您的 Compute Engine 资源,您可以将用户作为团队成员添加到项目或特定资源,并使用 Cloud Identity 和 Access Management 角色授予他们权限。

团队成员可以是具有有效 Google 帐号的个人用户、Google 群组、服务帐号或 G Suite 网域。当您将团队成员添加到项目或资源中时,请指定要向其授予的角色。Cloud IAM 提供三种类型的角色:预定义角色初始角色自定义角色

资源会沿用 GCP 资源层次结构中父级资源的政策。资源的有效政策是指为该资源设置的政策与从其父级沿用而来的政策的集合。

预定义 Compute Engine 角色

预定义角色可授予一组相关权限。Compute Engine 提供了以下预定义角色:

角色名称 权限 目标用户
Compute Engine 映像用户

拥有列出和使用另一个项目中的映像的权限。将该角色与另一个角色一同授予某个成员后,该成员将可以使用另一个项目中的映像创建新资源。例如,授予此角色和实例管理员角色后,成员将可以使用另一个项目中的映像创建虚拟机实例和永久性磁盘。

如果您要创建托管实例组,或者如果您正使用 Deployment Manager 创建虚拟机实例,则可能需要将此角色授予项目的 Google API 服务帐号,以便该服务帐号能够使用其他项目中的映像。

  • 服务帐号
  • 系统管理员
  • 开发者
Compute Engine 实例管理员 (v1)

拥有 Compute Engine 实例、实例组、磁盘、快照和映像的完整控制权。拥有对所有 Compute Engine 网络资源的只读权限。

如果成员要管理配置为以服务帐号的身份运行的虚拟机实例,则您还必须授予其“服务帐号用户”角色,以使其能够将服务帐号分配给虚拟机实例。

  • 系统管理员
  • 开发者
Compute Engine 管理员角色

拥有所有 Compute Engine 资源的完全控制权。如果用户要管理配置为以服务帐号身份运行的虚拟机实例,您还必须授予其 roles/iam.serviceAccountUser 角色。

  • 系统管理员
  • 开发者
Compute Engine 网络管理员

拥有创建、修改和删除网络资源(防火墙规则和 SSL 证书除外)的权限。网络管理员角色提供对防火墙规则、SSL 证书和实例的只读权限(若拥有对实例的只读权限,便可查看其临时 IP 地址)。网络管理员角色不允许成员创建、启动、停止或删除实例。

网络管理员
Compute Engine 安全管理员

拥有创建、修改和删除防火墙规则和 SSL 证书的权限。

安全管理员
Compute Engine 负载平衡器管理员测试版

拥有创建、修改和删除负载平衡器及相关资源的权限。

负载平衡器管理员
Compute Engine 服务帐号用户

拥有创建可使用服务帐号的实例的权限,以及在已配置为以服务帐号身份运行的实例上附加磁盘和设置元数据的权限。

您不应该单独授予此角色,因为此角色不向 Compute Engine API 提供任何权限。您应该将此角色和另一个角色(例如实例管理员角色)一同授予某个成员。

  • 系统管理员
  • 开发者
Compute Engine 查看者角色

拥有获取并列出 Compute Engine 资源的只读访问权限,但不能读取存储在其中的数据。例如,拥有此角色的帐号可以清点项目中的所有磁盘,但无法读取这些磁盘上的任何数据。

系统管理员
Compute Engine 网络用户

拥有使用共享 VPC 网络的权限。具体而言,就是将此角色授予需要使用宿主项目中的资源的服务所有者。被授予此角色后,服务所有者可以使用属于宿主项目的子网和网络。例如,网络用户可以创建属于共享 VPC 宿主网络的虚拟机实例,但不能在宿主项目中删除或创建新网络。

  • 系统管理员
  • 开发者
Compute Engine 网络查看者

拥有对所有网络资源的只读权限。例如,如果您有用于检查网络配置的软件,则可以向该软件的服务帐号授予网络查看者角色。

  • 网络管理员
  • 系统管理员
  • 开发者
  • 服务帐号
Compute Engine 存储管理员测试版

拥有创建、修改和删除磁盘、映像和快照的权限。

例如,如果您的公司有人负责管理映像,但您不希望他们拥有项目的编辑者角色,则可以向其帐号授予此角色。

  • 系统管理员
  • 开发者
Compute Engine 共享 VPC 管理员

拥有管理共享 VPC 宿主项目的权限(具体来说,就是启用宿主项目并将服务项目与宿主项目的网络关联)。此角色只能在组织层级授予。

项目创建者

要查看获得了某个特定角色授予的权限的 API 方法列表,请参阅 Compute Engine IAM 角色文档。

预定义角色矩阵

下表对每个 Compute Engine 角色的权限展开了全面对比。

权限 实例管理员 (v1) 映像用户 网络用户 网络查看者 网络管理员 安全管理员 存储管理员 共享 VPC 管理员 计算管理员 计算查看者 负载平衡器管理员
创建或删除虚拟机实例 *
通过 SSH 连接虚拟机实例 * *
列出或获取虚拟机实例
创建或删除映像、磁盘、快照
列出或获取映像
创建或删除实例组 *
列出或获取实例组
创建和管理负载平衡器
创建和管理 VPN
查看网络/子网资源
查看防火墙规则
创建和管理防火墙和 SSL 证书 防火墙为“否”,SSL 证书为“是”
创建和管理共享 VPC 宿主项目
在共享 VPC 宿主项目中使用网络和子网
创建和管理网络和子网

*如果虚拟机实例可以服务帐号的身份运行,则还需要授予“服务帐号用户”角色。

要查看获得了某个特定角色授予的权限的 API 方法列表,请参阅 Compute Engine IAM 角色文档。

初始 Cloud IAM 角色

初始 Cloud IAM 角色直接对应于原来的项目所有者、修改者和查看者角色。通常,您应尽可能使用预定义角色;但是,在 Cloud IAM 不受支持的情况下,您可能需要使用初始角色来授予正确的权限。

角色名称 权限
Owner 拥有所有查看者和编辑者权限,以及更改结算设置、管理访问权限控制和删除项目的权限。
Editor 拥有所有查看者权限,以及创建、修改和删除资源的权限。
Viewer 拥有对所有资源的只读权限;没有更改资源的权限。

要详细了解初始角色,请参阅初始角色文档。

如果预定义或初始角色无法满足您的需求,您可以创建自定义角色

Compute Engine 资源的 Cloud IAM 政策

您可以直接向诸如虚拟机实例、映像和磁盘等 Compute Engine 资源附加 Cloud IAM 政策,从而将访问权限授予 Compute Engine 资源。通过 Cloud IAM 政策,您可以管理这些资源的 Cloud IAM 角色,甚至在项目级层管理角色。这样一来,您便可以灵活应用最小权限原则,即仅授予协作者开展工作所需的特定资源的访问权限。

借助 Compute Engine 资源的 Cloud IAM 政策,组织可以:

  • 授予用户访问特定资源子集的权限。假设 Alice 应该管理项目中的实例子集。通过实例级层的 Cloud IAM 政策,您只为她授予这些实例的 compute.instanceAdmin.v1 角色。如果您在项目级层授予 Alice 相同的角色,那么她将有权修改项目中的所有实例。
  • 允许实例、磁盘和映像的管理员授予其他人访问这些资源的权限,这些人无需成为强大的项目所有者。假设 Bob 是开发者,已获授特定映像的 compute.storageAdmin 角色。他可以通过为团队成员授予映像的 compute.imageUser 角色来与他们共享映像。如果不具有 Compute Engine 资源的 Cloud IAM 政策,Bob 需要成为项目所有者才能共享映像,因为他需要修改项目的 Cloud IAM 政策。

资源会沿用其父级资源的政策。如果在项目级层设置政策,则项目的所有子资源都会沿用该政策。资源的有效政策是指为该资源设置的政策与从层次结构中更高层级沿用而来的政策的集合。有关详情,请参阅 Cloud IAM 政策层次结构

组织政策

如果您是 G Suite 会员,那么您的项目可能属于组织资源。组织资源是 Google Cloud Platform 资源层次结构中与 G Suite 帐号密切关联的超级节点。在为 G Suite 网域创建组织资源后,由该网域成员创建的所有 Cloud Platform 项目都将属于该组织资源。

组织可以实施组织政策,这些政策用于限制整个云资源层次结构中的允许配置。对于 Compute Engine,您可以实施以下政策:

要设置组织政策,您必须已在组织级层获授 orgpolicy.policyAdmin 角色。如果您的政策有例外情况,您还可以设置特定于项目的替代政策。

要详细了解组织,请参阅组织文档。

要详细了解组织政策,请参阅组织政策文档。

向用户授予对虚拟机实例的 SSH 访问权限

如果您只是想让用户能够使用 SSH 连接虚拟机实例,但不想授予其管理 Compute Engine 资源的权限,请将用户的公钥添加到项目中,或者将用户的公钥添加到特定实例中。使用此方法,您可以避免将用户添加为项目成员,同时仍允许其访问特定实例。

要详细了解 SSH 以及如何管理 SSH 密钥,请参阅 SSH 密钥概述

请注意,如果您将 roles/compute.instanceAdmin.v1 角色授予项目成员,则只要实例未设置为以服务帐号的身份运行,该成员就可以使用 SSH 自动连接实例。如果实例被设置为以服务帐号的身份运行,您还必须授予 roles/iam.serviceAccountUser 角色,以便成员连接实例。

如果您将某个成员添加为项目所有者或编辑者,则相应成员会自动拥有对项目中的虚拟机实例的 SSH 访问权限。

针对虚拟机实例上运行的应用的访问权限控制

如果您在实例上运行应用代码,并且该应用需要向其他 Google Cloud Platform API 进行身份验证,则您可以创建服务帐号并为这些服务帐号提供特定的 Cloud IAM 角色,以代表您向其他 Cloud Platform API 进行身份验证。服务帐号是一个没有用户凭据的特殊帐号,非常适合用于服务器与服务器之间的互动。

要详细了解服务帐号,请参阅服务帐号文档。

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档