VM インスタンス上の Shielded VM オプションの変更

このドキュメントでは、VM インスタンスで Shielded VM オプションを有効または無効にする方法について説明します。Shielded VM の機能をサポートするイメージを確認するには、OS イメージのセキュリティ機能をご覧ください。

概要

Compute Engine は Shielded VM インスタンスに対し、仮想トラステッド プラットフォーム モジュール(vTPM)整合性モニタリングのオプションをデフォルトで有効にします。vTPM を無効にすると、Compute Engine は整合性モニタリングも無効にします。これは、整合性モニタリングはメジャード ブートによって収集されたデータを使用するためです。

Compute Engine は、デフォルトではセキュアブートを有効にしません。これは、署名されていないドライバやその他の低レベルのソフトウェアには互換性がない場合があるためです。セキュアブートでは、システムが正規のソフトウェアのみを実行するよう、すべてのブート コンポーネントのデジタル署名を検証し、署名検証が失敗した場合はブートプロセスを停止します。これにより、ルートキットやブートキットなどの形式のカーネル マルウェアが VM の再起動後にも維持されることを防ぎます。Google では、代表的なテスト VM の起動に支障がなく、特定のワークロードに適している場合に、セキュアブートを有効にすることをおすすめします。

制限事項

Compute Engine VM インスタンスはセキュアブートをサポートしていますが、Compute Engine VM に読み込まれたイメージはサポートしていない場合があります。たとえば、ほとんどの Linux ディストリビューションは最新の x86 イメージでセキュアブートをサポートしていますが、ARM64 では必ずしもデフォルトでサポートされるわけではありません。セキュアブートが有効になっている場合、多くの Linux イメージは、ツリー外のカーネル モジュールの未署名ビルドの読み込みを拒否するよう構成されています。これは一般的に GPU ドライバに影響しますが、カーネル モジュールを必要とするセキュリティ モニタリング ツールにも影響することがあります。

このタスクに必要な権限

このタスクを行うには、次の権限が必要です。

  • VM インスタンスの compute.instances.updateShieldedInstanceConfig 権限

VM インスタンス上の Shielded VM オプションの変更

Shielded VM オプションを変更するには、次の手順に従います。

コンソール

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. インスタンス名をクリックして、[VM インスタンスの詳細] ページを開きます。

  3. [停止] をクリックします。

  4. インスタンスが停止したら、[編集] をクリックします。

  5. [Shielded VM] セクションで、Shielded VM オプションを変更します。

    • [セキュアブートをオンにする] を切り替えてセキュアブートを有効にします。Compute Engine のデフォルトでは、セキュアブートは有効になっていません。これは、署名されていないドライバやその他の低レベルのソフトウェアには互換性がない場合があるためです。可能であれば、セキュアブートを有効にすることをおすすめします。

    • 仮想トラステッド プラットフォーム モジュール(vTPM)無効にする場合は、[vTPM をオンにする] を切り替えます。デフォルトでは、Compute Engine は仮想トラステッド プラットフォーム モジュール(vTPM)を有効にします。

    • 整合性モニタリングを無効にする場合は、[整合性のモニタリングを有効にする] を切り替えます。デフォルトでは、Compute Engine は整合性モニタリングを有効にします。

  6. [保存] をクリックします。

  7. [開始] をクリックしてインスタンスを起動します。

gcloud

  1. インスタンスを停止します。

    gcloud compute instances stop VM_NAME
    

    VM_NAME は、停止する VM の名前に置き換えます。

  2. Shielded VM オプションを更新します。

    gcloud compute instances update VM_NAME \
        [--[no-]shielded-secure-boot] \
        [--[no-]shielded-vtpm] \
        [--[no-]shielded-integrity-monitoring]

    VM_NAME は、Shielded VM オプションを更新する VM の名前に置き換えます。

    shielded-secure-boot: Compute Engine は、デフォルトではセキュアブートを有効にしません。これは、署名されていないドライバやその他の低レベルのソフトウェアには互換性がない場合があるためです。可能であれば、セキュアブートを有効にすることをおすすめします。

    • --shielded-secure-boot フラグを使用してセキュアブートを有効にします(推奨)。
    • --no-shielded-secure-boot を使用してセキュアブートを無効にします。

    shielded-vtpm: 仮想トラステッド プラットフォーム モジュール(vTPM)は、デフォルトで有効になっています。+ --shielded-vtpm を使用して有効にします(デフォルト) + --no-shielded-vtpm フラグを使用して無効にします

    shielded-integrity-monitoring: 整合性モニタリングはデフォルトで有効になっています。+ --shielded-integrity-monitoring を使用して有効にします(デフォルト) + --no-shielded-integrity-monitoring フラグを使用して無効にします

  3. インスタンスを起動するには、以下を実行します。

    gcloud compute instances start VM_NAME
    

    VM_NAME は、起動する VM の名前に置き換えます。

API

  1. インスタンスを停止します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    

    次のように置き換えます。

    • PROJECT_ID: 停止する VM が属しているプロジェクト
    • ZONE: 停止する VM があるゾーン
    • VM_NAME: 停止する VM
  2. instances.updateShieldedInstanceConfig を使用して、インスタンスの Shielded VM オプションを有効または無効にします。

    PATCH https://compute.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/updateShieldedInstanceConfig
    
    {
     "enableSecureBoot": {true|false},
     "enableVtpm": {true|false},
     "enableIntegrityMonitoring": {true|false}
    }
    

    次のように置き換えます。

    • PROJECT_ID: Shielded VM オプションを有効または無効にする対象の VM が属しているプロジェクト。
    • ZONE: Shielded VM オプションを有効または無効にする対象の VM があるゾーン。
    • VM_NAME: Shielded VM オプションを有効または無効にする対象の VM。

    enableSecureBoot: Compute Engine は、デフォルトではセキュアブートを有効にしません。これは、署名されていないドライバやその他の低レベルのソフトウェアには互換性がない場合があるためです。可能であれば、セキュアブートを有効にすることをおすすめします。

    enableVtpm: Compute Engine はデフォルトで仮想トラステッド プラットフォーム モジュール(vTPM)を有効にします。

    enableIntegrityMonitoring: Compute Engine はデフォルトで整合性モニタリングを有効にします。

  3. インスタンスを起動するには、以下を実行します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
    

    次のように置き換えます。

    • PROJECT_ID: 起動する VM が属しているプロジェクト
    • ZONE: 起動する VM があるゾーン
    • VM_NAME: 起動する VM

次のステップ