監控受防護 VM 的完整性

本主題說明如何使用 Cloud Monitoring 監控已啟用完整性監控功能的 受防護的 VM 執行個體的啟動完整性,找出完整性驗證失敗的原因,以及更新完整性政策基準。

使用 Monitoring 監控 VM 啟動完整性

您可以使用 Cloud Monitoring 查看完整性驗證事件並設定快訊,也可以使用 Cloud Logging 查看完整性驗證事件的詳細資料。

查看完整性驗證事件

如要使用 Metrics Explorer 查看受控資源的指標,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Metrics Explorer」(Metrics Explorer) 頁面

    前往 Metrics Explorer

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 在 Google Cloud 控制台的工具列中,選取 Google Cloud 專案。 如要設定 App Hub,請選取 App Hub 主機專案或已啟用應用程式的資料夾管理專案。
  3. 在「指標」元素中,展開「選取指標」選單,在篩選列中輸入 Boot Validation,然後使用子選單選取特定資源類型和指標:
    1. 在「Active resources」選單中,選取「VM instance」
    2. 在「Active metric categories」(使用中的指標類別) 選單中,選取「Instance」
    3. 在「Active metrics」選單中,選取「Early Boot Validation」或「Late Boot Validation」
      • Early Boot Validation (早期啟動驗證):顯示最後一個啟動順序中,早期啟動部分的通過/失敗狀態。早期啟動是指從 UEFI 韌體啟動開始,到其將控制權交給系統啟動載入程式為止的啟動順序。
      • Late Boot Validation (後期啟動驗證):顯示最後一個啟動順序中,後期啟動部分的通過/失敗狀態。後期啟動是指從系統啟動載入程式到作業完成為止的啟動順序,包括載入作業系統核心。
    4. 按一下 [套用]
  4. 如要從顯示畫面中移除時間序列,請使用 Filter 元素

  5. 如要合併時間序列,請使用「Aggregation」 元素上的選單。舉例來說,如要根據區域顯示 VM 的 CPU 使用率,請將第一個選單設為「平均」,第二個選單設為「區域」

    當「Aggregation」元素的第一個選單設為「Unaggregated」時,系統會顯示所有時間序列。Aggregation 元素的預設設定取決於您選取的指標類型。

  6. 針對每天回報一個樣本的配額和其他指標,請執行下列操作:
    1. 在「顯示」窗格中,將「小工具類型」設為「堆疊長條圖」
    2. 將時間範圍設為至少一週。

針對完整性驗證事件設定快訊

如果您想在 VM 執行個體的啟動驗證失敗時收到通知,請針對早期啟動驗證後期啟動驗證指標的值設定快訊。如要瞭解快訊,請參閱快訊簡介

查看完整性驗證事件詳細資料

  1. 前往 VM 執行個體頁面
  2. 按一下要查看資料的執行個體 ID,開啟「VM instance details」(VM 執行個體詳細資料) 頁面。
  3. 在「Logs」下方,按一下「Cloud Logging」
  4. 找出您要查看的 earlyBootReportEventlateBootReportEvent 記錄項目。
  5. 展開記錄項目 > jsonPayload > earlyBootReportEventlateBootReportEvent (視情況而定)。該區段中的 policyEvaluationPassed 元素註明啟動順序的特定部分是否通過與完整性政策基準比對的驗證程序。
  6. 展開 actualMeasurements 區段和其中的編號元素,然後查看透過最近的啟動順序所儲存的平台設定暫存器 (PCR) 值。PCR 值儲存在編號元素中的 value 元素。PCR 值用於表示最近的啟動順序中使用的啟動元件和元件載入順序,也用於和完整性政策基準相互比較,以利判斷 VM 執行個體啟動順序是否有任何變動。如要進一步瞭解 PCR 代表的涵義,請參閱完整性監控事件一節。
  7. 展開 policyMeasurements 區段,查看根據完整性政策基準儲存的 PCR 值。

自動針對完整性驗證事件發出回應

您可以匯出 Cloud Logging 記錄,並在 Cloud Run 函式等其他服務中加以處理,藉此自動針對啟動驗證事件發出回應。詳情請參閱「轉送和儲存空間總覽」和「自動發出對完整性驗證失敗的回應」。

判斷啟動完整性驗證失敗的原因

  1. 前往 VM 執行個體頁面
  2. 按一下要查看資料的執行個體 ID,開啟「VM instance details」(VM 執行個體詳細資料) 頁面。
  3. 在「Logs」下方,按一下「Cloud Logging」
  4. 尋找最近的 earlyBootReportEventlateBootReportEvent 記錄項目,然後查看哪個項目的 policyEvaluationPassed 值是「false」。
  5. 展開記錄項目 > jsonPayload > earlyBootReportEventlateBootReportEvent (視情況而定)。
  6. 展開 actualMeasurements 區段和 policyMeasurements 區段,以及其中的編號元素,然後查看分別透過最近啟動順序和完整性政策基準儲存的平台設定暫存器 (PCR) 值。此 PCR 值用於表示最近的啟動順序及完整性政策基準使用的啟動元件和元件載入順序。
  7. 比較 actualMeasurementspolicyMeasurements 區段的 PCR 值,找出最近啟動順序和完整性政策基準之間的差異處。如果比較某個部分時出現不同的值,該部分就是導致驗證失敗的原因。請注意,這些區段中的元素編號幾乎不會與 PCR 編號一致,且 actualMeasurementspolicyMeasurements 中編號類似的元素可能代表不同的 PCR。舉例來說,在 Windows 和 Linux 的早期啟動順序中,actualMeasurements 中的元素 3policyMeasurements 中的元素 2 都代表 PCR7。

  8. 查看完整性監控事件,判斷變更的 PCR 代表的涵義,並調查該變更是否在預期範圍內。

更新完整性政策基準

初始完整性政策基準是在執行個體建立時,從默示信任啟動映像檔衍生而來。如果您更新基準,系統會使用目前的執行個體設定更新完整性政策基準。更新基準時,VM 執行個體必須處於運作狀態。

您應該要等到執行個體設定中任何預定的啟動專屬變更 (例如更新核心或安裝核心驅動程式) 完成後,再更新基準,因為這類變更會導致完整性驗證失敗。如果發生非預期的完整性驗證失敗,請調查失敗的原因,並準備在必要時停止執行個體。

您必須擁有 setShieldedInstanceIntegrityPolicy 權限,才能更新完整性政策基準。

請使用以下程序更新完整性政策基準。

gcloud

請使用 compute instances update 指令搭配 --shielded-learn-integrity-policy 旗標,更新 VM 執行個體的完整性政策基準。

以下範例會重設 my-instance VM 執行個體的完整性政策基準:

gcloud compute instances update INSTANCE_NAME \
    --zone=ZONE \
    --shielded-learn-integrity-policy

更改下列內容:

  • INSTANCE_NAME:VM 名稱。
  • ZONE:VM 所在區域。

API

請使用 updateAutoLearnPolicy 要求主體項目搭配 setShieldedInstanceIntegrityPolicy 方法,更新 VM 執行個體的完整性政策基準。

以下範例會重設 VM 執行個體的完整性政策基準。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setShieldedInstanceIntegrityPolicy?key=YOUR_API_KEY
{
  "updateAutoLearnPolicy": true
}

更改下列內容:

  • PROJECT_ID:VM 所在專案的專案 ID。
  • INSTANCE_NAME:VM 名稱。
  • ZONE:VM 所在區域。
  • YOUR_API_KEY:可讓您存取 API 的 API 金鑰。

後續步驟