Managed Lustre の顧客管理の暗号鍵

デフォルトでは、Google Cloud Managed Lustre はお客様のコンテンツを保存時に暗号化します。Managed Lustre では、ユーザーが追加で操作を行わなくても、暗号化が行われます。このオプションは、Google のデフォルトの暗号化と呼ばれます。

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

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

次の Managed Lustre データは CMEK で保護されます。

  • ファイルデータ
  • ファイル名などのファイル システム メタデータ

Managed Lustre で CMEK を使用すると、プロジェクトで Cloud KMS 暗号リクエストの割り当てが消費されることがあります。CMEK で暗号化されたインスタンスは、Managed Lustre でデータを読み書きするときに割り当てを消費します。 CMEK 鍵を使用する暗号化と復号のオペレーションは、外部(Cloud EKM)鍵を使用する場合にのみ、Cloud KMS の割り当てに影響します。 詳細については、Cloud KMS の割り当てをご覧ください。

制限事項

次の制限が適用されます。

  • CMEK で保護された Managed Lustre インスタンスの動的プロビジョニングは Google Kubernetes Engine ではサポートされていませんが、静的プロビジョニングはサポートされています。

  • VPC Service Controls の境界内に CMEK で保護された Managed Lustre インスタンスを作成する場合、Cloud KMS 鍵は次のいずれかである必要があります。

Cloud KMS 鍵を作成する

CMEK 対応の Lustre インスタンスを作成する前に、Cloud KMS キーリングと Cloud KMS 鍵が必要です。

Managed Lustre は、次の 3 つの保護レベルをサポートしています。

  • ソフトウェア(SOFTWARE)
  • ハードウェア(HSM)
  • インターネット経由の外部(EXTERNAL)

鍵を作成するときは、Managed Lustre インスタンスを含むプロジェクトとは異なるプロジェクトに Cloud KMS 鍵を作成することをおすすめします。職掌分散をご覧ください。

Cloud KMS 鍵は、作成する Managed Lustre インスタンスと同じリージョンに作成する必要があります。

キーを作成するには:

  1. まだ作成していない場合は、キーリングを作成します。
  2. Cloud KMS 鍵を作成します。

Managed Lustre サービス エージェントに IAM 権限を付与する

Managed Lustre は、サービス エージェントを使用してリソースにアクセスし、ユーザーに代わって操作を行います。CMEK を使用するには、サービス エージェントに Cloud KMS 鍵の roles/cloudkms.cryptoKeyEncrypterDecrypter IAM ロールを付与する必要があります。

Google Cloud コンソール ユーザー

Google Cloud コンソールを使用して CMEK で保護された Managed Lustre インスタンスを作成する場合は、このセクションをスキップできます。 Google Cloud コンソールは、インスタンス作成フローの一部として必要な権限を付与します。

CMEK 対応の Managed Lustre インスタンスを作成するに移動します。

プロジェクトのサービス エージェント ID が不明な場合は、サービス エージェント ID を作成または取得するをご覧ください。

サービス エージェントに権限を付与する

サービス エージェントにロールを付与するには、gcloud kms keys add-iam-policy-binding コマンドを使用します。

gcloud kms keys add-iam-policy-binding KEY_NAME \
  --keyring=KEY_RING \
  --location=REGION \
  --project=KMS_PROJECT_ID \
  --member=serviceAccount:SERVICE_AGENT_IDENTITY \
  --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

次の変数を置き換えます。

  • KEY_NAME: Cloud KMS 鍵の名前。
  • KEY_RING: 鍵を含むキーリングの名前。
  • REGION: キーリングが配置されているリージョン。
  • KMS_PROJECT_ID: Cloud KMS 鍵を含むプロジェクトの ID。
  • SERVICE_AGENT_IDENTITY: Managed Lustre サービス エージェント ID(service-<var>PROJECT_NUMBER</var>@gcp-sa-lustre.)。

CMEK 対応の Managed Lustre インスタンスを作成する

CMEK で保護された Managed Lustre インスタンスを作成するには、次のいずれかのインターフェースを使用します。Cluster Toolkit ブループリントで CMEK を構成するには、Cluster Toolkit のドキュメントの顧客管理の暗号鍵(CMEK)を使用するをご覧ください。

