管理对自定义映像的访问权限

如需允许用户创建、删除、使用或共享您的自定义映像,您必须向其授予适当的 Cloud IAM 角色。借助 IAM,您可以实现以下目的:

如需了解有关授予 Compute Engine 资源访问权限的一般信息,请参阅管理对 Compute Engine 资源的访问权限。 如需了解 IAM,请参阅 IAM 文档

准备工作

限制

您无法为用户授予映像的 allUsers 的角色。

授予创建自定义映像的权限

您可以为用户授予在组织或项目中创建自定义映像的权限。

Compute Engine 提供了预定义 Storage Admin 角色;您可以将该角色分配给用户,使其能够创建、删除和管理存储相关资源(包括映像、磁盘和快照)。如果您需要一个仅允许创建映像的角色,则必须创建自定义角色。 在自定义角色中,根据需要添加以下权限:

  • compute.images.create(用于创建新映像)
  • compute.images.list(用于列出项目中的映像)
  • compute.disks.use(如果要基于磁盘创建映像)
  • compute.disks.list(如果您想授权用户查看项目中的磁盘列表)

如果您授权某用户在组织中创建自定义映像,则该用户可以为组织内的任何项目创建自定义映像。

控制台

  1. 在 Google Cloud Console 中,转到项目或组织对应的 IAM 和管理页面。

    转到“IAM 和管理”页面

  2. 点击添加按钮添加新成员。

  3. 新成员字段中,输入您要向其授予访问权限的身份的电子邮件地址。

  4. 选择角色列表中,选择 Compute Engine > Compute Storage Admin,或者选择一个自定义角色(如果已创建)。

  5. 保存更改。

gcloud

如需在组织级层授予 roles/compute.storageAdmin 角色,请运行以下命令:

gcloud organizations add-iam-policy-binding organization-id \
    --member='member' \
    --role='roles/compute.storageAdmin'

如需在项目级层授予 roles/compute.storageAdmin 角色,请运行以下命令:

gcloud projects add-iam-policy-binding project-id \
    --member='member' \
    --role='roles/compute.storageAdmin'

替换以下内容:

  • organization-idproject-id:组织 ID 或项目 ID,例如 my-organization-1my-project-1
  • member:您要向其授予相应角色的有效身份。必须采用 user|group|serviceAccount:emaildomain:domain 格式。例如:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

API

如需直接通过 API 修改 IAM 政策,请执行以下操作:

  1. 使用 getIamPolicy 方法读取现有政策。对于项目,请使用以下网址(将 project-id 替换为项目 ID,例如 my-project-1)。

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

    对于组织,请使用以下网址(将 organization-id 替换为 12 位数字的组织 ID,例如 123456578920)。

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/organization-id:getIamPolicy

    Compute Engine 会在响应中返回当前政策。

  2. 使用文本编辑器修改该政策,以添加或移除成员及其关联的角色。例如,如需向 1email@example.com 授予 roles/compute.storageAdmin 角色,请将以下新绑定添加到政策中:

    {
      "members": [
        "group:admins@example.com"
      ],
      "role":"roles/compute.storageAdmin"
    }
    
  3. 使用 setIamPolicy() 写入更新后的政策:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

    project-id 替换为项目 ID。 在请求正文中,提供上一步中写入的更新后 IAM 政策。

授予删除自定义映像的权限

您可以根据自己的需求向用户授予以下权限:

  • 删除特定映像
  • 删除特定项目拥有的映像
  • 删除组织内任何项目的映像

向用户授予项目级层权限后,用户可以删除该项目拥有的所有映像。向用户授予组织级层权限后,用户可以删除该组织拥有的所有映像,无论映像属于哪个项目。

Compute Engine 提供了预定义 Storage Admin 角色;您可以将该角色分配给用户,使其能够创建、删除和管理存储相关资源(包括映像、磁盘和快照)。如果您需要一个仅允许删除映像的角色,则必须创建自定义角色。 在自定义角色中,根据需要添加以下权限:

  • compute.images.delete(用于删除映像)
  • compute.images.list(用于在必要时列出项目或组织中的映像)
  • compute.images.get(用于获取映像)

