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

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

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

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

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