gcloud

gcloud を使用して CMEK で保護されたインスタンスを作成するには、インスタンスを作成するの手順に沿って操作します。次のように、鍵識別子を --kms-key-name の値として指定します。

gcloud lustre instance create INSTANCE_ID \
  --filesystem=FILESYSTEM_NAME \
  --per-unit-storage-throughput=PERF_TIER \
  --capacity-gib=CAPACITY_GIB \
  --location=ZONE \
  --network=NETWORK_NAME \
  --project=PROJECT_ID \
  --kms-key-name=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

Cloud KMS 鍵は、作成する Managed Lustre インスタンスと同じリージョンに存在する必要があります。

REST

REST API を使用して CMEK で保護されたインスタンスを作成するには、インスタンスを作成するの手順に沿って操作します。次のように、鍵識別子を kmsKey の値として指定します。

POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances?instanceId=INSTANCE_NAME
Authorization: Bearer AUTH_TOKEN
{
  "filesystem": "FILESYSTEM_NAME",
  "perUnitStorageThroughput": PERF_TIER,
  "capacityGib": CAPACITY_GIB,
  "network": "NETWORK_NAME",
  "kmsKey": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"
}

Cloud KMS 鍵は、作成する Managed Lustre インスタンスと同じリージョンに存在する必要があります。

フィールドとその説明の完全なリストについては、Instance リソースのリファレンス ドキュメントをご覧ください。

Google Cloud コンソール

Google Cloud コンソールを使用して CMEK で保護されたインスタンスを作成するには、インスタンスを作成するの手順に沿って操作します。 Google Cloud コンソールの [インスタンスの作成] ページで、次の操作を行います。

  1. [暗号化] セクションで、[Cloud KMS 鍵] を選択します。

  2. 鍵管理タイプとして [Cloud KMS] を選択し、鍵を選択します。鍵が別のプロジェクトにある場合(推奨)、[プロジェクトを切り替え] をクリックして鍵プロジェクトを選択し、鍵を選択します。Cloud KMS 鍵は、作成する Managed Lustre インスタンスと同じリージョンに存在する必要があります。

  3. Managed Lustre サービス エージェントに CMEK を使用するために必要な権限がない場合は、cloudkms.cryptoKeyEncrypterDecrypter ロールを付与するよう求められます。[付与] をクリックしてロールを適用します。

Cloud KMS 鍵が使用できない場合、または作成オペレーションの開始時に権限の問題がある場合、オペレーションは失敗し、FAILED_PRECONDITION エラーが返されます。

鍵管理

Cloud Key Management Service 鍵は、ローテーション、無効化、再有効化、破棄が可能です。さまざまな理由で利用できなくなる可能性があります。

鍵のローテーション

Cloud KMS 鍵をローテーションできます。鍵をローテーションすると、新しい鍵バージョンが作成されます。

  • 鍵をローテーションしても、Managed Lustre インスタンスのデータは再暗号化されません。Managed Lustre は、データの復号や再暗号化をサポートしていません。

  • Managed Lustre インスタンスの既存の容量は、インスタンスの作成時に使用されていた鍵のバージョンで引き続き暗号化されます。

  • インスタンスのストレージ容量を増やすと、新しい容量は、容量増加リクエストを行ったときにプライマリである鍵バージョンによって保護されます。その容量に書き込まれたデータは、その鍵バージョンによって保護されます。

つまり、鍵バージョンのローテーション後にインスタンスの容量を増やした場合、Managed Lustre インスタンスを暗号化する複数の鍵バージョンが存在する可能性があります。

鍵を無効にする

鍵バージョンを無効にできます。Managed Lustre インスタンスで使用されている鍵バージョンが無効になっている間、インスタンスは一時停止されます。インスタンスを再開するには、インスタンスを保護するすべての鍵バージョンを使用可能な状態に戻します。一時停止されたインスタンスについては、使用できない鍵をご覧ください。

詳細については、鍵バージョンを有効または無効にするをご覧ください。

鍵を再度有効にする

鍵バージョンが無効になっている場合は、Cloud KMS API を使用して再度有効にできます。鍵バージョンを有効または無効にするをご覧ください。

