Managed Lustre の顧客管理の暗号鍵

デフォルトでは、Google Cloud Managed Lustre は保存されているお客様のコンテンツを 暗号化します。Managed Lustre は、お客様が追加の操作を行うことなく 暗号化を処理します。このオプションは、Google のデフォルトの暗号化と呼ばれます。

暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵 (CMEK)を、Cloud KMS の 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 の割り当てをご覧ください。

制限事項

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

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

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

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

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

Google Cloud コンソール ユーザー

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

ここで

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

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