控制台

如需授予删除特定映像的权限,请执行以下操作:

  1. 在 Google Cloud Console 中,转到映像页面。

    转到“映像”页面

  2. 选择您要授予其权限的映像。

  3. 在右侧的权限面板中,点击添加成员

  4. 输入您要与之共享该映像的身份的电子邮件地址。 必须采用 user|group|serviceAccount:emaildomain:domain 格式。 例如:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  5. 角色列表中,指向 Compute Engine 并选择 Storage Admin,或者从自定义列表中选择一个自定义角色。

  6. 保存更改。

如需授予删除项目或组织所拥有映像的权限,请执行以下操作:

  1. 转到项目或组织对应的 IAM 和管理页面。

    转到“IAM 和管理”页面

  2. 点击页面顶部的添加按钮。

  3. 新成员字段中,输入您要向其授予访问权限的身份的电子邮件地址。必须采用 user|group|serviceAccount:emaildomain:domain 格式。例如:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  4. 角色列表中,指向 Compute Engine 并选择 Storage Admin,或者从自定义列表中选择一个自定义角色。

  5. 保存更改。

gcloud

如需在组织级层授予用户删除映像的权限,请运行以下命令:

gcloud organizations add-iam-policy-binding organization-id \
    --member='member' \
    --role='role'

如需在项目级层授予删除映像的权限,请运行以下命令:

gcloud projects add-iam-policy-binding project-id \
    --member='member' \
    --role='role'

如需授予删除特定映像的权限,请运行以下命令:

gcloud images add-iam-policy-binding image-name \
    --member='member' \
    --role='role'

替换以下内容:

  • organization-idproject-idimage-name:12 位数字的组织 ID、项目 ID 或映像名称,例如 123456578920my-project-1my-custom-image
  • member:您要向其授予相应角色的有效身份。必须采用 user|group|serviceAccount:emaildomain:domain 格式。例如:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role:要分配给此身份的角色,例如 roles/compute.storageAdmin 或自定义角色(如 roles/customImageDeletionRole)。

API

如需通过 API 授予删除映像的权限,请执行以下操作:

  1. 使用资源各自的 getIamPolicy 方法来读取现有政策。对于项目,请使用以下网址:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

    project-id 替换为项目 ID。

    对于组织,请使用以下网址:

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/organization-id:getIamPolicy

    organization-id 替换为 12 位数字的组织 ID。

    对于特定映像,请使用以下网址:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    project-id 替换为项目 ID,并将 image-name 替换为映像名称。

    Compute Engine 会在响应中返回当前政策。

  2. 使用文本编辑器修改该政策,以添加或移除成员及其关联的角色。例如,如需向 email@example.com 授予 roles/compute.storageAdmin 角色,请将以下新绑定添加到政策中:

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.storageAdmin"
    }
    
  3. 使用 setIamPolicy() 写入更新后的政策。例如:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

    project-id 替换为项目 ID。 在请求正文中,提供上一步中写入的更新后 IAM 政策。

在组织内部共享自定义映像

如果您的项目属于某个组织,那么该组织可能还有若干其他项目,并且这些项目可能对其他项目具有不同级别的访问权限。创建自定义映像时,您可以与属于组织中其他项目的其他用户共享这些映像。

Compute Engine 预定义了以下可用于管理映像的特选 IAM 角色:

  • roles/compute.imageUser:拥有在请求中列出、读取和使用映像的权限,但不具备映像的其他权限。
  • roles/compute.storageAdmin:拥有创建、修改和删除磁盘、映像及快照的权限。

或者,您也可以自行创建自定义 IAM 角色

Google 建议您最好将所有自定义映像保存在一个专用于托管这些映像的项目中。 这样可以改善对这些映像的管理,并可让您仅允许特定团队访问其所需的映像。您还可以向团队授予对整个映像项目的访问权限,但由于允许团队访问整个映像项目违反了最小权限原则,因此我们不建议您这样做。

以下示例展示了如何添加群组以使该群组的用户可以访问映像。

