管理许可

本文档介绍了如何管理与 Compute Engine 实例关联的许可。包括如何附加、移除和替换许可以及如何查看许可更新记录。如需详细了解 Compute Engine 上的许可,请参阅许可简介

许可管理方面的限制:

  • 只有当 AppendableToDisktrue 时,您才能向磁盘添加许可。
  • 只有当 RemovableFromDisktrue 时,您才能移除许可(不提供替换项)。
  • 您只能使用 AllowedReplacementLicenses 中列出的替换项来替换许可。

对于 Ubuntu LTS,如需将许可升级到 Ubuntu Pro 以启用延长安全维护 (ESM),请参阅从 Ubuntu 升级到 Ubuntu Pro

如需更新您的按需 RHEL 许可以提供延长支持期,请参阅将 RHEL 延长生命周期支持 (ELS) 插件附加到您的许可

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Trusted Cloud by S3NS 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. 安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后,运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. Set a default region and zone.

    REST

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

      安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后,运行以下命令初始化 Google Cloud CLI:

      gcloud init

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

准备更新磁盘的许可

如需在磁盘挂接到正在运行的实例时更新磁盘的许可,请先关停实例或分离磁盘。

  • 停止实例。 在更新磁盘的许可之前,暂时关停实例。
  • 分离磁盘。这会在更新磁盘许可之前将磁盘从实例分离。

查看与虚拟机关联的许可

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

控制台

  1. 在 Trusted Cloud 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

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

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

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

gcloud

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

    gcloud compute instances describe VM_NAME
    

    VM_NAME 替换为虚拟机名称。

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

REST

调用 instances.get v1 方法

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

替换以下内容:

  • PROJECT:项目的名称
  • ZONE:包含虚拟机的可用区
  • VM_NAME:虚拟机的名称

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 映像

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

将许可附加到磁盘

如需附加与虚拟机相关联的许可,请使用 gcloud CLI 或 Compute Engine API。

gcloud

如需通过许可引用或代码将许可附加到磁盘,请使用以下 gcloud compute disks update 命令

gcloud compute disks update DISK_NAME \
--append-licenses=LICENSES

替换以下内容:

  • DISK_NAME:要附加的磁盘的名称。
  • LICENSES:以英文逗号分隔的许可引用列表,例如 "projects/rhel-cloud/global/licenses/rhel-9-server""projects/rhel-cloud/global/licenses/rhel-8-server"

REST

如需通过许可引用或代码将许可附加到磁盘,请调用以下 disks.update v1 方法

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/disks/DISK_NAME?paths=licenses --data '{"name":"DISK_NAME", "licenses":["https://www.googleapis.com/compute/v1/LICENSES"]}'

替换以下内容:

  • PROJECT:项目的名称
  • ZONE:包含虚拟机的可用区
  • DISK_NAME:磁盘的名称
  • LICENSES:以英文逗号分隔的许可引用列表,例如 "projects/rhel-cloud/global/licenses/rhel-9-server""projects/rhel-cloud/global/licenses/rhel-8-server"

替换磁盘上的许可

如需替换与虚拟机相关联的许可,请使用 gcloud CLI 或 Compute Engine API。

gcloud

如需通过许可引用或代码替换磁盘上的许可,请使用以下 gcloud compute disks update 命令

gcloud compute disks update DISK_NAME \
--replace-license=PREVIOUS_LICENSE,NEW_LICENSE

替换以下内容:

  • DISK_NAME:要附加的磁盘的名称。
  • PREVIOUS_LICENSE:要替换的先前的许可引用,例如 "projects/rhel-cloud/global/licenses/rhel-9-server""projects/rhel-cloud/global/licenses/rhel-8-server"
  • NEW_LICENSE:新的许可引用,例如 "projects/rhel-cloud/global/licenses/rhel-9-server""projects/rhel-cloud/global/licenses/rhel-8-server"

REST

如需通过许可引用或代码替换磁盘上的许可,请调用 disks.update v1 方法,并在请求正文中将先前的许可替换为新许可,如下所示:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/disks/DISK_NAME?paths=licenses --data '{"name":"DISK_NAME", "licenses":["https://www.googleapis.com/compute/v1/NEW_LICENSE"]}'

替换以下内容:

  • PROJECT:项目的名称
  • ZONE:包含虚拟机的可用区
  • DISK_NAME:磁盘的名称
  • NEW_LICENSE:新的许可引用,例如 "projects/rhel-cloud/global/licenses/rhel-9-server""projects/rhel-cloud/global/licenses/rhel-8-server"

从磁盘中移除许可

如需移除与虚拟机关联的个别许可,请使用 gcloud CLI 和 Compute Engine API。

gcloud

如需通过许可引用或代码从磁盘中移除许可,请使用 gcloud compute disks update 命令

gcloud compute disks update DISK_NAME \
--remove-licenses=LICENSES

替换以下内容:

  • DISK_NAME:要移除的磁盘的名称。
  • LICENSES:以英文逗号分隔的许可引用列表,例如 "projects/rhel-cloud/global/licenses/rhel-9-server""projects/rhel-cloud/global/licenses/rhel-8-server"

REST

如需移除许可,请调用以下 disks.update v1 方法,在调用请求中提供一个空许可字段,并提供路径选择器:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/disks/DISK_NAME?paths=licenses --data '{"name":"DISK_NAME", "licenses":[]}'

替换以下内容:

  • PROJECT:项目的名称
  • ZONE:包含虚拟机的可用区
  • DISK_NAME:磁盘的名称
  • LICENSES:留空。

查看许可更新历史记录

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

  1. 在 Trusted Cloud 控制台中,前往 Logs Explorer 页面。

    转到日志浏览器

  2. 在工具栏中,确认显示查询处于启用状态。

  3. 将以下表达式复制到查询编辑器中:

    resource.type="gce_disk"
    logName="projects/PROJECT_NAME/logs/cloudaudit.googleapis.com%2Factivity"
    severity>=NOTICE
    protoPayload.request.@type="type.googleapis.com/compute.disks.update"
    protoPayload.request.licenses:*
    
  4. PROJECT_NAME 替换为该项目的名称。

  5. 点击运行查询

后续步骤