查看和附加许可


本文档介绍如何查看与虚拟机 (VM) 实例关联的许可、将许可附加到虚拟机以及查看许可更新历史记录。如需详细了解 Compute Engine 上的许可,请参阅许可简介

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

查看与虚拟机关联的许可

如需查看与虚拟机关联的许可,请使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API。

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 点击要检查其许可的虚拟机的名称。实例详情页面随即打开。

  3. 实例详情页面底部,点击等效代码

  4. 查看启动磁盘的 licenses 字段。

gcloud

  1. 运行以下 gcloud compute instances describe 命令

    gcloud compute instances describe VM_NAME
    

    VM_NAME 替换为虚拟机名称。

  2. 查看输出的 disks 部分。licenses 字段会显示与启动磁盘关联的许可。

REST

  1. 调用以下 instances.get v1 方法

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME
    

    替换以下内容:

    • PROJECT:项目的名称
    • ZONE:包含虚拟机的可用区
    • VM_NAME:虚拟机的名称
  2. Compute Engine API 会在 licenses 字段的 disks 部分中返回与启动磁盘关联的许可。

查看与虚拟机关联的用户许可

如需查看与虚拟机关联的用户许可,请使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API。

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 点击要检查其用户许可的虚拟机的名称。实例详情页面随即打开。

  3. 实例详情页面底部,点击等效代码

  4. 查看启动磁盘的 userLicenses 字段。

gcloud

  1. 运行以下 gcloud beta compute instances describe 命令

    gcloud beta compute instances describe VM_NAME
    

    VM_NAME 替换为虚拟机名称。

  2. 查看输出的 disks 部分。licenses 字段会显示与启动磁盘关联的许可。

REST

  1. 调用以下 instances.get Beta 版方法

    GET https://compute.googleapis.com/compute/beta/projects/PROJECT/zones/ZONE/instances/VM_NAME
    

    替换以下内容:

    • PROJECT:项目的名称
    • ZONE:包含虚拟机的可用区
    • VM_NAME:虚拟机的名称
  2. Compute Engine API 会在 licenses 字段的 disks 部分中返回与启动磁盘关联的许可。

导入映像时附加许可

如需在导入映像时附加许可,请使用以下 gcloud compute images import 命令

gcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE
  --os=OS

替换以下内容:

  • IMAGE_NAME:要创建的映像的名称。
  • SOURCE_FILE:要导入的虚拟磁盘的本地文件或 Cloud Storage URI。
  • OS:要导入的磁盘映像的操作系统。操作系统的许可是根据此标志的值推断出来的;导入时没有明确提供许可信息标志。如需查看受支持值的列表,请参阅 --os 标志

如需详细了解如何导入映像,请参阅导入虚拟磁盘

创建映像时附加许可

如需在创建映像时附加许可,请使用以下 gcloud compute images create 命令

gcloud compute images create IMAGE_NAME \
  --source-image=SOURCE_IMAGE \
  --licenses=LICENSES

替换以下内容:

  • IMAGE_NAME:要创建的映像的名称。
  • SOURCE_IMAGE:要根据其创建新映像的映像的名称。
  • LICENSES:以英文逗号分隔的许可字符串列表。例如:"license1""license2"

如需详细了解如何创建映像,请参阅创建、删除和弃用自定义映像以及创建 Windows 映像

创建映像时附加许可及用户许可

如需在创建映像时附加许可及用户许可,请使用以下 gcloud beta compute images create 命令

gcloud beta compute images create IMAGE_NAME \
  --source-image=SOURCE_IMAGE \
  --licenses=LICENSES \
  --user-licenses=USER_LICENSES

替换以下内容:

  • IMAGE_NAME:要创建的映像的名称。
  • SOURCE_IMAGE:要根据其创建新映像的映像的名称。
  • LICENSES:以英文逗号分隔的许可字符串列表。例如:"license1""license2"
  • USER_LICENSES:以英文逗号分隔的用户许可字符串列表。例如:"userlicense1""userlicense2"

