顧客管理の暗号鍵(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 を使用するには、キーリングを作成する必要があります。キーリングは、Cloud TPU を作成する予定のロケーションと同じロケーションに作成する必要があります。たとえば、us-central1-a ゾーンにある Cloud TPU は、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. [アクセスを許可] をクリックします。[Grant access to key] ペインが開きます。

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

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

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

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

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

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

TPU API または Queued Resources API を使用して TPU VM を作成するときに、CMEK を指定できます。 TPU VM を作成する際に、TPU API または Queued Resources API を使って CMEK を指定することができます。

TPU API

Cloud TPU API を使用して TPU VM を作成する際に CMEK を指定するには、tpu-vm create コマンドの --boot-disk 引数を使って、使用する暗号鍵を指定します。

gcloud compute tpus tpu-vm create TPU_NAME \
    --zone ZONE \
    --boot-disk kms-key=projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME \
    --version=TPU_RUNTIME_VERSION \
    --accelerator-type=ACCLERATOR_TYPE

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

  • TPU_NAME: TPU VM の名前。
  • ZONE: Cloud TPU を作成するゾーン
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • REGION: キーリングを作成したリージョン。
  • RING_NAME: キーリングの名前。
  • KEY_NAME: 鍵の名前。
  • TPU_RUNTIME_VERSION: Cloud TPU のソフトウェア バージョン
  • ACCELERATOR_TYPE: 作成する Cloud TPU のアクセラレータ タイプ。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。

Queued Resources API

Queued Resources API を使用して TPU VM を作成する際に CMEK を指定するには、queued-resources create コマンドの --bootdisk 引数を使って、使用する暗号鍵を指定します。

gcloud compute tpus queued-resources create QUEUED_RESOURCE_ID \
    --zone ZONE \
    --node-id NODE_ID \
    --boot-disk kms-key=projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME \
    --runtime-version=TPU_RUNTIME_VERSION \
    --accelerator-type=ACCLERATOR_TYPE

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

  • QUEUED_RESOURCE_ID: キューに格納されたリソース リクエストのユーザー割り当て ID。
  • ZONE: Cloud TPU を作成するゾーン
  • NODE_ID: キューに格納されたリソース リクエストの割り当て時に作成される Cloud TPU のユーザー割り当て ID。
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • REGION: キーリングを作成したリージョン。
  • RING_NAME: キーリングの名前。
  • KEY_NAME: 鍵の名前。
  • TPU_RUNTIME_VERSION: Cloud TPU のソフトウェア バージョン
  • ACCELERATOR_TYPE: 作成する Cloud TPU のアクセラレータ タイプ。TPU の各バージョンでサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。

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

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

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