Managed Lustre インスタンスを再開するには、ストレージ容量を暗号化しているすべてのバージョンの鍵を有効にするか、復元する必要があります。

必要なすべての鍵が ENABLED 状態に戻ると、Managed Lustre は鍵の変更を自動的に検出し、インスタンスを再起動します。インスタンスの状態が ACTIVE になり、Managed Lustre サービスが通常のオペレーションを再開します。I/O やその他の長時間実行オペレーションを実行できます。

鍵を破棄する

Cloud KMS 鍵バージョンは破棄できます。つまり、鍵マテリアルは完全に削除されます。

Cloud KMS 鍵をすぐに破棄することはできません。代わりに、鍵バージョンの破棄をスケジュールする必要があります。スケジュールされた期間中は、鍵バージョンを復元して破棄をキャンセルできます。詳細については、鍵バージョンの破棄と復元をご覧ください。

破棄がスケジュールされている鍵バージョンは使用できません。その鍵バージョンで保護されている Managed Lustre インスタンスは一時停止されます。一時停止されたインスタンスについては、使用できない鍵をご覧ください。

破棄された鍵バージョンは復元できません。インスタンスは完全に停止したままになります。Managed Lustre インスタンスで使用できるオペレーションは、インスタンスの削除のみです。

使用できないキー

鍵が使用できなくなる理由は次のとおりです。

  • 鍵が無効になる。
  • 鍵が破棄されているか、破棄がスケジュール設定されている。
  • サービス エージェントから必要な権限が削除されている。
  • Cloud KMS 鍵のプロジェクトで課金が無効になっており、1 時間以上無効のままになっている。
  • 外部鍵に 1 時間以上アクセスできない。

このような場合、イベントから数分以内に Managed Lustre インスタンスがシャットダウンされ、インスタンスの状態が SUSPENDED に設定されます。

SUSPENDED インスタンスは、鍵を再度使用可能にすることで復元できます。

停止の理由として考えられるのは次のとおりです。

キーに対するアクション インスタンスの状態 停止理由 再度有効にできる
無効にする SUSPENDED KEY_DISABLE ○
破棄をスケジュールする SUSPENDED KEY_DESTROY_SCHEDULED ○
破棄 SUSPENDED KEY_DESTROY ×
権限を削除する SUSPENDED PERMISSION_DENIED ○
1 時間課金を無効にする SUSPENDED BILLING_DISABLED ○
EKM 鍵に 1 時間アクセスできない SUSPENDED EKM_KEY_UNREACHABLE ○

インスタンスが一時停止されると、次のようになります。

  • インスタンスの更新やインポート / エクスポートなどの長時間実行オペレーションはブロックされ、FAILED_PRECONDITION エラーが返されます。
  • サーバーノードがシャットダウンされるまで、I/O オペレーションは応答を停止します。この処理は 30 分以内に完了します。
  • 許可される長時間実行オペレーションは DeleteInstance のみです。

4 か月以上一時停止されているインスタンスは、再開できない場合があります。

停止中のインスタンスに対する課金

鍵が使用できないために Managed Lustre インスタンスが SUSPENDED 状態になった場合、インスタンスに対して引き続き料金が発生します。停止状態でも課金は一時停止されません。インスタンスに対する課金を停止するには、インスタンスを削除する必要があります。

また、使用中の鍵バージョンについては、Cloud KMS から別途請求されます。

鍵の使用状況を表示し、鍵バージョンを一覧表示する

Cloud KMS 鍵で保護されている組織内の Google Cloud リソースを表示できます。詳細については、鍵の使用状況を表示するをご覧ください。

Managed Lustre インスタンスで使用されている鍵バージョンの完全なリストを表示するには、gcloud kms inventory search-protected-resources コマンドを使用します。

gcloud kms inventory search-protected-resources \
  --keyname=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME \
  --scope=organizations/ORGANIZATION_ID \
  --filter="name:projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID" \
  --flatten="cryptoKeyVersions" \
  --format="value(cryptoKeyVersions)"

ここで

[鍵のインベントリ] ページで鍵の情報を確認することもできます。

[鍵のインベントリ] に移動