查看和附加许可


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

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

    REST

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

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

查看与虚拟机关联的许可

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

控制台

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

    转到虚拟机实例

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

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

  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. 实例详情页面底部,点击等效 REST

  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. 类别下的过滤条件窗格中,为资源类型选择磁盘

后续步骤