監控受防護的 VM 執行個體的完整性

您將在本主題中瞭解如何使用 Stackdriver 監控受防護的 VM 執行個體的啟動完整性、找出完整性驗證失敗的原因,以及更新完整性政策基準。

事前準備

使用 Stackdriver 監控 VM 啟動完整性

您可以使用 Stackdriver Monitoring 查看完整性驗證事件,並針對這類事件設定快訊。此外,您還可透過 Stackdriver Logging 查看完整性驗證事件的詳細資料。

查看完整性驗證事件

  1. 在 Google Cloud Platform Console 中,前往「Monitoring」

    前往「Monitoring」

  2. 使用 Stackdriver Monitoring 主控台右上方的下拉式選單,選取包含 VM 執行個體隸屬 GCP 專案的 Stackdriver 帳戶。

  3. 在左側導覽區中,選擇 [Resources] (資源),然後選擇 [Metrics Explorer]。

  4. 在「Find resource type and metric」(尋找資源類型和指標) 欄位中,輸入「instance」(執行個體),然後選取 [Compute Engine VM Instance] (Compute Engine VM 執行個體) 資源類型。

  5. 選擇下列其中一種指標:

    • 「Early Boot Validation」(早期啟動驗證) 會顯示最近啟動順序中,早期啟動部分的通過/失敗狀態。早期啟動是指從 UEFI 韌體啟動開始,到其將控制權交給系統啟動載入程式為止的啟動順序。
    • 「Late Boot Validation」(後期啟動驗證) 會顯示最後一個啟動順序中,後期啟動部分的通過/失敗狀態。後期啟動是指系統啟動載入程式到作業完成為止的啟動順序,包括載入作業系統核心。
  6. 您也可以套用篩選器來限制顯示的指標資訊、將顯示的指標資訊分組,或匯總指標資料。詳情請參閱其他設定一節。

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

如果您想在 VM 執行個體的啟動驗證失敗時收到通知,請針對早期啟動驗證和後期啟動驗證指標的值設定快訊。有關如何設定快訊的詳情,請參閱快訊簡介一文。

  1. 在 Google Cloud Platform Console 中,前往「Monitoring」

    前往「Monitoring」

  2. 使用 Stackdriver Monitoring 主控台右上方的下拉式選單,選取包含 VM 執行個體隸屬 GCP 專案的 Stackdriver 帳戶。

  3. 在左側導覽區中,依序選擇 [Alerting] (快訊) > [Create a Policy] (建立政策)。

  4. 按一下 [Add Condition] (新增條件)

  5. 在「Try our new UI for creating alerting conditions」(試用我們的新 UI 建立快訊條件) 訊息中,選擇 [Opt in] (啟用),使用新的快訊條件介面 (必要步驟)。

  6. 在 [Metric Threshold/Rate Change/Absence] (指標門檻/速率變更/無) 選項,按一下 [Select] (選取)。

  7. 在「Find resource type and metric」(尋找資源類型和指標) 欄位中,輸入「instance」(執行個體),然後選取 [GCE VM Instance] (GCE VM 執行個體) 資源類型。

  8. 選擇下列其中一種指標:

    • 「Early Boot Validation」(早期啟動驗證) 會顯示最近啟動順序中,早期啟動部分的通過/失敗狀態。早期啟動是指從 UEFI 韌體啟動開始,到其將控制權交給系統啟動載入程式為止的啟動順序。
    • 「Late Boot Validation」(後期啟動驗證) 會顯示最後一個啟動順序中,後期啟動部分的通過/失敗狀態。後期啟動是指系統啟動載入程式到作業完成為止的啟動順序,包括載入作業系統核心。
  9. 針對「Filter」(篩選器),選擇依 [status=failed] (狀態為失敗) 進行篩選。

  10. 針對「Group By」(分組依據),選擇依 [status] (狀態) 進行分組。

  11. 針對「Condition triggers if」(符合下列情況時觸發條件),選取 [Any time series violates]。

  12. 針對「Condition」(條件),指定 [is above 0 for 1 minute]。

  13. 按一下 [Save Condition] (儲存條件)

  14. 新增一或多則通知

  15. 視需要新增說明文件,協助通知接收者瞭解如何處理快訊。

  16. 為政策命名

  17. 選擇 [Save Policy] (儲存政策)。

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

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

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

您可以匯出 Stackdriver 記錄,並在 Cloud Functions 等其他服務中加以處理,藉此自動針對啟動驗證事件發出回應。詳情請參閱記錄匯出總覽自動發出對完整性驗證失敗的回應一文。

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

  1. 前往「VM instances」(VM 執行個體) 頁面
  2. 按一下要查看資料的執行個體 ID,開啟「VM instance details」(VM 執行個體詳細資料) 頁面。
  3. 按一下「Logs」(記錄) 下的 [Stackdriver 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 執行個體必須處於運作狀態。

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

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

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

gcloud

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

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

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

API

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

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

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

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件