Compute Engine で顧客管理の暗号鍵(CMEK)を使用して TPU VM ブートディスクを暗号化する

Cloud TPU はデフォルトで、保存中のお客様コンテンツを暗号化します。暗号化処理は Cloud TPU が自動で行うため、ユーザー側で特別な操作を行う必要はありません。このオプションは、Google のデフォルトの暗号化と呼ばれます。

自分で暗号鍵を管理したい場合は、Cloud KMS において、Cloud TPU を含む CMEK 対応サービスで顧客管理の暗号鍵(CMEK)を使用できます。Cloud KMS 鍵を使用すると、保護レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。Cloud KMS を使用すると、監査ログを表示し、鍵のライフサイクルを管理することもできます。データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵の制御と管理を行います。

CMEK を使用してリソースを設定した後は、Cloud TPU リソースへのアクセスは、Google のデフォルトの暗号化を使用する場合と同様です。暗号化オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。

CMEK を使用するには、キーリングを作成します。キーリングは、TPU VM またはスライスを作成するロケーションと同じロケーションに作成します。たとえば、us-central1-a ゾーンにある TPU VM は、us-central1 リージョンにある鍵しか使用できません。

次に、キーリングの中に鍵を作成します。CMEK を作成した後、Compute Engine サービス アカウントが鍵にアクセスできるようにします。

鍵を使用する権限を付与する

Google Cloud プロジェクトの Compute Engine サービス エージェントに、Cloud KMS 鍵に対する Cloud KMS CryptoKey 暗号化/復号roles/cloudkms.cryptoKeyEncrypterDecrypter)の IAM ロールを付与します。このロールを付与すると、Compute Engine サービスが暗号鍵にアクセスして使用できるようになります。

Compute Engine サービス エージェントに roles/cloudkms.cryptoKeyEncrypterDecrypter ロールを付与するには、次のいずれかのオプションを選択します。

gcloud

次のコマンドを実行します。

gcloud kms keys add-iam-policy-binding KEY_NAME \
    --location LOCATION \
    --keyring RING_NAME \
    --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project KEY_PROJECT_ID

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

  • KEY_NAME: キーの名前。
  • LOCATION: キーリングを作成したロケーション。
  • RING_NAME: キーリングの名前。
  • PROJECT_NUMBER: Google Cloud プロジェクトの番号。
  • KEY_PROJECT_ID: 鍵プロジェクト ID。

コンソール

  1. Google Cloud コンソールで、[鍵管理] ページに移動します。

    [鍵管理] に移動

  2. 鍵を含むキーリングの名前をクリックします。

  3. 変更する鍵の名前をクリックします。

  4. [権限] をクリックします。

  5. [アクセス権を付与] をクリックします。[アクセス権を付与] ペインが開きます。

  6. [新しいプリンシパル] フィールドに、Compute Engine サービス エージェントの名前を入力します。

    service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
    

    PROJECT_NUMBER は、使用する Google Cloud プロジェクト番号に置き換えます。

  7. [ロールを選択] メニューで、[Cloud KMS 暗号鍵の暗号化 / 復号] を選択します。

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

CMEK を使用して TPU VM を作成する

--boot-disk-kms-key フラグを使用して、TPU VM またはマネージド インスタンス グループ(MIG)のインスタンス テンプレートを作成するときに CMEK を指定できます。

CMEK を使用して単一の TPU VM インスタンスを作成する

単一の TPU VM を作成する際に CMEK を指定するには、gcloud compute instances create コマンドで --boot-disk-kms-key フラグを使用します。

  gcloud compute instances create TPU_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --maintenance-policy=TERMINATE \
    --boot-disk-kms-key=projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME

各プレースホルダを次のように置き換えます。

  • TPU_NAME: TPU VM の名前。
  • MACHINE_TYPE: TPU VM のマシンタイプ(例: ct6e-standard-8t)。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
  • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。
  • ZONE: TPU VM のゾーン(例: us-central1-b)。
  • KEY_PROJECT_ID: 暗号鍵を含むプロジェクト。
  • REGION: キーリングを作成したリージョン。
  • RING_NAME: キーリングの名前。
  • KEY_NAME: キーの名前。