控制台

  1. 在 Google Cloud Console 中,转到映像页面。

    转到“映像”页面

  2. 选择要与其他用户共享的映像。

  3. 在右侧的权限面板中,点击添加成员

  4. 输入您要与之共享该映像的身份的电子邮件地址。 必须采用 user|group|serviceAccount:emaildomain:domain 格式。 例如:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  5. 角色列表中,指向 Compute Engine 并选择 Image UserStorage Admin,或者选择一个自定义角色。

  6. 保存更改。

如需允许用户从 Cloud Console 启动共享的自定义映像,您还必须将用户作为项目查看者添加到映像项目中。这样可确保这些共享映像显示在映像选择列表中。

  1. 在 Google Cloud Console 中,转到 IAM 和管理页面。

    转到“IAM 和管理”页面

  2. 点击页面顶部的添加按钮。

  3. 新成员字段中,输入您要与之共享映像的身份的电子邮件地址。

  4. 角色列表中,指向项目,然后选择 Viewer

  5. 保存更改。

gcloud

使用 gcloud 命令行工具更新特定映像的 IAM 政策。

gcloud compute images add-iam-policy-binding image-name \
    --member='member' \
    --role='role'

替换以下内容:

  • image-name:映像的名称,例如 custom-centos-8
  • member:您要向其授予相应角色的有效身份。必须采用 user|group|serviceAccount:emaildomain:domain 格式。例如:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role 是要分配给此身份的角色,例如 roles/compute.imageUserroles/compute.storageAdmin 或自定义角色。

或者,如需允许用户在其 images.list 请求中查看这些共享映像,请将用户作为项目查看者添加到映像项目中。如果您不需要用户能够查看共享映像列表,则可以跳过此步骤。

gcloud compute projects add-iam-policy-binding project-id \
    --member='member' \
    --role='roles/viewer'

API

如需直接通过 API 修改 IAM 政策,请执行以下操作:

  1. 使用资源各自的 getIamPolicy 方法来读取现有政策。

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    替换以下内容:

    • project-id:此映像所属项目的 ID。
    • image-name:映像的名称。

    Compute Engine 会在响应中返回当前政策。

  2. 使用文本编辑器修改该政策,以添加或移除用户及其关联的角色。按照 user|group|serviceAccount:emaildomain:domain 格式添加用户,例如 user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com。例如,如需向 email@example.com 授予 roles/compute.imageUser 角色,请添加以下内容:

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.imageUser"
    }
    
  3. 使用 setIamPolicy() 写入更新后的政策:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    替换以下内容:

    • project-id:此映像所属项目的 ID。
    • image-name:映像的名称。

    在请求正文中,提供上一步中写入的更新后 IAM 政策。

或者,如需允许用户在其 images.list 请求中查看这些共享映像,请将用户作为项目查看者添加到映像项目中。如果您不需要用户能够查看共享映像列表,则可以跳过此步骤。

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

在组织之间共享自定义映像

如果您要与贵组织外部的合作伙伴、用户或承包商共享映像,创建自定义映像目录会很有帮助。您可以按照以下说明将组织外部的用户作为映像用户添加到您的项目中,这样便可与之共享您的映像。

控制台

  1. 在 Google Cloud Console 中,转到映像页面。

    转到“映像”页面

  2. 选择要与其他用户共享的映像。

  3. 在右侧的权限面板中,点击添加成员

  4. 输入您要与之共享该映像的群组的电子邮件地址, 例如 group:admins@example.com

  5. 角色列表中,指向 Compute Engine,然后选择 Image User

  6. 保存更改。

如需允许用户从 Cloud Console 启动共享的自定义映像,您还必须将用户作为项目查看者添加到映像项目中。这样可确保这些共享映像显示在映像选择列表中。

  1. 在 Google Cloud Console 中,转到 IAM 和管理页面。

    转到“IAM 和管理”页面

  2. 点击页面顶部的添加按钮。

  3. 新成员字段中,输入您要与之共享映像的身份的电子邮件地址。

  4. 角色列表中,指向项目,然后选择 Viewer

  5. 保存更改。