如需详细了解如何创建映像,请参阅创建、删除和弃用自定义映像以及创建 Windows 映像

附加并验证用户许可

如需附加并验证用户许可,请执行以下操作:

  1. 停止虚拟机

  2. 使用以下 gcloud compute instances describe 命令列出与虚拟机关联的磁盘:

    gcloud compute instances describe VM_NAME --format="yaml(disks)"
    
  3. 验证输出是否类似如下所示:

    disks:
    - autoDelete: true
      boot: true
      deviceName: BOOT_DISK_NAME
      diskSizeGb: '20'
      guestOsFeatures:
      - type: UEFI_COMPATIBLE
      index: 0
      interface: SCSI
      kind: compute#attachedDisk
      licenses:
      - BOOT_DISK_LICENSE_STRING
      mode: READ_WRITE
      source: https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/disks/BOOT_DISK_NAME
      type: PERSISTENT
    
  4. 在上一步的输出中,找到启动磁盘的名称。对于启动磁盘,boot 的值为 true,启动磁盘的名称为 deviceName

  5. 使用 gcloud beta compute disks update 命令将用户许可附加到启动磁盘:

    gcloud beta compute disks update BOOT_DISK_NAME \
       --update-user-licenses=LICENSE_URIS
    

    替换以下内容:

    • BOOT_DISK_NAME:要将许可附加到的启动磁盘的名称

    • LICENSE_URIS许可字符串的逗号分隔列表,可替换所有现有用户许可

  6. 使用以下 gcloud beta compute disks describe 命令获取有关启动磁盘的信息。

    gcloud beta compute disks describe BOOT_DISK_NAME
    

    BOOT_DISK_NAME 替换为启动磁盘的名称,以检查是否附加了许可。

  7. 验证输出是否类似如下所示:

    creationTimestamp: '2021-05-05T15:26:27.835-07:00'
    guestOsFeatures:
    - type: UEFI_COMPATIBLE
    id: '727854272460268924'
    interface: SCSI
    kind: compute#disk
    labelFingerprint: 42WmSpB8rSM=
    lastAttachTimestamp: '2021-05-05T15:26:27.836-07:00'
    licenseCodes:
    - '1000006'
    - '6213885950785916969'
    licenses:
    - BOOT_DISK_LICENSE_STRING
    multiWriter: false
    name: VM_NAME
    physicalBlockSizeBytes: '4096'
    selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_NAME/zones/ZONE/disks/DISK_NAME
    selfLinkWithId: https://www.googleapis.com/compute/beta/projects/PROJECT_NAME/zones/ZONE/disks/727854272460268924
    sizeGb: '20'
    sourceImage: https://www.googleapis.com/compute/beta/projects/IMAGE_PROJECT/global/images/IMAGE
    sourceImageId: '7397991294075835597'
    status: READY
    type: https://www.googleapis.com/compute/beta/projects/PROJECT_NAME/zones/ZONE/diskTypes/pd-standard
    userLicenses:
    - LICENSE_URI
    users:
    - https://www.googleapis.com/compute/beta/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
    zone: https://www.googleapis.com/compute/beta/projects/PROJECT_NAME/zones/ZONE
    
  8. 通过检查上一步中相应许可字符串的 userLicenses 字段的输出,验证用户许可是否已附加到启动磁盘。

    如果 userLicenses 字段不包含预期的许可字符串,您可能需要清除并更新许可字符串列表。您可以使用 gcloud beta compute disks update 命令执行此操作。

  9. 启动虚拟机

查看许可更新历史记录

按照以下步骤查看项目中虚拟机的许可更新历史记录:

  1. 在 Google Cloud 控制台中,转到活动页面。

    转到“活动”

  2. 类别下的过滤条件窗格中,为活动类型选择配置

  3. 类别下的过滤条件窗格中,为资源类型选择磁盘

后续步骤