修改虚拟机实例的安全强化型虚拟机选项

本文档介绍如何在虚拟机实例上启用和停用安全强化型虚拟机选项。如需查看哪些映像支持安全强化型虚拟机功能,请参阅操作系统映像安全功能

概览

默认情况下,在安全强化型虚拟机实例上,Compute Engine 会启用虚拟可信平台模块 (vTPM)完整性监控选项。如果您停用 vTPM,则 Compute Engine 会停用完整性监控,因为完整性监控依赖于测量启动收集的数据。

默认情况下,Compute Engine 不会启用安全启动,因为未签名的驱动程序和其他低级别软件可能不兼容。安全启动会验证所有启动组件的签名,并在签名验证失败时停止启动过程,从而有助于确保系统仅运行正版软件。这有助于防止各种形式的内核恶意软件(例如 rootkit 或 bootkit)在虚拟机重新启动过程中持续存在。如果您能够确保安全启动不会阻止代表性测试虚拟机启动并且安全启动适合您的工作负载,则 Google 建议您启用安全启动。

限制

即使 Compute Engine 虚拟机实例支持安全启动,加载在 Compute Engine 虚拟机上的映像也可能不受支持。值得注意的是,尽管大多数 Linux 发行版都支持最近的 x86 映像上的安全启动,但默认情况下 ARM64 并不总是支持安全启动。启用安全启动后,许多 Linux 映像都配置为拒绝加载树外内核模块的未签名构建。这最常影响 GPU 驱动程序,但有时也会影响需要内核模块的安全监控工具。

执行此任务所需的权限

您必须拥有以下权限才能执行此任务:

  • 针对虚拟机实例的 compute.instances.updateShieldedInstanceConfig 权限

修改虚拟机实例的安全强化型虚拟机选项

请按照以下步骤修改安全强化型虚拟机选项:

控制台

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

    转到虚拟机实例

  2. 点击实例名称打开虚拟机实例详情页面。

  3. 点击停止

  4. 实例停止后,点击修改

  5. 安全强化型虚拟机部分,修改安全强化型虚拟机选项:

    • 切换开启安全启动以启用安全启动。默认情况下,Compute Engine 不会启用安全启动,因为未签名的驱动程序和其他低级别软件可能不兼容。Google 建议您尽量启用安全启动。

    • 切换开启 vTPM,以停用虚拟可信平台模块 (vTPM)。默认情况下,Compute Engine 会启用虚拟可信平台模块 (vTPM)

    • 切换开启完整性监控,以停用完整性监控。默认情况下,Compute Engine 会启用完整性监控

  6. 点击保存

  7. 点击启动以启动实例。

gcloud

  1. 停止实例:

    gcloud compute instances stop VM_NAME
    

    VM_NAME 替换为要停止的虚拟机的名称。

  2. 更新安全强化型虚拟机选项:

    gcloud compute instances update VM_NAME \
        [--[no-]shielded-secure-boot] \
        [--[no-]shielded-vtpm] \
        [--[no-]shielded-integrity-monitoring]

    VM_NAME 替换为要更新安全强化型虚拟机选项的虚拟机的名称。

    shielded-secure-boot:默认情况下,Compute Engine 不会启用安全启动,因为未签名的驱动程序和其他低级别软件可能不兼容。Google 建议您尽量启用安全启动。

    • 使用 --shielded-secure-boot 标志启用安全启动(推荐)。
    • 使用 --no-shielded-secure-boot 停用安全启动。

    shielded-vtpm虚拟可信平台模块 (vTPM) 默认处于启用状态。使用 --shielded-vtpm 启用(默认)。使用 --no-shielded-vtpm 标志停用。

    shielded-integrity-monitoring完整性监控默认处于启用状态。使用 --shielded-integrity-monitoring 启用(默认)。使用 --no-shielded-integrity-monitoring 标志停用。

  3. 启动实例:

    gcloud compute instances start VM_NAME
    

    VM_NAME 替换为要启动的虚拟机的名称。

API

  1. 停止实例:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    

    替换以下内容:

    • PROJECT_ID:包含要停止的虚拟机的项目
    • ZONE:包含要停止的虚拟机的可用区
    • VM_NAME:要停止的虚拟机
  2. 使用 instances.updateShieldedInstanceConfig 在实例上启用或停用安全强化型虚拟机选项:

    PATCH https://compute.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/updateShieldedInstanceConfig
    
    {
     "enableSecureBoot": {true|false},
     "enableVtpm": {true|false},
     "enableIntegrityMonitoring": {true|false}
    }
    

    替换以下内容:

    • PROJECT_ID:包含要启用或停用其安全强化型虚拟机选项的虚拟机的项目。
    • ZONE:包含要启用或停用其安全强化型虚拟机选项的虚拟机的可用区。
    • VM_NAME:要启用或停用其安全强化型虚拟机选项的虚拟机。

    enableSecureBoot:默认情况下,Compute Engine 不会启用安全启动,因为未签名的驱动程序和其他低级别软件可能不兼容。Google 建议您尽量启用安全启动。

    enableVtpm:默认情况下,Compute Engine 会启用虚拟可信平台模块 (vTPM)

    enableIntegrityMonitoring:默认情况下,Compute Engine 会启用完整性监控

  3. 启动实例:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
    

    替换以下内容:

    • PROJECT_ID:包含要启动的虚拟机的项目
    • ZONE:包含要启动的虚拟机的可用区
    • VM_NAME:要启动的虚拟机

后续步骤