本主题介绍了如何使用 Cloud Monitoring 监控已启用完整性监控的安全强化型虚拟机实例的启动完整性,确定完整性验证失败的原因,并更新完整性政策基准。
使用 Monitoring 监控虚拟机启动完整性
使用 Cloud Monitoring 查看完整性验证事件并为其设置提醒,使用 Cloud Logging 查看这些事件的详细信息。
查看完整性验证事件
如需使用 Metrics Explorer 查看受监控资源的指标,请按照以下步骤操作:
- 在 Google Cloud 控制台中,转到 Monitoring 中的 Metrics Explorer 页面。
- 在选择指标窗格中,展开指标菜单,在过滤栏中输入
Boot Validation
,然后使用子菜单选择特定资源类型和指标:- 在活跃资源菜单中,选择虚拟机实例。
- 在活跃指标类别菜单中,选择实例。
- 在活跃指标菜单中,选择前期启动验证或后期启动验证。
- Early Boot Validation(前期启动验证)显示上次启动序列的前期启动部分的通过/失败状态。前期启动是从 UEFI 固件启动到它将控制传递给启动加载程序的启动序列。
- Late Boot Validation(后期启动验证)显示上次启动序列的后期启动部分的通过/失败状态。后期启动是从启动加载程序到完成的启动序列,包括加载操作系统内核。
- 点击应用。
- 可选:如需配置数据的查看方式,请添加过滤条件和分组,并配置校准字段。默认情况下,Metrics Explorer 会添加一个对所有时间序列求平均值的分组:
- 如需按资源或指标标签对时序进行分组,请展开分组依据部分中的标签菜单,然后进行选择。 您还可以更改分组函数。
- 如需查看所有时序,请点击分组依据条目中的 delete删除。
- 如需访问对齐字段,请点击更多选项。
- 可选:更改显示窗格中的设置:
- 对于配额和每天报告一个样本的其他指标,请将微件类型设置为堆叠条形图。
- 对于分布值指标,请将微件类型设置为热图。
- 可选:对于配额和每天报告一个样本的其他指标,请将时间范围设置为至少一周。
为完整性验证事件设置提醒
如果希望在虚拟机实例启动验证失败时收到通知,请为前期启动验证和后期启动验证指标值设置提醒。如需了解如何设置提醒,请参阅提醒简介。
对于前期启动验证提醒政策的设置,请参阅 Compute Engine 前期启动验证。
对于后期启动验证提醒政策的设置,请参阅 Compute Engine 后期启动验证。
查看完整性验证事件详细信息
- 转到“虚拟机实例”页面
- 点击实例 ID 以打开虚拟机实例详情页面。
- 在日志下,点击 Cloud Logging。
- 找到您要查看的
earlyBootReportEvent
或lateBootReportEvent
日志条目。 - 根据需要展开日志条目 >
jsonPayload
>earlyBootReportEvent
或lateBootReportEvent
。在这部分中,policyEvaluationPassed
元素标识启动序列的给定部分是否通过了完整性政策基准的验证。 - 展开
actualMeasurements
部分及其中带编号的元素,以查看从最新启动序列保存的平台配置寄存器 (PCR) 值。PCR 值保存在带编号元素中的value
元素中。PCR 值用于标识最新启动序列使用的启动组件和组件加载顺序,并与完整性政策基准进行比较,以确定虚拟机实例启动序列中是否经过了任何更改。如需详细了解 PCR 值代表的含义,请参阅完整性监控事件。 - 展开
policyMeasurements
部分以查看为完整性政策基准保存的 PCR 值。
自动响应完整性验证事件
您可以导出 Cloud Logging 日志并在其他服务(如 Cloud 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 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 }
后续步骤
- 详细了解安全强化型虚拟机提供的安全功能。
- 详细了解修改安全强化型虚拟机实例上的选项。
- 详细了解一种自动响应完整性监控事件的方法。