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。
コンソール
- Google Cloud コンソールで、[鍵管理] ページに移動します。
鍵を含むキーリングの名前をクリックします。
変更する鍵の名前をクリックします。
[権限] をクリックします。
[アクセス権を付与] をクリックします。[アクセス権を付与] ペインが開きます。
[新しいプリンシパル] フィールドに、Compute Engine サービス エージェントの名前を入力します。
service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.comPROJECT_NUMBER は、使用する Google Cloud プロジェクト番号に置き換えます。
[ロールを選択] メニューで、[Cloud KMS 暗号鍵の暗号化 / 復号] を選択します。
[保存] をクリックします。
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 を使用するには、インスタンス テンプレートの作成時に鍵を指定します。
--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: キーの名前。
テンプレートを使用して 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 を作成する場合は、インスタンス テンプレートで暗号鍵を指定します。
インスタンス テンプレートを作成します。
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: キーの名前。
ワークロード ポリシーを作成します。
次のコマンドは、ワークロード ポリシーを作成します。
gcloud compute resource-policies create workload WORKLOAD_POLICY_NAME \ --type=high-throughput \ --accelerator-topology=TOPOLOGY各プレースホルダを次のように置き換えます。
- WORKLOAD_POLICY_NAME: ワークロード ポリシーの名前。
- TOPOLOGY: TPU VM のトポロジ(
4x4x8など)。
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 を起動または修復でき、ブートディスクは正常に復号されて読み込まれます。