监控安全强化型虚拟机的完整性

本主题介绍了如何使用 Cloud Monitoring 监控已启用完整性监控安全强化型虚拟机实例的启动完整性,确定完整性验证失败的原因,并更新完整性政策基准。

准备工作

使用 Monitoring 监控虚拟机启动完整性

使用 Cloud Monitoring 查看完整性验证事件并为其设置提醒,使用 Cloud Logging 查看这些事件的详细信息。

查看完整性验证事件

如需使用 Metrics Explorer 查看受监控资源的指标,请执行以下操作:

  1. 在 Google Cloud Console 中,转到 Monitoring 或使用下面的按钮:
    转到 Monitoring
  2. 在 Monitoring 导航窗格中,点击 Metrics Explorer
  3. 确保所选标签页为指标
  4. 点击 Find resource type and metric 对应的框,然后从菜单中选择或者输入资源和指标的名称。使用以下信息填写此文本框的各个字段:
    1. 对于 Resource,选择或输入 gce_instance
    2. 对于 Metric,选择以下指标之一:
      • Early Boot Validation(前期启动验证)显示上次启动序列的前期启动部分的通过/失败状态。前期启动是从 UEFI 固件启动到它将控制传递给启动加载程序的启动序列。
      • Late Boot Validation(后期启动验证)显示上次启动序列的后期启动部分的通过/失败状态。后期启动是从启动加载程序到完成的启动序列,包括加载操作系统内核。
  5. 使用 FilterGroup ByAggregation 菜单修改数据的显示方式。例如,您可以按资源或指标标签进行分组。如需了解详情,请参阅选择指标 - 其他配置

为完整性验证事件设置提醒

如果希望在虚拟机实例启动验证失败时收到通知,请为前期启动验证后期启动验证指标值设置提醒。如需了解如何设置提醒,请参阅提醒简介

查看完整性验证事件详细信息

  1. 转到“虚拟机实例”页面
  2. 点击实例 ID 以打开虚拟机实例详情页面。
  3. 日志下,点击 Cloud Logging
  4. 找到您要查看的 earlyBootReportEventlateBootReportEvent 日志条目。
  5. 根据需要展开日志条目 > jsonPayload > earlyBootReportEventlateBootReportEvent。在这部分中,policyEvaluationPassed 元素标识启动序列的给定部分是否通过了完整性政策基准的验证。
  6. 展开 actualMeasurements 部分及其中带编号的元素,以查看从最新启动序列保存的平台配置寄存器 (PCR) 值。PCR 值保存在带编号元素中的 value 元素中。PCR 值用于标识最新启动序列使用的启动组件和组件加载顺序,并与完整性政策基准进行比较,以确定虚拟机实例启动序列中是否经过了任何更改。如需详细了解 PCR 值代表的含义,请参阅完整性监控事件
  7. 展开 policyMeasurements 部分以查看为完整性政策基准保存的 PCR 值。

自动响应完整性验证事件

您可以导出 Cloud Logging 日志并在其他服务(如 Cloud Functions)中对其进行处理以自动响应启动验证事件。如需了解详情,请参阅日志导出概览自动响应完整性验证失败

确定启动完整性验证失败的原因

  1. 转到“虚拟机实例”页面
  2. 点击实例 ID 以打开虚拟机实例详情页面。
  3. 日志下,点击 Cloud Logging
  4. 找到最新的 earlyBootReportEventlateBootReportEvent 日志条目,并查看哪个条目的 policyEvaluationPassed 值为 false
  5. 根据需要展开日志条目 > jsonPayload > earlyBootReportEventlateBootReportEvent
  6. 展开 actualMeasurementspolicyMeasurements 部分及其中带编号的元素,以分别查看从最新启动序列和完整性政策基准保存的平台配置寄存器 (PCR) 值。PCR 值用于标识最新启动序列和完整性政策基准使用的启动组件和组件加载顺序。
  7. 比较 actualMeasurementspolicyMeasurements 部分中的 PCR 值,以确定最新启动序列和完整性政策基准之间发生更改的位置。会产生不同值的比较就是导致验证失败的原因。请注意,这些部分中的元素编号几乎不与 PCR 编号相对应,而且 actualMeasurementspolicyMeasurements 中类似编号的元素可能代表不同的 PCR。例如,在 Windows 和 Linux 的前期启动序列中,actualMeasurements 中的 3 元素和 policyMeasurements 中的 2 元素均代表 PCR7。

  8. 检查完整性监控事件以确定更改的 PCR 代表什么,并调查其是否为预期的更改。

更新完整性政策基准

初始完整性政策基准来源于创建实例时的隐式可信启动映像。更新基准会使用当前实例配置更新完整性政策基准。更新基准时,虚拟机实例必须正在运行。

您应在实例配置中的任何计划的特定于启动的更改(如内核更新或内核驱动程序安装)完成之后更新基准,因为这些更改会导致完整性验证失败。如果意外出现完整性验证失败,应该调查失败的原因并准备好在必要时停止实例。

您必须具有 setShieldedInstanceIntegrityPolicy 权限才能更新完整性政策基准。

请按以下步骤更新完整性政策基准。

gcloud

使用带有 --shielded-learn-integrity-policy 标志的 compute instances update 命令更新虚拟机实例的完整性政策基准。

以下示例重置 my-instance 虚拟机实例的完整性政策基准:

gcloud compute instances update my-instance \
    --shielded-learn-integrity-policy

API

使用含有 setShieldedInstanceIntegrityPolicy 方法的 updateAutoLearnPolicy 请求正文内容更新虚拟机实例的完整性政策基准。

以下示例重置虚拟机实例的完整性政策基准。

PATCH https://compute.googleapis.com/compute/alpha/projects/my-project/zones/us-central1-b/instances/my-instance/setShieldedInstanceIntegrityPolicy?key={YOUR_API_KEY}
{
  "updateAutoLearnPolicy": true
}

后续步骤