デフォルトでは、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 で保護されます。
- ファイルデータ
- ファイル名などのファイル システム メタデータ
制限事項
次の制限が適用されます。
Google Kubernetes Engine では、CMEK で保護された Managed Lustre インスタンスの動的プロビジョニングはサポートされていませんが、静的プロビジョニングはサポートされています。
Cluster Toolkit は、CMEK で保護された Managed Lustre インスタンスをサポートしていません。
VPC Service Controls の境界内で CMEK で保護された Managed Lustre インスタンスを作成する場合、Cloud KMS 鍵は次のいずれかである必要があります。
- 同じ VPC Service Controls 境界内。
- 下り(外向き)ルールを使用してアクセス可能。詳細については、 顧客管理の暗号鍵(CMEK)で VPC Service Controls を使用する をご覧ください。
Cloud KMS 鍵を作成する
CMEK 対応の Lustre インスタンスを作成する前に、Cloud KMS キーリングと Cloud KMS 鍵が必要です。
Managed Lustre は、次の 3 つの 保護レベルをサポートしています。
- ソフトウェア(
SOFTWARE) - ハードウェア(
HSM) - インターネット経由の外部(
EXTERNAL)
鍵を作成する際は、Managed Lustre インスタンスを含むプロジェクトとは異なるプロジェクトに Cloud KMS 鍵を作成することをおすすめします。職掌分散をご覧ください。
Cloud KMS 鍵は、作成する Managed Lustre インスタンスと同じリージョンに作成する必要があります。
キーを作成するには:
- まだキーリングがない場合は、 キーリングを作成します。
- Cloud KMS 鍵を作成します。
Managed Lustre サービス エージェントに IAM 権限を付与する
Managed Lustre は、サービス エージェントを使用してリソースにアクセスし、ユーザーに代わってアクションを実行します。サービス エージェントに IAM ロールを付与して、アクセスを管理します。Managed Lustre サービス エージェントは、Managed Lustre インスタンスを作成すると自動的に作成されます。
サービス エージェント ID の形式は
service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com です。
コンソールを使用して CMEK で保護された Managed Lustre インスタンスを作成する場合は、この セクションをスキップできます。 Google Cloud コンソールでは、インスタンス作成フローの一部として必要な権限が付与されます。 Google Cloud
サービス エージェントを作成または取得する
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 インスタンスをすでに作成している場合
サービス エージェント ID を作成するには、プロジェクト番号を取得します。 PROJECT_NUMBER は プロジェクト ID と同じではありません。
- プロジェクト ID は、文字、数字、ハイフンの組み合わせで構成される一意の文字列です。 プロジェクトを作成するときにプロジェクト ID を指定します。例:
example-project-123 - プロジェクト番号は、数字のみで構成されるプロジェクトに対して自動的に生成される一意の識別子です。 例:
1234567890
特定のプロジェクト ID の PROJECT_NUMBER を取得するには、
gcloud projects describeコマンドを使用します。gcloud projects describe PROJECT_ID --format="value(projectNumber)"- プロジェクト ID は、文字、数字、ハイフンの組み合わせで構成される一意の文字列です。 プロジェクトを作成するときにプロジェクト ID を指定します。例:
返されたプロジェクト番号をサービス エージェント ID にコピーします。
service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com次のステップで使用するサービス エージェント 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
[暗号化] セクションで、[Cloud KMS 鍵] を選択します。
[鍵管理のタイプ] で [Cloud KMS] を選択し、鍵を選択します。鍵が別のプロジェクトにある場合は(推奨)、[プロジェクトを切り替え]をクリックして鍵プロジェクトを選択し、鍵を選択します。Cloud KMS 鍵は、作成する Managed Lustre インスタンスと同じリージョンに存在する必要があります。
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)"
ここで
- ORGANIZATION_ID は組織の数値 ID です。 組織リソース ID を取得するをご覧ください。
[鍵のインベントリ] ページで鍵情報を表示することもできます。