Shielded VM の整合性モニタリング

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このトピックでは、Cloud Monitoring を使用して整合性モニタリングを有効化している Shielded VM インスタンス起動時の整合性をモニタリングし、整合性検証の失敗の原因を特定して、整合性ポリシー ベースラインを更新する方法を説明します。

Monitoring を使用して VM 起動時の整合性をモニタリングする

Cloud Monitoring を使用して、整合性検証イベントを表示し、アラートを設定します。また、Cloud Logging を使用して、これらのイベントの詳細を確認します。

整合性検証イベントを表示する

Metrics Explorer を使用してモニタリング対象リソースの指標を表示する手順は次のとおりです。

  1. Google Cloud Console で、Monitoring の [Metrics Explorer] ページに移動します。
  2. Metrics Explorer に移動

  3. ツールバーで [エクスプローラ] タブを選択します。
  4. [CONFIGURATION] タブを選択します。
  5. [指標を選択] メニューを開いて、フィルタバーに「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. [適用] をクリックします。
  6. 省略可: データの表示方法を構成するには、フィルタを追加し、[Group By]、[Aggregator]、グラフタイプの各メニューを使用します。たとえば、リソースラベルや指標ラベルごとにグループ化できます。詳細については、Metrics Explorer 使用時の指標の選択をご覧ください。
  7. 省略可: グラフの設定を変更します。
    • 割り当てと、1 日に 1 つのサンプルを報告するその他の指標については、期間を 1 週間以上に設定し、プロットタイプを [積み上げ棒グラフ] に設定します。
    • 分布値の指標の場合、グラフの種類を [ヒートマップ グラフ] に設定します。

整合性検証イベントに基づくアラートの設定

VM インスタンスでブート検証失敗が発生した場合に通知を受け取るには、[Early Boot Validation] 指標と [Late Boot Validation] 指標の値に基づくアラートを設定します。アラートについては、アラートの概要をご覧ください。

整合性検証イベントの詳細を表示する

  1. [VM インスタンス] ページに移動
  2. インスタンス ID をクリックして、[VM インスタンスの詳細] ページを開きます。
  3. [ログ] で [Cloud Logging] をクリックします。
  4. 確認する earlyBootReportEvent または lateBootReportEvent のログエントリを見つけます。
  5. ログエントリ > jsonPayload > earlyBootReportEvent または lateBootReportEvent を必要に応じて展開します。そのセクション内にある policyEvaluationPassed 要素が、ブート シーケンスの該当する部分が整合性ポリシー ベースラインに対する検証に合格したかどうかを識別します。
  6. actualMeasurements セクションを展開します。その中にある番号付きの要素を展開して、前回のブート シーケンスで保存されたプラットフォーム構成レジスタ(PCR)値を確認します。PCR 値は、番号付きの要素内の value 要素に保存されています。PCR 値は、前回のブート シーケンスで使用されたブート コンポーネントとコンポーネント読み込み順を識別します。この PCR 値が整合性ポリシー ベースラインと比較されて、VM インスタンスのブート シーケンスに変更があったかどうかが判別されます。PCR の意味について詳しくは、整合性モニタリング イベントをご覧ください。
  7. policyMeasurements セクションを展開して、整合性ポリシー ベースライン用に保存された PCR 値を確認します。

整合性検証イベントに対するレスポンスの自動化

Cloud Functions などの別のサービスに Cloud Logging のログをエクスポートして処理することで、ブート検証イベントに対するレスポンスを自動化できます。詳細については、ルーティングとストレージの概要整合性検証の失敗に対するレスポンスの自動化をご覧ください。

起動時の整合性検証の失敗原因を特定する

  1. [VM インスタンス] ページに移動
  2. インスタンス ID をクリックして、[VM インスタンスの詳細] ページを開きます。
  3. [ログ] で [Cloud Logging] をクリックします。
  4. 最新の earlyBootReportEvent ログエントリと lateBootReportEvent ログエントリを見つけて、どちらのエントリで policyEvaluationPassed 値が false になっているかを確認します。
  5. ログエントリ > jsonPayload > earlyBootReportEvent または lateBootReportEvent を必要に応じて展開します。
  6. actualMeasurements セクションと policyMeasurements セクションを展開します。それぞれのセクション内にある番号付きの要素を展開して、前回のブート シーケンスと整合性ポリシー ベースラインのそれぞれで保存されたプラットフォーム構成レジスタ(PCR)値を確認します。PCR 値は、前回のブート シーケンスと整合性ポリシー ベースラインで使用されている、ブート コンポーネントとコンポーネント読み込み順を識別します。
  7. actualMeasurements セクションと policyMeasurements セクションの PCR 値を比較して、前回のブート シーケンスと整合性ポリシー ベースラインとの間の差異がどこにあるのかを判断します。どちらの比較であっても、異なる値を示したものが検証を失敗させた原因です。これらのセクション内の要素の番号が PCR の番号に対応していることはほとんどないという点に注意してください。また、actualMeasurementspolicyMeasurements で同じように番号が付けられている要素が、異なる PCR を表す場合があります。たとえば Windows と Linux のアーリーブート シーケンスでは、actualMeasurements 内の要素 3policyMeasurements 内の要素 2 はどちらも PCR7 を表します。

  8. 整合性モニタリング イベントを確認して、変更された PCR が表す内容を判断し、それが予想される変更かどうかを調査します。

整合性ポリシー ベースラインの更新

初期の整合性ポリシー ベースラインは、インスタンスの作成時に、暗黙的に信頼されているブートイメージから導出されます。ベースラインを更新すると、現在のインスタンス構成を使用して整合性ポリシー ベースラインが更新されます。ベースラインを更新するときは、VM インスタンスが実行中でなければなりません。

インスタンス構成で、予定されていたブート固有の変更(カーネルの更新、ドライバのインストールなど)を行った後、ベースラインを更新しないと、整合性検証が失敗することになります。予期しない整合性検証エラーが発生した場合は、エラーの理由を調査し、必要に応じてインスタンスを停止するよう準備してください。

整合性ポリシー ベースラインを更新するには、setShieldedInstanceIntegrityPolicy 権限が必要です。

整合性ポリシー ベースラインを更新する手順は次のとおりです。

gcloud

VM インスタンスの整合性ポリシー ベースラインを更新するには、compute instances update コマンドと --shielded-learn-integrity-policy フラグを使用します。

次の例では、my-instance VM インスタンスの整合性ポリシー ベースラインをリセットします。

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

API

VM インスタンスの整合性ポリシー ベースラインを更新するには、setShieldedInstanceIntegrityPolicy メソッドを使用し、リクエスト本文のアイテムとして updateAutoLearnPolicy を指定します。

次の例では、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
}

次のステップ