本主题介绍了如何使用 Cloud Monitoring 监控已启用完整性监控的安全强化型虚拟机实例的启动完整性,确定完整性验证失败的原因,并更新完整性政策基准。
使用 Monitoring 监控虚拟机启动完整性
使用 Cloud Monitoring 查看完整性验证事件并为其设置提醒,使用 Cloud Logging 查看这些事件的详细信息。
查看完整性验证事件
如需使用 Metrics Explorer 查看受监控资源的指标,请执行以下操作:
-
在 Google Cloud 控制台中,转到 leaderboard Metrics Explorer 页面:
如果您使用搜索栏查找此页面,请选择子标题为监控的结果。
- 在指标元素中,展开选择指标菜单,在过滤栏中输入
Boot Validation
,然后使用子菜单选择一个特定资源类型和指标:- 在活跃资源菜单中,选择虚拟机实例。
- 在活跃指标类别菜单中,选择实例。
- 在活跃指标菜单中,选择前期启动验证或后期启动验证。
- Early Boot Validation(前期启动验证)显示上次启动序列的前期启动部分的通过/失败状态。前期启动是从 UEFI 固件启动到它将控制传递给启动加载程序的启动序列。
- Late Boot Validation(启动后期验证):显示上次启动序列的启动后期部分的通过/失败状态。后期启动是从启动加载程序到完成的启动序列,包括加载操作系统内核。
- 点击应用。
如需从显示结果中移除时序,请使用过滤条件元素。
如需组合时序,请使用聚合元素上的菜单。例如,如需根据虚拟机所在的可用区显示虚拟机的 CPU 利用率,请将第一个菜单设置为平均值,并将第二个菜单设置为可用区。
当聚合元素的第一个菜单设置为未聚合时,系统会显示所有时序。聚合元素的默认设置由您选择的指标类型决定。
- 对于配额和每天报告一个样本的其他指标,请执行以下操作:
- 在显示窗格中,将微件类型设置为堆叠条形图。
- 将时间段设置为至少一周。
为完整性验证事件设置提醒
如果希望在虚拟机实例启动验证失败时收到通知,请为前期启动验证和后期启动验证指标值设置提醒。如需了解如何设置提醒,请参阅提醒简介。
对于前期启动验证提醒政策的设置,请参阅 Compute Engine 前期启动验证。
对于启动后期验证提醒政策设置,请参阅 Compute Engine 启动后期验证。
查看完整性验证事件详细信息
- 转到“虚拟机实例”页面
- 点击实例 ID 以打开虚拟机实例详情页面。
- 在日志下,点击 Cloud Logging。
- 找到您要查看的
earlyBootReportEvent
或lateBootReportEvent
日志条目。 - 根据需要展开日志条目 >
jsonPayload
>earlyBootReportEvent
或lateBootReportEvent
。在这部分中,policyEvaluationPassed
元素标识启动序列的给定部分是否通过了完整性政策基准的验证。 - 展开
actualMeasurements
部分及其中带编号的元素,以查看从最新启动序列保存的平台配置寄存器 (PCR) 值。PCR 值保存在带编号元素中的value
元素中。PCR 值用于标识最新启动序列使用的启动组件和组件加载顺序,并与完整性政策基准进行比较,以确定虚拟机实例启动序列中是否经过了任何更改。如需详细了解 PCR 值代表的含义,请参阅完整性监控事件。 - 展开
policyMeasurements
部分以查看为完整性政策基准保存的 PCR 值。
自动响应完整性验证事件
您可以导出 Cloud Logging 日志并在其他服务(如 Cloud Run functions)中对其进行处理以自动响应启动验证事件。如需了解详情,请参阅路由和存储概览以及自动响应完整性验证失败。
确定启动完整性验证失败的原因
- 转到“虚拟机实例”页面
- 点击实例 ID 以打开虚拟机实例详情页面。
- 在日志下,点击 Cloud Logging。
- 找到最新的
earlyBootReportEvent
和lateBootReportEvent
日志条目,并查看哪个条目的policyEvaluationPassed
值为 false。 - 根据需要展开日志条目 >
jsonPayload
>earlyBootReportEvent
或lateBootReportEvent
。 - 展开
actualMeasurements
和policyMeasurements
部分及其中带编号的元素,以分别查看从最新启动序列和完整性政策基准保存的平台配置寄存器 (PCR) 值。PCR 值用于标识最新启动序列和完整性政策基准使用的启动组件和组件加载顺序。 比较
actualMeasurements
和policyMeasurements
部分中的 PCR 值,以确定最新启动序列和完整性政策基准之间发生更改的位置。会产生不同值的比较就是导致验证失败的原因。请注意,这些部分中的元素编号几乎不与 PCR 编号相对应,而且actualMeasurements
和policyMeasurements
中类似编号的元素可能代表不同的 PCR。例如,在 Windows 和 Linux 的前期启动序列中,actualMeasurements
中的3
元素和policyMeasurements
中的2
元素均代表 PCR7。检查完整性监控事件以确定更改的 PCR 代表什么,并调查其是否为预期的更改。
更新完整性政策基准
初始完整性政策基准来源于创建实例时的隐式可信启动映像。更新基准会使用当前实例配置更新完整性政策基准。更新基准时,虚拟机实例必须正在运行。
您应在实例配置中的任何计划的特定于启动的更改(如内核更新或内核驱动程序安装)完成之后更新基准,因为这些更改会导致完整性验证失败。如果意外出现完整性验证失败,应该调查失败的原因并准备好在必要时停止实例。
您必须具有 setShieldedInstanceIntegrityPolicy
权限才能更新完整性政策基准。
请按以下步骤更新完整性政策基准。
gcloud
使用带有 --shielded-learn-integrity-policy
标志的 compute instances update
命令更新虚拟机实例的完整性政策基准。
以下示例重置 my-instance 虚拟机实例的完整性政策基准:
gcloud compute instances update INSTANCE_NAME \ --zone=ZONE --shielded-learn-integrity-policy
替换以下内容:
- INSTANCE_NAME:虚拟机的名称。
- ZONE:虚拟机所在的可用区。
API
使用含有 setShieldedInstanceIntegrityPolicy
方法的 updateAutoLearnPolicy
请求正文内容更新虚拟机实例的完整性政策基准。
以下示例重置虚拟机实例的完整性政策基准。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setShieldedInstanceIntegrityPolicy?key=YOUR_API_KEY { "updateAutoLearnPolicy": true }
替换以下内容:
- PROJECT_ID:虚拟机所在的项目的 ID。
- INSTANCE_NAME:虚拟机的名称。
- ZONE:虚拟机所在的可用区。
- YOUR_API_KEY:用于访问该 API 的 API 密钥。
后续步骤
- 详细了解安全强化型虚拟机提供的安全功能。
- 详细了解修改安全强化型虚拟机实例上的选项。
- 详细了解一种自动响应完整性监控事件的方法。