gcloud

使用 gcloud 命令行工具:

gcloud compute images add-iam-policy-binding image-name \
    --member='member' \
    --role='roles/compute.imageUser'

替换以下内容:

  • image-name:映像的名称,例如 custom-centos-8
  • member:您要向其授予相应角色的有效身份,例如 group:admins@example.com

或者,如需允许用户在其 images.list 请求中查看这些共享映像,请将用户作为项目查看者添加到映像项目中。如果您不需要用户能够查看共享映像列表,则可以跳过此步骤。

gcloud compute projects add-iam-policy-binding project-id \
    --member='member' \
    --role='roles/viewer'

API

如需直接通过 API 修改映像的 IAM 政策,请执行以下操作:

  1. 使用资源各自的 getIamPolicy 方法来读取现有政策。

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    替换以下内容:

    • project-id:此映像所属项目的 ID。
    • image-name:映像的名称。

    Compute Engine 会在响应中返回当前政策。

  2. 使用文本编辑器修改该政策,以添加或移除用户及其关联的角色。按照 user|group|serviceAccount:emaildomain:domain 格式添加用户,例如 user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com。例如,如需向 email@example.com 授予 roles/compute.imageUser 角色,请添加以下内容:

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.imageUser"
    }
    
  3. 使用 setIamPolicy() 写入更新后的政策:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    替换以下内容:

    • project-id:此映像所属项目的 ID。
    • image-name:映像的名称。

    在请求正文中,提供上一步中写入的更新后 IAM 政策。

    或者,如需允许用户在其 images.list 请求中查看这些共享映像,请将用户作为项目查看者添加到映像项目中。如果您不需要用户能够查看共享映像列表,则可以跳过此步骤。

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

公开共享自定义映像

您可以与所有经过身份验证的 Compute Engine 用户共享您的自定义映像,无论这些用户是否属于您的组织或项目。

您只能与所有经过身份验证的用户共享资源(例如映像),而无法与所有经过身份验证的用户共享项目或组织。这种限制和资源层次结构有助于防止组织无意中与所有经过身份验证的 Compute Engine 用户共享其整个项目。

以下示例展示了如何向所有经过身份验证的 Compute Engine 用户授予自定义映像的 roles/compute.imageUser 角色。

gcloud

将以下命令中的 image-name 替换为资源名称,例如 my_image

gcloud compute images add-iam-policy-binding image-name \
    --member='allAuthenticatedUsers' \
    --role='roles/compute.imageUser'

API

如需直接通过 API 修改 IAM 政策,请执行以下操作:

  1. 使用 getIamPolicy 方法读取现有政策。例如:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    替换以下内容:

    • project-id:此映像所属项目的 ID。
    • image-name:映像的名称。

    Compute Engine 会在响应中返回当前政策。

  2. 使用文本编辑器修改该政策,以添加或移除成员及其关联的角色。

    {
      "members": [
        "allAuthenticatedUsers"
      ],
      "role":"roles/compute.imageUser"
    }
    
  3. 使用 setIamPolicy() 写入更新后的政策:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    替换以下内容:

    • project-id:此映像所属项目的 ID。
    • image-name:映像的名称。

    在请求正文中,提供上一步中写入的更新后 IAM 政策。

向托管实例组授予对映像的访问权限

通过 Compute Engine,您可以创建托管非托管实例组。如果创建托管实例组,Compute Engine 将使用 Google API 服务帐号来调用 Compute Engine API 并执行与该实例组相关的操作,例如重新创建运行状况不佳的实例和更新实例。

如果您想要使用其他项目中的映像创建托管实例组,请向属于将用来创建托管实例组的项目的 API 服务帐号授予 roles/compute.imageUser 角色。例如:

  1. 项目 A 希望使用项目 B 拥有的映像创建托管实例组。
  2. 项目 B 向项目 A 的服务帐号授予 roles/compute.imageUser 角色。
  3. 现在,项目 A 可以使用项目 B 中的映像来创建托管实例组。