CMEK を使用して単一ホスト スライスを含む MIG を作成する

MIG で CMEK を使用するには、インスタンス テンプレートの作成時に鍵を指定します。

  1. --boot-disk-kms-key フラグを使用してインスタンス テンプレートを作成します。

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --machine-type=MACHINE_TYPE \
        --maintenance-policy=TERMINATE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --boot-disk-kms-key=projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    

    各プレースホルダを次のように置き換えます。

    • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
    • MACHINE_TYPE: TPU VM のマシンタイプct6e-standard-8t など)。
    • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
    • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。
    • KEY_PROJECT_ID: 暗号鍵を含むプロジェクト。
    • REGION: キーリングを作成したリージョン。
    • RING_NAME: キーリングの名前。
    • KEY_NAME: キーの名前。
  2. テンプレートを使用して MIG を作成します。

    gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --template=INSTANCE_TEMPLATE_NAME \
        --zone=ZONE \
        --size=MIG_SIZE
    

    各プレースホルダを次のように置き換えます。

    • MIG_NAME: MIG の名前。
    • MIG_SIZE: MIG 内の TPU VM の数。
    • INSTANCE_TEMPLATE_NAME: 使用するインスタンス テンプレートの名前。
    • ZONE: TPU VM のゾーン(例: us-central1-b)。
    • MIG_SIZE: MIG 内の TPU VM の数。単一ホスト TPU VM の場合は、サイズを 1 に設定します。

CMEK を使用してマルチホスト スライスを含む MIG を作成する

マルチホスト スライス MIG を作成する場合は、インスタンス テンプレートで暗号鍵を指定します。

  1. インスタンス テンプレートを作成します。

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME
        --machine-type=MACHINE_TYPE \
        --maintenance-policy=TERMINATE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --boot-disk-kms-key=projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    

    各プレースホルダを次のように置き換えます。

    • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
    • MACHINE_TYPE: TPU VM のマシンタイプct6e-standard-8t など)。
    • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
    • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。
    • KEY_PROJECT_ID: 暗号鍵を含むプロジェクト。
    • REGION: キーリングを作成したリージョン。
    • RING_NAME: キーリングの名前。
    • KEY_NAME: キーの名前。
  2. ワークロード ポリシーを作成します。

    次のコマンドは、ワークロード ポリシーを作成します。

    gcloud compute resource-policies create workload WORKLOAD_POLICY_NAME \
    --type=high-throughput \
    --accelerator-topology=TOPOLOGY
    

    各プレースホルダを次のように置き換えます。

    • WORKLOAD_POLICY_NAME: ワークロード ポリシーの名前。
    • TOPOLOGY: TPU VM のトポロジ(4x4x8 など)。
  3. MIG を作成します。

    gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_NAME \
        --zone=ZONE \
        --default-action-on-vm-failure=do-nothing \
        --workload-policy=WORKLOAD_POLICY_NAME
    

    各プレースホルダを次のように置き換えます。

    • MIG_NAME: MIG の名前。
    • MIG_SIZE: MIG 内の VM の数。この値は、ワークロード ポリシーで指定されたトポロジに対して検証されます。
    • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
    • ZONE: MIG のゾーン
    • WORKLOAD_POLICY_NAME: ワークロード ポリシーの名前。

GKE を使用して CMEK で TPU VM を作成する方法については、GKE ドキュメントの顧客管理の暗号鍵を使用するをご覧ください。

削除または取り消された CMEK

CMEK が取り消されたり削除されたりした場合でも、その鍵で暗号化されたブートディスクを使っている TPU VM は自動的にシャットダウンされません。TPU VM は、VM をシャットダウンまたは再起動するまで、暗号化されたブートディスクのデータにアクセスします。これにより、取り消されたり削除されたりした鍵へのアクセスを復元すれば、データを復元することができます。鍵を再度有効化すれば、TPU VM を起動または修復でき、ブートディスクは正常に復号されて読み込まれます。