如需允许用户创建、删除、使用或共享您的自定义映像,您必须向其授予适当的 Identity and Access Management (IAM) 角色。本文档介绍了创建和管理自定义映像所需的 IAM 权限,以及如何将这些映像提供给用户。
如需了解有关授予 Compute Engine 资源访问权限的一般信息,请参阅管理对 Compute Engine 资源的访问权限。 如需了解 IAM,请参阅 IAM 文档。
准备工作
- 阅读 IAM 文档。
- 了解 Compute Engine IAM 角色,尤其是 Compute Image User 角色 (
roles/compute.imageUser
)。 -
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
针对项目的 Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
针对项目的 Compute Admin (
roles/compute.admin
) -
向用户或服务账号授予创建和共享自定义映像所需的权限:
-
针对项目的
resourcemanager.projects.getIamPolicy
权限 -
针对项目的
resourcemanager.projects.setIamPolicy
权限
-
针对项目的
-
向用户或服务账号授予删除自定义映像所需的权限:
-
针对项目的
resourcemanager.projects.getIamPolicy
权限 -
针对项目的
resourcemanager.projects.setIamPolicy
权限 -
针对映像的
compute.images.getIamPolicy
权限 -
针对映像的
compute.images.setIamPolicy
权限
-
针对项目的
-
撤消用户或服务账号对自定义映像的访问权限:
-
针对项目的
resourcemanager.projects.getIamPolicy
权限 -
针对项目的
resourcemanager.projects.setIamPolicy
权限
-
针对项目的
-
使用共享映像创建实例:
- 针对项目的
compute.instances.create
权限 - 使用自定义映像创建虚拟机:针对映像的
compute.images.useReadOnly
权限 - 使用快照创建虚拟机:针对快照的
compute.snapshots.useReadOnly
权限 - 使用实例模板创建虚拟机:针对实例模板的
compute.instanceTemplates.useReadOnly
权限 - 为虚拟机分配旧版网络:针对项目的
compute.networks.use
权限 - 为虚拟机指定静态 IP 地址:针对项目的
compute.addresses.use
权限 - 使用旧版网络时为虚拟机分配外部 IP 地址:针对项目的
compute.networks.useExternalIp
权限 - 为虚拟机指定子网:针对项目或所选子网的
compute.subnetworks.use
权限 - 在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的
compute.subnetworks.useExternalIp
权限 - 为虚拟机设置虚拟机实例元数据:针对项目的
compute.instances.setMetadata
权限 - 为虚拟机设置标记:针对虚拟机的
compute.instances.setTags
权限 - 为虚拟机设置标签:针对虚拟机的
compute.instances.setLabels
权限 - 为虚拟机设置要使用的服务账号:针对虚拟机的
compute.instances.setServiceAccount
权限 - 为虚拟机创建新磁盘:针对项目的
compute.disks.create
权限 - 以只读或读写模式挂接现有磁盘:针对磁盘的
compute.disks.use
权限 - 以只读模式挂接现有磁盘:针对磁盘的
compute.disks.useReadOnly
权限
- 针对项目的
compute.images.create
(用于创建新映像)compute.images.list
(用于列出项目中的映像)compute.disks.use
(如果映像是基于磁盘创建的)compute.disks.list
(如果用户需要列出项目中的所有磁盘)在 Google Cloud 控制台中,前往项目或组织的 IAM 页面。
如需添加新成员,请点击
授予访问权限。在新主账号字段中,输入您要向其授予访问权限的身份的电子邮件地址。
例如:
- Google 账号电子邮件地址:
test-user@gmail.com
- Google 群组:
admins@googlegroups.com
- 来自外部身份提供方的身份:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- 服务账号:
server@example.gserviceaccount.com
- Google Workspace 网域:
example.com
- Google 账号电子邮件地址:
在选择角色列表中,选择 Compute Engine > Compute Storage Admin,或者选择一个自定义角色(如果已创建)。
可选:如需进一步控制用户对 Google Cloud 资源的访问权限,请添加条件角色绑定。
保存更改。
ORGANIZATION_ID
或PROJECT_ID
:组织 ID 或项目 ID,例如my-organization-1
或my-project-1
。MEMBER
:您要向其授予相应角色的有效身份。例如:
- Google 账号电子邮件地址:
user:user@gmail.com
- Google 群组:
group:admins@googlegroups.com
- 来自外部身份提供方的身份:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- 服务账号:
serviceAccount:server@example.gserviceaccount.com
- Google Workspace 网域:
domain:example.com
- Google 账号电子邮件地址:
使用资源的
getIamPolicy
方法来读取现有政策。对于项目,请使用projects.getIamPolicy
方法。POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
将
PROJECT_ID
替换为项目 ID,例如my-project-1
。对于组织,请使用
organizations.getIamPolicy
方法。POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
将
ORGANIZATION_ID
替换为组织 ID,例如123456578920
。Compute Engine 会在响应中返回当前政策。
如需添加或移除成员及其关联的角色,请使用文本编辑器修改该政策。请按以下格式添加成员:
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
例如,如需向
group:admins@example.com
授予roles/compute.storageAdmin
角色,请将以下绑定添加到政策中:{ "members": [ "group:admins@example.com" ], "role":"roles/compute.storageAdmin" }
使用
setIamPolicy
方法写入更新后的政策。例如,要在项目级设置政策,请使用
project.setIamPolicy
方法。在请求正文中,提供上一步中更新的 IAM 政策。POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
将
PROJECT_ID
替换为项目 ID。- 删除特定映像
- 删除特定项目拥有的映像
- 删除组织内任何项目的映像
compute.images.delete
(用于删除映像)compute.images.list
(如果用户需要列出项目或组织中的映像)compute.images.get
(用于获取映像)在 Google Cloud 控制台中,前往映像页面。
选择您要授予其权限的映像。
如需展开权限列,请点击显示信息面板。
要添加一个或多个成员,请点击添加主账号。
在新主账号字段中,输入您要与之共享映像的身份的电子邮件地址。
例如:
- Google 账号电子邮件地址:
test-user@gmail.com
- Google 群组:
admins@googlegroups.com
- 来自外部身份提供方的身份:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- 服务账号:
server@example.gserviceaccount.com
- Google Workspace 网域:
example.com
- Google 账号电子邮件地址:
在角色列表,将指针悬停在 Compute Engine 上方,然后选择 Storage Admin,或者从自定义列表中选择一个自定义角色。
可选:如需进一步控制用户对 Google Cloud 资源的访问权限,请添加条件角色绑定。
保存更改。
转到项目或组织的 IAM 页面。
点击
授予访问权限。在新主账号字段中,输入您要向其授予访问权限的身份的电子邮件地址。例如:
- Google 账号电子邮件地址:
test-user@gmail.com
- Google 群组:
admins@googlegroups.com
- 来自外部身份提供方的身份:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- 服务账号:
server@example.gserviceaccount.com
- Google Workspace 网域:
example.com
- Google 账号电子邮件地址:
在角色列表,将指针悬停在 Compute Engine 上方,然后选择 Storage Admin,或者从自定义列表中选择一个自定义角色。
可选:如需进一步控制用户对 Google Cloud 资源的访问权限,请添加条件角色绑定。
保存更改。
ORGANIZATION_ID
、PROJECT_ID
或IMAGE_NAME
:12 位数字的组织 ID、项目 ID 或映像名称,例如123456578920
、my-project-1
或my-custom-image
。MEMBER
:您要向其授予相应角色的有效身份。例如:
- Google 账号电子邮件地址:
user:user@gmail.com
- Google 群组:
group:admins@googlegroups.com
- 来自外部身份提供方的身份:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- 服务账号:
serviceAccount:server@example.gserviceaccount.com
- Google Workspace 网域:
domain:example.com
- Google 账号电子邮件地址:
ROLE
:要分配给此身份的角色,例如roles/compute.storageAdmin
角色或roles/customImageDeletionRole
等自定义角色使用资源各自的
getIamPolicy
方法来读取现有政策。对于项目,请使用projects.getIamPolicy
方法:POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
将
PROJECT_ID
替换为项目 ID。对于组织,请使用
organizations.getIamPolicy
方法:POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
将
ORGANIZATION_ID
替换为 12 位数字的组织 ID。对于特定映像,请使用
images.getIamPolicy
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
请替换以下内容:
PROJECT_ID
:项目 IDIMAGE_NAME
:映像的名称
Compute Engine 会在响应中返回当前政策。
如需添加或移除成员及其关联的角色,您可以使用文本编辑器修改该政策。请按以下格式添加成员:
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
例如,如需向
user:test-email@example.com
授予roles/compute.storageAdmin
角色,请将以下绑定添加到政策中:{ "members": [ "user:test-email@example.com" ], "role":"roles/compute.storageAdmin" }
使用
setIamPolicy
方法写入更新后的政策。例如,如需在项目级设置政策,请使用
project.setIamPolicy
方法。在请求正文中,提供上一步中更新的 IAM 政策。POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
将
PROJECT_ID
替换为项目 ID。- Compute Image User (
roles/compute.imageUser
):拥有在请求中列出、读取和使用映像的权限,但不具备映像的其他权限 - Compute Storage Admin (
roles/compute.storageAdmin
):拥有创建、修改和删除磁盘、映像及快照的权限 在 Google Cloud 控制台中,前往映像页面。
选择要与其他用户共享的映像。
如需展开权限列,请点击显示信息面板。
要添加一个或多个成员,请点击添加主账号。
在新主账号字段中,输入您要与之共享映像的身份的电子邮件地址。
例如:
- Google 账号电子邮件地址:
test-user@gmail.com
- Google 群组:
admins@googlegroups.com
- 来自外部身份提供方的身份:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- 服务账号:
server@example.gserviceaccount.com
- Google Workspace 网域:
example.com
- Google 账号电子邮件地址:
在角色列表中,将指针悬停在 Compute Engine 上,然后选择 Image User 或 Storage Admin,或者选择一个自定义角色。
可选:如需进一步控制用户对 Google Cloud资源的访问权限,请添加条件角色绑定。
保存更改。
在 Google Cloud 控制台中,前往 IAM 页面。
点击
授予访问权限。在新主账号字段中,输入您要与之共享映像的身份的电子邮件地址。例如:
- Google 账号电子邮件地址:
test-user@gmail.com
- Google 群组:
admins@googlegroups.com
- 来自外部身份提供方的身份:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
- 服务账号:
server@example.gserviceaccount.com
- Google Workspace 网域:
example.com
- Google 账号电子邮件地址:
在角色列表中,将指针悬停在项目上,然后选择 Viewer。
可选:如需进一步控制用户对 Google Cloud资源的访问权限,请添加条件角色绑定。
保存更改。
IMAGE_NAME
:映像的名称,例如custom-centos-8
MEMBER
:您要向其授予相应角色的有效身份。例如:
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
ROLE
:要向其分配此身份的角色,例如roles/compute.imageUser
、roles/compute.storageAdmin
或自定义角色使用资源的
getIamPolicy
方法来读取现有政策。例如,要获取特定映像的政策,请使用images.getIamPolicy
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
请替换以下内容:
PROJECT_ID
:此映像所属项目的项目 ID。IMAGE_NAME
:映像的名称
Compute Engine 会在响应中返回当前政策。
如需添加或移除成员及其关联的角色,请使用文本编辑器修改该政策。请按以下格式添加成员:
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
例如,如需向
test-email@example.com
授予roles/compute.imageUser
,请将以下绑定添加到政策:{ "members": [ "user:test-email@example.com" ], "role":"roles/compute.imageUser" }
使用
setIamPolicy
方法写入更新后的政策。例如,如需针对特定映像设置政策,请使用project.setIamPolicy
方法。在请求正文中,提供上一步中更新的 IAM 政策。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
请替换以下内容:
PROJECT_ID
:此映像所属项目的项目 ID。IMAGE_NAME
:映像的名称
在 Google Cloud 控制台中,前往映像页面。
选择要与其他用户共享的映像。
如需展开权限列,请点击显示信息面板。
要添加一个或多个成员,请点击添加主账号。
在新主账号字段中,输入您要与之共享映像的群组的电子邮件地址。例如
admins@example.com
。在角色列表中,将指针悬停在 Compute Engine 上,然后选择 Compute Image User。
可选:如需进一步控制用户对 Google Cloud资源的访问权限,请添加条件角色绑定。
保存更改。
IMAGE_NAME
:映像的名称,例如custom-centos-8
MEMBER
:您要向其授予相应角色的有效身份,例如group:admins@example.com
使用资源的
getIamPolicy
方法来读取现有政策。例如,要获取特定映像的政策,请使用images.getIamPolicy
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
请替换以下内容:
PROJECT_ID
:此映像所属项目的项目 ID。IMAGE_NAME
:映像的名称
Compute Engine 会在响应中返回当前政策。
如需添加或移除成员及其关联的角色,您可以使用文本编辑器修改该政策。请按以下格式添加成员:
user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
例如,如需向
test-user@example.com
授予roles/compute.imageUser
,请将以下绑定添加到政策:{ "members": [ "user:test-user@example.com" ], "role":"roles/compute.imageUser" }
使用
setIamPolicy
方法写入更新后的政策。例如,如需对特定映像设置政策,请使用images.setIamPolicy
方法。在请求正文中,提供上一步中更新的 IAM 政策。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
请替换以下内容:
PROJECT_ID
:此映像所属项目的项目 ID。IMAGE_NAME
:映像的名称
或者,如需允许用户在其
images.list
请求中查看这些共享映像,请使用projects.setIamPolicy
方法向用户授予映像项目的 Viewer IAM 角色 (roles/viewer
)。如果您不需要用户能够查看共享映像列表,则可以跳过此步骤。POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
使用
getIamPolicy
方法读取现有政策。例如,要获取特定映像的政策,请使用images.getIamPolicy
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
请替换以下内容:
PROJECT_ID
:此映像所属项目的项目 ID。IMAGE_NAME
:映像的名称
Compute Engine 会在响应中返回当前政策。
如需添加或移除成员及其关联的角色,请使用文本编辑器修改该政策:
{ "members": [ "allAuthenticatedUsers" ], "role":"roles/compute.imageUser" }
使用
setIamPolicy
方法写入更新后的政策。例如,如需对特定映像设置政策,请使用images.setIamPolicy
方法。在请求正文中,提供上一步中更新的 IAM 政策。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
请替换以下内容:
PROJECT_ID
:此映像所属项目的项目 ID。IMAGE_NAME
:映像的名称
- 项目 A 希望使用项目 B 拥有的映像创建 MIG。
- 项目 B 向项目 A 的服务账号授予 Compute Image User 角色。
- 现在,项目 A 可以使用项目 B 中的映像来创建 MIG。
在 Google Cloud 控制台中,前往您要向其服务账号授予访问权限的项目对应的 IAM 页面。
如果出现提示,请从列表中选择您的项目。
查找电子邮件地址采用以下格式的 Google API 服务代理:
PROJECT_NUMBER@cloudservices.gserviceaccount.com
在 Google Cloud 控制台中,前往映像项目的 IAM 页面。
如需添加新成员,请点击
授予访问权限。在新主账号字段中,添加服务账号电子邮件地址。
在角色列表中,将指针悬停在计算上,然后选择 Compute Image User。
可选:如需进一步控制用户对 Google Cloud资源的访问权限,请添加条件角色绑定。
点击保存。
切换回该服务账号所属的项目。
PROJECT_ID
:要共享的映像所属项目的 IDSERVICE_ACCOUNT_EMAIL
:服务账号的电子邮件地址使用
projects.getIamPolicy
方法获取映像项目的 IAM 政策:POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
将
PROJECT_ID
替换为映像项目的项目 ID。如需向服务账号授予
roles/compute.imageUser
角色,请使用文本编辑器修改该政策:{ "bindings": [ { "role": "roles/compute.imageUser", "members": [ "serviceAccount:SERVICE_ACCOUNT_EMAIL" ] } ] }
将
SERVICE_ACCOUNT_EMAIL
替换为服务账号电子邮件地址。使用
projects.setIamPolicy
写入更新后的政策。在请求正文中,提供上一步中更新的 IAM 政策。POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
将
PROJECT_ID
替换为映像项目的产品 ID。在 Google Cloud 控制台中,前往映像项目的映像页面。
选中您要共享的映像旁边的复选框。
如需展开权限列,请点击显示信息面板。
在权限面板中,点击添加主账号。
在新主账号字段中,输入您要与之共享映像的服务账号电子邮件地址。例如
test123@example.domain.com
。在角色列表中,选择计算,然后选择 Compute Image User。
可选:如需进一步控制用户对 Google Cloud 资源的访问权限,请添加条件角色绑定。
点击保存。
切换回该服务账号所属的项目。
IMAGE_NAME
:您要共享的映像名称SERVICE_ACCOUNT_EMAIL
:服务账号的电子邮件地址使用
images.getIamPolicy
方法获取映像的 IAM 政策:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
请替换以下内容:
PROJECT_ID
:映像项目的项目 IDIMAGE_NAME
:您要共享的映像的名称
如需向服务账号授予
roles/compute.imageUser
角色,请使用文本编辑器修改该政策:{ "bindings": [ { "role": "roles/compute.imageUser", "members": [ "serviceAccount:SERVICE_ACCOUNT_EMAIL" ] } ] }
将
SERVICE_ACCOUNT_EMAIL
替换为服务账号电子邮件地址。使用
images.setIamPolicy
方法写入更新后的政策。在请求正文中,提供上一步中更新的 IAM 政策。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
请替换以下内容:
PROJECT_ID
:映像项目的项目 IDIMAGE_NAME
:您要共享的映像的名称
使用
gcloud organization list
命令查找组织的 ID:gcloud organizations list
使用
gcloud resource-manager org-policies describe
命令获取组织的现有政策设置:gcloud resource-manager org-policies describe \ compute.storageResourceUseRestrictions \ --organization ORGANIZATION_ID > org-policy.yaml
将 ORGANIZATION_ID 替换为 12 位数字的组织 ID。
在文本编辑器中打开
org-policy.yaml
文件并修改compute.storageResourceUseRestrictions
限制条件。添加所需的限制或移除不再需要的限制。修改完此文件后,请保存更改。例如,您可以在政策文件中设置以下限制条目:constraint: compute.storageResourceUseRestrictions listPolicy: allowedValues: - under:organization/organization-id
使用
gcloud resource-manager org-policies set-policy
命令将org-policy.yaml
文件应用于您的组织:gcloud resource-manager org-policies set-policy \ --organization=ORGANIZATION_ID org-policy.yaml
将 ORGANIZATION_ID 替换为 12 位数字的组织 ID。
在 Google Cloud 控制台中,前往映像项目的映像页面。
选中要更新的映像旁边的复选框。
如需展开权限列,请点击显示信息面板。
展开您要移除用户的角色。
如需从该角色中移除用户,请点击
删除。IMAGE_NAME
:映像的名称,例如my_image
MEMBER
:您要移除的身份必须采用
user|group|serviceAccount:email
或domain:domain
格式。例如:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
ROLE
:您要从中移除身份的角色使用
images.getIamPolicy
方法读取现有政策:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
请替换以下内容:
PROJECT_ID
:此映像所属项目的项目 IDIMAGE_NAME
:映像的名称
Compute Engine 会在响应中返回当前政策。
如需移除成员及其关联的角色,请使用文本编辑器修改该政策。
使用
images.setIamPolicy
方法写入更新后的政策。在请求正文中,提供上一步中更新的 IAM 政策。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/global/images/IMAGE_NAME:setIamPolicy
请替换以下内容:
PROJECT_ID
:此映像所属项目的项目 IDIMAGE_NAME
:映像的名称
- 了解 IAM。
- 查看 Compute Engine IAM 角色列表。
- 了解映像。
- 了解如何使用共享映像创建实例。
- 了解如何创建独立的永久性启动磁盘。
- 了解如何在 Deployment Manager 部署中使用此角色。
- 通过授予对特定 Compute Engine 资源而不是整个项目的访问权限来应用最小权限原则。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得管理对自定义映像访问权限所需的权限,请让您的管理员为您授予以下 IAM 角色:
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含管理对自定义映像访问权限所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
您需要具备以下权限才能管理对自定义映像的访问权限:
限制
您无法在映像上向特殊成员类型
allUsers
授予角色。授予创建自定义映像的权限
您可以为用户授予在组织或项目中创建自定义映像的权限。
Compute Engine 提供了预定义的 Compute Storage Admin 角色 (
roles/compute.storageAdmin
);您可以将该角色分配给用户,使其能够创建、删除和管理存储相关资源(包括映像、磁盘和快照)。如果您需要一个仅允许创建映像的角色,则必须创建自定义角色。在您的自定义角色中,添加以下权限:如果您允许用户在组织级层创建自定义映像,则用户可以为组织内的任何项目创建自定义映像。
控制台
gcloud
如需在组织级层授予
roles/compute.storageAdmin
角色,请使用gcloud organizations add-iam-policy-binding
命令:gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member='MEMBER' \ --role='roles/compute.storageAdmin'
如需在项目级授予
roles/compute.storageAdmin
角色,请使用gcloud projects add-iam-policy-binding
命令:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/compute.storageAdmin'
请替换以下内容:
REST
授予删除自定义映像的权限
您可以根据自己的需求授予用户执行以下操作的权限:
在项目级授予权限后,用户可以删除该项目拥有的所有映像。向用户授予组织级层权限后,用户可以删除该组织拥有的所有映像,无论映像属于哪个项目。
Compute Engine 提供了预定义的 Compute Storage Admin 角色 (
roles/compute.storageAdmin
);您可以将该角色分配给用户,使其能够创建、删除和管理存储相关资源(包括映像、磁盘和快照)。如果您需要一个仅允许删除映像的角色,则必须创建自定义角色。在您的自定义角色中,添加以下权限:控制台
如需授予删除特定映像的权限,请执行以下操作:
如需授予删除项目或组织的映像的权限,请执行以下操作:
gcloud
如需在组织级层授予删除映像的权限,请使用
gcloud organizations add-iam-policy-binding
命令:gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member='MEMBER' \ --role='ROLE'
如需在项目级授予删除映像的权限,请使用
gcloud projects add-iam-policy-binding
命令:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='ROLE'
如需授予删除特定映像的权限,请使用
gcloud compute images add-iam-policy-binding
命令:gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='MEMBER' \ --role='ROLE'
请替换以下内容:
REST
授予在组织内共享自定义映像的权限
如果您的项目属于某个组织,那么该组织可能还有若干其他项目,并且这些项目可能对其他项目具有不同级别的访问权限。创建自定义映像时,您可以与属于组织中其他项目的其他用户共享这些映像。
Compute Engine 提供了以下可用于映像管理的预定义 IAM 角色:
或者,您也可以自行创建自定义 IAM 角色。
我们建议的最佳做法是将所有自定义映像保存在一个专用于托管这些映像的项目中。这样可以改善对这些映像的管理,并可让您允许特定团队仅访问其所需的映像。您还可以向团队授予对整个映像项目的访问权限,但由于允许团队访问整个映像项目违反了最小权限原则,因此我们不建议您这样做。
以下示例展示了如何添加群组以使该群组的用户可以访问映像。
控制台
如需允许用户从 Google Cloud 控制台启动共享的自定义映像,请向用户授予映像项目的 Viewer IAM 角色 (
roles/viewer
)。授予此角色有助于确保共享映像显示在映像选择列表中。gcloud
如需更新特定映像的 IAM 政策,请使用
gcloud compute images add-iam-policy-binding
命令:gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='MEMBER' \ --role='ROLE'
请替换以下内容:
或者,如需允许用户在其
images.list
请求中查看这些共享映像,请使用gcloud projects add-iam-policy-binding
命令向用户授予映像项目的 Viewer IAM 角色 (roles/viewer
)。如果您不需要用户能够查看共享映像列表,则可以跳过此步骤。gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
REST
或者,如需允许用户在其
images.list
请求中查看这些共享映像,请使用projects.setIamPolicy
方法向用户授予映像项目的 Viewer IAM 角色 (roles/viewer
)。如果您不需要用户能够查看共享映像列表,则可以跳过此步骤。POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
授予在组织之间共享自定义映像的权限
如果您要与贵组织外部的合作伙伴、用户或承包商共享映像,创建自定义映像目录会很有帮助。如需与组织外部的用户共享您的映像,请将他们作为映像用户添加到您的项目中:
控制台
如需允许用户从 Google Cloud 控制台启动共享的自定义映像,请向用户授予映像项目的 Viewer IAM 角色 (
roles/viewer
)。授予此角色有助于确保共享映像显示在映像选择列表中。gcloud
如需向用户授予
roles/compute.imageUser
角色,请使用gcloud compute images add-iam-policy-binding
命令:gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='MEMBER' \ --role='roles/compute.imageUser'
请替换以下内容:
或者,如需允许用户在其
images.list
请求中查看这些共享映像,请使用gcloud projects add-iam-policy-binding
命令向用户授予映像项目的 Viewer IAM 角色 (roles/viewer
)。如果您不需要用户能够查看共享映像列表,则可以跳过此步骤。gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
REST
授予公开共享自定义映像的权限
您可以与所有经过身份验证的 Compute Engine 用户共享您的自定义映像,无论这些用户是否属于您的组织或项目。
您只能与所有经过身份验证的用户共享资源(例如映像),而无法与所有经过身份验证的用户共享项目或组织。这种限制和资源层次结构有助于防止组织无意中与所有经过身份验证的 Compute Engine 用户共享其整个项目。
以下示例展示了如何向所有经过身份验证的 Compute Engine 用户授予自定义映像的 Compute Image User 角色 (
roles/compute.imageUser
)。gcloud
如需公开映像,请使用
gcloud compute images add-iam-policy-binding
命令:gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='allAuthenticatedUsers' \ --role='roles/compute.imageUser'
将
IMAGE_NAME
替换为资源名称,例如my_image
。REST
向托管式实例组授予映像访问权限
通过 Compute Engine,您可以创建托管或非托管实例组。如果创建托管式实例组,Compute Engine 将使用 Google API 服务代理来调用 Compute Engine API 并执行与该实例组相关的操作,例如重新创建运行状况不佳的实例和更新实例。
如果您想使用其他项目中的映像创建 MIG,请向属于创建该 MIG 的项目的 API 服务账号授予 Compute Image User 角色 (
roles/compute.imageUser
)。例如:授予 Compute Image User 角色后,您可以在为托管组创建实例模板时,使用控制台或映像网址访问其他项目中的映像。
输入服务账号的电子邮件地址
检索服务账号的电子邮件地址后,您可以转到以下任一部分:
向 MIG 授予对项目中所有映像的访问权限
现在您已经获得服务账号的电子邮件地址,接下来可以将该地址添加到其他项目中,并向其授予 Compute Image User 角色 (
roles/compute.imageUser
)。控制台
gcloud
使用
gcloud projects add-iam-policy-binding
命令从映像项目添加服务账号:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' --role='roles/compute.imageUser'
请替换以下内容:
REST
向 MIG 授予对项目中特定映像的访问权限
现在您已经获得服务账号的电子邮件地址,接下来可以将该地址添加到其他项目中,并向其授予特定映像的 Compute Image User 角色 (
roles/compute.imageUser
)。控制台
gcloud
如需向服务账号授予对特定映像的访问权限,请使用
gcloud compute images add-iam-policy-binding
命令:gcloud compute images add-iam-policy-binding IMAGE_NAME \ --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \ --role='roles/compute.imageUser'
请替换以下内容:
REST
控制共享映像和快照的使用
在与其他用户共享您的映像后,您可以控制这些用户在您的组织内部使用这些资源的位置。设置
constraints/compute.storageResourceUseRestrictions
限制可以定义允许用户在其中使用您的存储资源的项目。您必须具有修改组织政策的权限才能设置这些限制。例如,
resourcemanager.organizationAdmin
角色拥有设置这些限制的权限。在配置完组织政策中的限制条件后,请进行测试以确保这些条件会创建您所需要的限制。
使用其他项目中的映像
如果某人向您授予了对其他项目中一个或多个映像的访问权限,您可以通过在请求中指定映像项目来访问该项目中的这些映像。
例如,如需使用另一个项目中的共享映像创建实例,请按照通过共享映像创建实例中列出的步骤操作。
您还可以使用其他项目中的映像创建启动磁盘卷。如需了解如何使用映像创建启动磁盘,请参阅创建独立的永久性启动磁盘。
撤消对共享映像的访问权限
如果某用户不再需要访问您的 Compute Engine 资源,您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST 撤消其访问权限。
控制台
gcloud
如需从映像角色中移除用户,请使用带有
--member
和--role
标志的gcloud compute images remove-iam-policy-binding
命令:gcloud compute images remove-iam-policy-binding IMAGE_NAME \ --member='MEMBER' \ --role='ROLE'
请替换以下内容:
如果您要撤消对目前处于 Beta 版阶段的资源的访问权限,请改用
gcloud beta compute
命令。REST
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-06-25。
-