授予 roles/compute.imageUser 角色后,您可以在为托管实例组创建实例模板时,使用控制台或映像网址访问其他项目中的映像。

获取服务帐号的电子邮件地址

请按照以下步骤获取服务帐号的电子邮件地址:

  1. 在 Cloud Console 中,转到您要向其服务帐号授予访问权限的项目对应的 IAM 页面。

    转到 IAM 页面

  2. 如果出现提示,请从列表中选择您的项目。
  3. 查找 Google API 服务帐号,其电子邮件地址格式如下:

    project-number@cloudservices.gserviceaccount.com
    
  4. 记下上述电子邮件地址。

检索服务帐号的电子邮件地址后,请访问以下某个链接:

向托管实例组授予对项目中所有映像的访问权限

现在您已经获得服务帐号的电子邮件地址,接下来就可以将该地址添加到其他项目中,并向其授予 roles/compute.imageUser 角色。

控制台

  1. 在 Google Cloud Console 中,转到映像项目对应的 IAM 和管理页面。

    转到“IAM 和管理”页面

  2. 如需添加新成员,请点击添加

  3. 新成员字段中,添加服务帐号电子邮件地址。

  4. 角色列表中,指向计算,然后选择 Compute Image User

  5. 点击保存

  6. 切换回该服务帐号所属的项目。

现在,您可以根据映像项目中的映像创建实例模板,并根据实例模板创建托管实例组

gcloud

从映像项目添加服务帐号:

gcloud projects add-iam-policy-binding project-id \
  --member 'serviceAccount:service-account-email' --role 'roles/compute.imageUser'

替换以下内容:

  • project-id:要共享的映像所属项目的 ID。
  • service-account-email:服务帐号的电子邮件地址。

现在,您可以根据映像项目中的映像创建实例模板,并根据实例模板创建托管实例组

API

  1. 使用以下网址获取映像项目的 IAM 政策(将 project-id 替换为映像项目的 ID)。

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

  2. 使用文本编辑器修改该政策,以向服务帐号授予 roles/compute.imageUser 角色。例如:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:service-account-email"
          ]
        }
      ]
    }
    

    service-account-email 替换为服务帐号电子邮件地址。

  3. 写入更新后的政策:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

    project-id 替换为映像项目的产品 ID。在请求正文中,提供上一步中写入的更新后 IAM 政策。

    现在,您可以根据映像项目中的映像创建实例模板,并根据实例模板创建托管实例组

向托管实例组授予对项目中特定映像的访问权限

现在您已经获得服务帐号的电子邮件地址,接下来就可以将该地址添加到其他项目中,并向其授予特定映像的 roles/compute.imageUser 角色。

控制台

  1. 在 Google Cloud Console 中,转到映像项目对应的映像页面。

    转到“映像”页面

  2. 选择要共享的映像。

  3. 权限面板中,点击添加成员

  4. 输入服务帐号电子邮件地址。

  5. 角色列表中,选择计算,然后选择 Compute Image User

  6. 点击保存

  7. 切换回该服务帐号所属的项目。

现在,您可以根据映像项目中的映像创建实例模板,并根据实例模板创建托管实例组

gcloud

如需向服务帐号授予对特定映像的访问权限,请运行以下命令:

gcloud images add-iam-policy-binding image-name \
  --member 'serviceAccount:service-account-email' \
  --role 'roles/compute.imageUser'

替换以下内容:

  • image-name:您要共享的映像名称。
  • service-account-email:服务帐号的电子邮件地址。

现在,您可以根据映像项目中的映像创建实例模板,并根据实例模板创建托管实例组

API

  1. 获取映像的 IAM 政策。

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    替换以下内容:

    • project-id:映像项目的 ID。
    • image-name:您要共享的映像的名称。
  2. 使用文本编辑器修改该政策,以向服务帐号授予 roles/compute.imageUser 角色。例如:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:service-account-email"
          ]
        }
      ]
    }
    

    service-account-email 替换为服务帐号电子邮件地址。

  3. 写入更新后的政策:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:setIamPolicy

    替换以下内容:

    • project-id:映像项目的 ID。
    • image-name:您要共享的映像的名称。

    在请求正文中,提供上一步中写入的更新后 IAM 政策。

    现在,您可以根据映像项目中的映像创建实例模板,并根据实例模板创建托管实例组

