当您在项目中添加新成员时,可以使用 Identity and Access Management (IAM) 政策为该成员授予一个或多个 IAM 角色。每个 IAM 角色都包含授予成员访问特定资源的权限。
Compute Engine 具有一组预定义 IAM 角色,本页对这些角色进行了说明。您还可以创建自定义角色,这些角色包含的权限子集直接对应于您的需要。
如需了解每种方法所需的权限,请参阅 Compute Engine API 参考文档:
如需了解如何授予访问权限,请参阅以下页面。
- 如需在项目级层设置 IAM 政策,请参阅 IAM 文档中的授予、更改和撤消对资源的访问权限。
- 如需针对特定 Compute Engine 资源设置政策,请阅读授予对 Compute Engine 资源的访问权限。
- 如需为 Compute Engine 服务帐号分配角色,请阅读为实例创建和启用服务帐号。
准备工作
- 阅读 IAM 文档。
什么是 IAM?
Google Cloud 提供 IAM,可让您授予对特定 Google Cloud 资源的更细化访问权限,并防止对其他资源进行不必要的访问。IAM 允许您采用最小权限安全原则,您只需授予对您资源的必要访问权限。
IAM 允许您通过设置 IAM 政策来控制谁(身份)对哪些资源具有何种权限(角色)。IAM 政策可为项目成员授予一个或多个特定角色,进而授予相应身份特定权限。例如,您可以为 Google 帐号分配给定资源(如项目)的 roles/compute.networkAdmin
角色,此后该帐号便可控制项目中网络相关的资源,但无法管理实例和磁盘等其他资源。您还可以使用 IAM 来管理为项目团队成员授予的 Cloud Console 旧版角色。
serviceAccountUser 角色
同时授予 roles/compute.instanceAdmin.v1
和 roles/iam.serviceAccountUser
角色时,后者会授予成员创建和管理使用服务帐号的实例的权限。具体而言,同时授予 roles/iam.serviceAccountUser
和 roles/compute.instanceAdmin.v1
角色可让成员拥有执行以下操作的权限:
- 创建一个以服务帐号身份运行的实例。
- 将永久性磁盘附加到以服务帐号身份运行的实例上。
- 在以服务帐号身份运行的实例上设置实例元数据。
- 通过 SSH 连接到一个以服务帐号身份运行的实例。
- 将实例重新配置为以服务帐号身份运行。
您可以通过以下两种方式之一授予 roles/iam.serviceAccountUser
:
推荐。将该角色授予特定服务帐号中的成员。这会使得该成员有权访问具有
iam.serviceAccountUser
角色的服务帐号,但不允许其访问不具有iam.serviceAccountUser
角色的其他服务帐号。在项目级层为成员授予该角色。该成员有权访问项目中的所有服务帐号,包括将来创建的服务帐号。
如果您对服务帐号不熟悉,请详细了解服务帐号。
Google Cloud Console 权限
如需使用 Google Cloud Console 访问 Compute Engine 资源,您必须拥有一个包含项目的以下权限的角色:
compute.projects.get
以 instanceAdmin 身份连接到实例
为项目成员授予 roles/compute.instanceAdmin.v1
角色后,该项目成员即可使用标准 Google Cloud 工具(例如 gcloud
工具)或通过浏览器发起 SSH 连接,连接到虚拟机 (VM) 实例。
当成员使用 gcloud
工具或通过浏览器发起 SSH 连接时,该工具将自动生成公钥/私钥对,并将公钥添加到项目元数据中。如果成员没有修改项目元数据的权限,则该工具会将成员的公钥添加到实例元数据中。
如果成员已有想使用的现有密钥对,则可以手动将其公钥添加到实例元数据中。详细了解如何将 SSH 密钥添加到实例或从中移除。
IAM 与服务帐号
创建新的自定义服务帐号并将 IAM 角色授予服务帐号以限制访问实例的权限。将 IAM 角色与自定义服务帐号结合使用,您可以:
- 通过精细的 IAM 角色限制您的实例对 Google Cloud API 的访问权限。
- 为每个实例或每组实例授予唯一身份。
- 限制您的默认服务帐号的访问权限。
托管实例组和 IAM
托管实例组(尤其当配置为自动扩缩时)是可代表您执行操作的资源,无需直接的用户互动。托管实例组通过服务帐号身份来创建、删除和管理实例组中的实例。如需了解详情,请阅读代管实例组和 IAM 文档。
不受支持的操作
您无法授予在采用 IAM 角色的实例组上执行滚动更新的权限。
如需授予执行这些操作的权限,请使用权限更大的所有者、修改者或查看者角色。
预定义 Compute Engine IAM 角色
使用 IAM 时,Compute Engine API 中的每个 API 方法都要求发出 API 请求的身份具有使用相应资源的适当权限。您可以通过设置政策为项目成员(用户、群组或服务帐号)授予角色,进而授予相应权限。
除了基本角色(Viewer、Editor、Owner)和自定义角色之外,您还可以为项目成员分配以下 Compute Engine 预定义角色。
您可以针对同一资源向某位成员授予多个角色。例如,如果您的网络团队还负责管理防火墙规则,您可以将 roles/compute.networkAdmin
和 roles/compute.securityAdmin
同时授予该网络团队的 Google 群组。
下表描述了预定义 Compute Engine IAM 角色,以及每个角色所包含的权限。每个角色包含一组适合特定任务的权限。例如,Instance Admin 角色授予管理实例的权限,与网络相关的角色具有管理网络相关资源的权限,而安全角色具有管理安全相关资源(如防火墙和 SSL 证书)的权限。
Compute Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有所有 Compute Engine 资源的完全控制权。 如果用户要管理配置为以服务帐号身份运行的虚拟机实例,您还必须授予 |
|
Compute Image User 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
可在不具备其他映像权限的情况下列出和读取映像。在项目级层授予此角色后,获授此角色的用户可以列出项目中的所有映像,并根据项目中的映像创建实例和永久性磁盘等资源。 |
|
Compute Instance Admin(Beta 版)角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有创建、修改和删除虚拟机实例的权限。 这包括创建、修改和删除磁盘的权限,以及配置安全强化型虚拟机Beta 版设置的权限。
如果用户要管理配置为以服务帐号身份运行的虚拟机实例,您还必须授予 例如,如果贵公司的某位员工负责管理多组虚拟机实例,但不负责管理网络或安全设置,也不负责管理以服务帐号身份运行的实例,则您可以在这些实例所属的组织、文件夹或项目级层授予此角色,也可以在个别实例级层授予此角色。 |
|
Compute Instance Admin (v1) 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有对 Compute Engine 实例、实例组、磁盘、快照和映像的完整控制权, 拥有所有 Compute Engine 网络资源的读取权限。 如果仅在实例级层向用户授予此角色,则该用户无法创建新实例。 |
|
计算负载平衡器管理员角色
名称 | 说明 | 权限 |
---|---|---|
roles/
Beta 版
|
拥有创建、修改和删除负载平衡器及相关资源的权限。 例如,如果您公司的负载平衡团队负责管理负载平衡器、负载平衡器的 SSL 证书、SSL 政策和其他负载平衡资源,而另一个网络团队负责管理其余网络资源,则向负载平衡团队群组授予此角色。 |
|
Compute Network Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有创建、修改和删除网络资源(不包括防火墙规则和 SSL 证书)的权限。Network Admin 角色允许以只读方式访问防火墙规则、SSL 证书和实例(以查看其临时 IP 地址),但无法让用户创建、启动、停止或删除实例。 例如,如果您公司的安全团队负责管理防火墙和 SSL 证书,而网络团队负责管理其余网络资源,则向网络团队群组授予此角色。 |
|
Compute Network User 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
提供共享 VPC 网络的访问权限 获授此角色的服务所有者可以使用属于宿主项目的 VPC 网络和子网。例如,网络用户可以创建属于宿主项目网络的虚拟机实例,但不能在宿主项目中删除网络或者创建新网络。 |
|
Compute Network Viewer 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
提供所有网络资源的只读权限 例如,如果您有用于检查网络配置的软件,则可以向该软件的服务帐号授予此角色。 |
|
Compute Organization Firewall Policy Admin 角色
姓名 | 说明 | 权限 |
---|---|---|
roles/
|
拥有对 Compute Engine 组织防火墙政策的完全控制权。 |
|
Compute Organization Firewall Policy User 角色
姓名 | 说明 | 权限 |
---|---|---|
roles/
|
可以查看或使用 Compute Engine 防火墙政策,以便与组织或文件夹相关联。 |
|
Compute Organization Security Policy Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有对 Compute Engine 组织安全政策的完整控制权。 |
|
Compute Organization Security Policy User 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
可以查看或使用 Compute Engine 安全政策,以便与组织或文件夹相关联。 |
|
Compute Organization Resource Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有与组织或文件夹关联的 Compute Engine 防火墙政策的完全控制权。 |
|
计算操作系统管理员登录角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有以管理员用户身份登录 Compute Engine 实例的权限。 |
|
Compute OS Login 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有以标准用户身份登录 Compute Engine 实例的权限。 |
|
Compute OS Login External User 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
此角色仅在组织级层提供。 此角色可为外部用户授予设置与该组织关联的 OS Login 信息的权限,但不授予对实例的访问权限。外部用户必须获授必要的 OS Login 角色之一,才能使用 SSH 访问实例。 |
|
Compute Packet Mirroring Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
指定要生成镜像的资源。 |
|
Compute Packet Mirroring User 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
可使用 Compute Engine 数据包镜像。 |
|
Compute Public IP Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
Beta 版
|
拥有对 Compute Engine 公共 IP 地址管理的完整控制权。 |
|
Compute Security Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有创建、修改和删除防火墙规则和 SSL 证书的权限,以及配置安全强化型虚拟机Beta 版设置的权限。 例如,如果您的公司拥有一个负责管理防火墙和 SSL 证书的安全团队和一个负责管理其余网络资源的网络团队,则向安全团队群组授予此角色。 |
|
Compute Storage Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有创建、修改和删除磁盘、映像及快照的权限。 例如,如果您公司的某位员工负责管理项目映像,但您不希望该员工拥有项目的 Editor 角色,则向其帐号授予项目的此角色。 |
|
Compute Viewer 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有以只读方式获取和列出 Compute Engine 资源的权限,但无权读取这些资源中存储的数据。 例如,获授此角色的帐号可以清点项目中的所有磁盘,但无法读取这些磁盘上的任何数据。 |
|
Compute Shared VPC Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有管理共享 VPC 宿主项目的权限,具体来说,就是可以启用宿主项目并将共享 VPC 服务项目关联到宿主项目所在的网络。 在组织层级,此角色只能由组织管理员授予。
Google Cloud 建议将 Shared VPC Admin 设为共享 VPC 宿主项目的所有者。Shared VPC Admin 负责向服务所有者授予 Compute Network User 角色 ( |
|
GuestPolicy Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
Beta 版
|
拥有对 GuestPolicy 的完整管理员权限 |
|
GuestPolicy Editor 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
Beta 版
|
可以修改 GuestPolicy 资源 |
|
GuestPolicy Viewer 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
Beta 版
|
可以查看 GuestPolicy 资源 |
|
PatchDeployment Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有对 PatchDeployment 的完整管理员权限 |
|
PatchDeployment Viewer 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
可以查看 PatchDeployment 资源 |
|
Patch Job Executor 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
有权执行修补作业。 |
|
Patch Job Viewer 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
获取并列出修补作业。 |
|
DNS Administrator 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
提供对所有 Cloud DNS 资源的读写权限。 |
|
DNS Peer 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有访问具有 DNS 对等互连地区的目标网络的权限 |
|
DNS Reader 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
提供对所有 Cloud DNS 资源的只读权限。 |
|
Service Account Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
可创建和管理服务帐号。 |
|
Create Service Accounts 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有创建服务帐号的权限。 |
|
Delete Service Accounts 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
拥有删除服务帐号的权限。 |
|
Service Account Key Admin 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
可创建和管理(及轮替)服务帐号密钥。 |
|
Service Account Token Creator 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
可以模拟服务帐号(创建 OAuth2 访问令牌、签署 Blob 或 JWT 等)。 |
|
Service Account User 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
可以服务帐号身份运行操作。 |
|
Workload Identity User 角色
名称 | 说明 | 权限 |
---|---|---|
roles/
|
从 GKE 工作负载模拟服务帐号 |
|