Managed Lustre の顧客管理の暗号鍵

デフォルトでは、Google Cloud Managed Lustre はお客様のコンテンツを保存時に暗号化します。マネージド 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 HSM)鍵または外部(Cloud EKM)鍵を使用する場合にのみ、Cloud KMS の割り当てに影響します。 詳細については、Cloud KMS の割り当てをご覧ください。

制限事項

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

Cluster Toolkit は、CMEK で保護されたマネージド Lustre インスタンスをサポートしていません。

VPC Service Controls は、CMEK で保護されたマネージド Lustre インスタンスをサポートしていません。VPC Service Controls の境界内で CMEK で保護されたインスタンスを作成しようとすると、インスタンス作成オペレーションは失敗します。

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 は、サービス エージェントを使用してリソースにアクセスし、ユーザーに代わってアクションを実行します。サービス エージェントに IAM ロールを付与して、アクセスを管理します。Managed Lustre サービス エージェントは、Managed Lustre インスタンスを作成すると自動的に作成されます。

サービス エージェント ID の形式は service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com です。

Google Cloud コンソール ユーザー

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

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

サービス エージェントを作成または取得する

Managed Lustre サービス エージェントがまだない場合

プロジェクトで Managed Lustre インスタンスを作成したことがない場合は、次のコマンドを実行してサービス エージェントを手動で作成します。

gcloud beta services identity create \
  --service=lustre.googleapis.com \
  --project=PROJECT_NUMBER_OR_ID

PROJECT_NUMBER_OR_ID は、マネージド Lustre インスタンスを作成するプロジェクトのプロジェクト番号または ID に置き換えます。出力は次のようになります。

Service identity created: service-1234567890@gcp-sa-lustre.iam.gserviceaccount.com

次の手順で使用するサービス エージェント ID の値をコピーします。

Managed Lustre インスタンスをすでに作成している場合

  1. サービス エージェント ID を作成するには、プロジェクト番号を取得します。PROJECT_NUMBERプロジェクト ID と同じではありません。

    • プロジェクト ID は、文字、数字、ハイフンの組み合わせで構成される一意の文字列です。プロジェクトを作成するときにプロジェクト ID を指定します。例: example-project-123
    • プロジェクト番号は、数字のみで構成される、プロジェクトに対して自動的に生成される一意の識別子です。例: 1234567890

    特定のプロジェクト ID の PROJECT_NUMBER を取得するには、gcloud projects describe コマンドを使用します。

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  2. 返されたプロジェクト番号をサービス エージェント ID にコピーします。

    service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com
    
  3. 次の手順で使用するサービス エージェント ID をコピーします。

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

Managed Lustre が鍵を使用してオペレーションを実行するには、承認が必要です。

Managed Lustre サービス エージェントに、Cloud KMS 鍵に対する roles/cloudkms.cryptoKeyEncrypterDecrypter IAM ロールを付与する必要があります。

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-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-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com 形式)。

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

CMEK で保護された Managed Lustre インスタンスを作成するには:

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 鍵は、作成するマネージド Lustre インスタンスと同じリージョンに存在する必要があります。

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

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

鍵管理

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

鍵のローテーション

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

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

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

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

つまり、鍵バージョンのローテーション後にインスタンスの容量を増やした場合、複数の鍵バージョンで Managed Lustre インスタンスを暗号化できます。

鍵を無効にする

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

詳細については、鍵バージョンの有効化と無効化をご覧ください。

鍵を再度有効にする

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

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

必要な鍵がすべて ENABLED 状態に戻ると、Managed Lustre は鍵の変更を自動的に検出し、インスタンスを再起動します。インスタンスの状態が ACTIVE になり、マネージド 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)"

ここで

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

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