限制共享映像和快照的使用

在与其他用户共享您的映像后,您可以控制这些用户在您的组织内部使用这些资源的位置。设置 constraints/compute.storageResourceUseRestrictions 限制可以定义允许用户在其中使用您的存储资源的项目。

您必须具有修改组织政策的权限才能设置这些限制。例如,resourcemanager.organizationAdmin 角色拥有设置这些限制的权限。

  1. 查找组织 ID。

    gcloud organizations list
    
  2. 获取组织的现有政策设置。将 organization-id 替换为 12 位数字的组织 ID。

    gcloud beta resource-manager org-policies describe \
        compute.storageResourceUseRestrictions \
        --organization organization-id > org-policy.yaml
    
  3. 在文本编辑器中打开 org-policy.yaml 文件并修改 compute.storageResourceUseRestrictions 限制条件。添加所需的限制或移除不再需要的限制。 修改完此文件后,请保存更改。例如,您可以在政策文件中设置以下限制条目:

    constraint: compute.storageResourceUseRestrictions
    listPolicy:
      allowedValues:
        - under:organization/organization-id
    
  4. policy.yaml 文件应用于您的组织。将 organization-id 替换为 12 位数字的组织 ID。

    gcloud beta resource-manager org-policies set-policy \
        --organization organization-id org-policy.yaml
    

在配置完组织政策中的限制条件后,请进行测试以确保这些条件会创建您所需要的限制。

使用其他项目中的映像

如果某人向您授予了对其他项目中一个或多个映像的访问权限,您可以通过在请求中指定映像项目来访问该项目中的这些映像。

如需了解如何使用映像创建新资源(例如创建实例),请参阅创建和启动实例

例如,以下命令会使用项目 database-images 中名为 database-image-a 的映像创建一个实例:

gcloud compute instances create test-instance \
    --image database-image-a --image-project database-images

同样,您可以使用该映像来创建永久性磁盘。如需了解如何使用映像创建磁盘,请参阅创建独立的根永久性磁盘

撤消对共享映像的访问权限

如果某用户不再需要访问您的 Compute Engine 资源,您可以使用 Google Cloud Console、gcloud 命令行工具或 Compute Engine API 撤消其访问权限。

控制台

  1. 在 Google Cloud Console 中,转到映像项目对应的映像页面。

    转到“映像”页面

  2. 选中要更新的映像旁边的复选框。

  3. 点击显示信息面板以展开权限列。

  4. 展开您要移除用户的角色。

  5. 点击删除 ,以从该角色中移除用户。

gcloud

如需从映像角色中移除用户,请使用带有 --member--role 标志的 remove-iam-policy-binding 子命令。

gcloud compute images remove-iam-policy-binding image-name \
    --member='member' \
    --role='role'

替换以下内容:

  • image-name:映像的名称,例如 my_image
  • member:您要移除的身份。 必须采用 user|group|serviceAccount:emaildomain:domain 格式。 例如:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role:您要从中移除身份的角色。

如果您要撤消对目前处于 Beta 版阶段的资源的访问权限,请改用 gcloud beta compute 命令。

API

如需直接通过 API 修改 IAM 政策,请执行以下操作:

  1. 使用资源各自的 getIamPolicy 方法来读取现有政策。

    POST https://compute.googleapis.com/compute/v1/projects/project-id/global/images/image-name:getIamPolicy

    替换以下内容:

    • project-id:此映像所属项目的 ID。
    • image-name:映像的名称。

    Compute Engine 会在响应中返回当前政策。

  2. 使用文本编辑器修改该政策,以从关联角色中移除成员。

  3. 使用 setIamPolicy() 写入更新后的政策:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/global/images/image-name:setIamPolicy

    替换以下内容:

    • project-id:此映像所属项目的 ID。
    • image-name:映像的名称。

      在请求正文中,提供上一步中写入的更新后 IAM 政策。

后续步骤