このページでは、独自の暗号鍵を使用して Filestore インスタンスとバックアップのデータを暗号化する方法について説明します。
Google Cloud では、デフォルトで、Google が所有し管理する暗号鍵を使用して、自動的に保存されているデータを暗号化します。データを保護する鍵をより詳細に管理する必要がある場合、Filestore に顧客管理の暗号鍵を使用できます。
顧客管理の暗号鍵のオプション
Cloud Key Management Service は、顧客管理の暗号鍵(CMEK)をサポートしています。これは、ソフトウェア鍵として保存できるほかに、HSM クラスタに、または外部から Cloud External Key Manager(Cloud EKM)にハードウェア鍵として保存できます。いくつかのオプションがあります。
詳細については、Cloud Key Management Service をご覧ください。
Cloud External Key Manager
Filestore の Cloud EKM サポートの一般提供(GA)を開始しました。詳細については、Cloud External Key Manager をご覧ください。
EKM サービスの停止
設計上、外部鍵はサードパーティによって管理されます。このような場合、Google Cloud は鍵の可用性について責任を負いません。
外部鍵にアクセスできないことが External Key Manager(EKM)から Cloud Key Management Service(Cloud KMS)に通知されると、ユーザーに ekm_key_unreachable_detected
通知が送信されます。最大で 1 時間、インスタンスからオペレーションへのユーザー アクセスは制限されました。1 時間が経過しても鍵のステータスが変更されない場合は、次のアクションが適用されます。
- 鍵が無効になる。
- 暗号化と復号化のすべてのオペレーションが失敗する。
- Filestore インスタンスが一時停止される。
VM の再起動など、予定外のイベントが発生した場合は、1 時間前にインスタンスへのアクセスが停止されることがあります。
到達不能な鍵に関する通知は、Filestore インスタンスの詳細ページで確認できます。
また、最初に報告された通知から 1 時間以内に次のいずれかのオペレーションが実行された場合は、このオペレーションに関する ekm_key_unreachable_detected
通知もユーザーに送信されます。
サポートされている階層
次の表に、顧客管理の暗号鍵をサポートする Filestore サービスティアを示します。
階層 | CMEK のサポート |
---|---|
基本 HDD | × |
基本 SSD | × |
ゾーン | ○ |
リージョン | ○ |
Enterprise | ○ |
インスタンスで使用するキーリングと鍵を作成する
キーリングと鍵は Filestore インスタンスとは異なるプロジェクトに含めてもかまいませんが、同じロケーションに存在する必要があります。Filestore で使用する Cloud KMS キーリングと鍵がすでにある場合は、次のセクションに進んでください。それ以外の場合は、対称暗号鍵の作成の手順に従って、キーリングと鍵を作成します。
Filestore サービス アカウントに鍵へのアクセス権を付与する
顧客管理の暗号鍵を使用する Filestore インスタンスを作成するには、Filestore サービス アカウントに Cloud KMS 暗号鍵の暗号化 / 復号のロール(roles/cloudkms.cryptoKeyEncrypterDecrypter
)が必要です。
Filestore サービス アカウントは、プロジェクトで Filestore インスタンスを初めて作成するときに作成されます。Filestore サービス アカウントがない場合は、次の
services identity create
コマンドを実行します。gcloud beta services identity create --service=file.googleapis.com --project=INSTANCE_PROJECT_NUMBER_OR_ID
INSTANCE_PROJECT_NUMBER_OR_ID は、Filestore インスタンスを作成するプロジェクトのプロジェクト番号または ID に置き換えます。
projects add-iam-policy-binding
コマンドを実行して、Filestore サービス アカウントに Cloud KMS CryptoKey の暗号化/復号のロールを割り当てます。gcloud projects add-iam-policy-binding KMS_PROJECT_NUMBER_OR_ID \ --member serviceAccount:service-INSTANCE_PROJECT_NUMBER@cloud-filer.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
以下を置き換えます。
- KMS_PROJECT_NUMBER_OR_ID は、使用する Cloud KMS 鍵を含むプロジェクトのプロジェクト番号または ID に置き換えます。
- INSTANCE_PROJECT_NUMBER は、Filestore インスタンスを作成するプロジェクトのプロジェクト番号(プロジェクト ID ではない)に置き換えます。
Cloud KMS 鍵を使用するインスタンスを作成する
Google Cloud コンソール
データの暗号化に Cloud KMS 鍵を使用するインスタンスを作成するには:
Google Cloud コンソールで、Filestore インスタンス ページに移動します。
[インスタンスを作成] をクリック
CMEK をサポートするインスタンス階層を選択し、その他すべての必須フィールドと省略可能フィールドに通常どおりに入力します。
[詳細設定を表示] をクリックします。
[顧客管理の暗号鍵(CMEK)を使用する] チェックボックスをオンにします。
インスタンスに使用する Cloud KMS 鍵を選択します。
[作成] をクリックします。
gcloud CLI
Cloud KMS 鍵を使用してデータを暗号化する Filestore インスタンスを作成するには、filestore instances create
コマンドで --kms-key
フラグを指定します。
gcloud filestore instances create nfs-server \
--tier=<var>TIER</var> \
--location=us-central1 \
--file-share=name="vol1",capacity=1TiB \
--network=name="default" \
--kms-key=KMS_KEY
以下を置き換えます。
- TIER は、顧客管理の暗号鍵をサポートする Filestore ティアに置き換えます。
- KMS_KEY は、使用する Cloud KMS 鍵の完全修飾名に置き換えます。または、次の形式で各引数を個別に指定することもできます。
--kms-key=KMS_KEY : --kms-keyring=KEY_RING --kms-location=KMS_REGION --kms-project=KMS_PROJECT_NUMBER_OR_ID
以下を置き換えます。
- KMS_KEY: Cloud KMS 鍵の名前。
- KMS_PROJECT_NUMBER_OR_ID: 鍵が作成されるプロジェクトのプロジェクト番号または ID。
- KMS_KEY_RING: キーリングの名前。
- KMS_REGION: キーリングのリージョン。キーリングとインスタンスは、同じリージョンに配置する必要があります。
キーのリストを取得する
キーのリストを取得するには、kms keys list
コマンドを実行します。
gcloud kms keys list \
--project=KMS_PROJECT_NUMBER_OR_ID \
--keyring=KEY_RING \
--location=KMS_REGION
以下を置き換えます。
- KMS_PROJECT_NUMBER_OR_ID: 鍵が作成されるプロジェクトのプロジェクト番号または ID。
- KEY_RING: キーリングの名前。
- KMS_REGION: キーリングのリージョン。
出力の [名前] 列に、既存の鍵の完全修飾名が表示されます。例:
projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key
インスタンスの鍵情報の取得
以降のセクションでは、インスタンス キーの情報を取得する方法について説明します。
特定の Cloud KMS 鍵を使用するインスタンスを一覧表示する
特定のキーを使用する Filestore インスタンスを一覧表示するには、instances list
コマンドを実行します。
gcloud filestore instances list --filter="kmsKeyName=KMS_KEY"
KMS_KEY は、使用する鍵の完全修飾名に置き換えます。
例:
gcloud filestore instances list \
--filter="kmsKeyName=projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key"
出力は次のようになります。
INSTANCE_NAME LOCATION TIER CAPACITY_GB FILE_SHARE_NAME IP_ADDRESS STATE CREATE_TIME
nfs-server us-central1 ENTERPRISE 1024 vol1 10.166.108.2 READY 2021-08-12T11:38:56
インスタンスの Cloud KMS 鍵情報を取得する
Filestore インスタンスの Cloud KMS 鍵情報を取得するには、次のいずれかの方法を使用します。
Google Cloud コンソール
Filestore インスタンス ページに移動
インスタンス ID をクリックして、インスタンスの詳細ページを開きます。
[概要] タブをクリックします。
インスタンスが Google が所有して管理する鍵ではなく Cloud KMS 鍵を使用してデータを暗号化する場合は、鍵名が [暗号鍵] フィールドに表示されます。
gcloud CLI
次の instances describe
コマンドを実行します。
gcloud filestore instances describe INSTANCE_ID \
--location=INSTANCE_LOCATION
以下を置き換えます。
- INSTANCE_ID は、情報を取得する Filestore インスタンスのインスタンス ID に置き換えます。
- INSTANCE_LOCATION は、インスタンスが配置されているリージョンまたはゾーンに置き換えます。
出力は次のようになります。
createTime: '2021-08-12T11:38:56.851157387Z'
fileShares:
- capacityGb: '1024'
name: vol1
kmsKeyName: projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key
labels:
key: val
name: projects/consumer-project/locations/us-central1/instances/nfs-server
networks:
- ipAddresses:
- 10.0.100.2
modes:
- MODE_IPV4
network: network
reservedIpRange: 10.166.108.0/23
state: READY
tier: ENTERPRISE
インスタンスで使用されている Cloud KMS 鍵を無効化または破棄する
Cloud KMS 鍵の状態の変化が検出されると、インスタンスはデータの配信を自動的に停止します。以下はその一例です。
この検出は、通常、鍵の状態が変化してから数分以内に行われますが、最大 1 時間を要する場合もあります。
インスタンスが停止すると、ファイル共有データやスナップショットへのアクセスはすべてブロックされます。停止したインスタンスは、削除されるまで課金され続けます。
停止されたインスタンスの起動
停止された Filestore インスタンスが Cloud KMS 鍵を使用してデータを暗号化する場合は、インスタンスを再起動する前に、すべての鍵バージョンを有効にするか、復元する必要があります。
Cloud KMS の鍵のステータスが有効になると、インスタンスは鍵の変更を自動的に検出し、追加のアクションなしで(通常 20 分以内に)再起動します。
バックアップ チェーンの CMEK サポート
CMEK を使用すると、Filestore インスタンスだけでなく、バックアップ チェーンも暗号化できます。
バックアップ チェーンは、単一のバケットとリージョンに存在します。ソース インスタンス以外のリージョンにバックアップ データを保存して暗号化するには、2 つの個別の CMEK(インスタンス用とバックアップ チェーン用)を適用する必要があります。以下の要件が適用されます。
CMEK は、暗号化するバックアップ チェーンと同じリージョンに存在する必要があります。
バックアップ チェーンが保存されているバケットに単一の CMEK が適用されます(組み合わせや置換はできません)。
新しい CMEK を使用してバックアップを作成するには、既存のバックアップ チェーン全体を最初に削除する必要があります。
CMEK のサポートは、ベーシック ティアのバックアップでは使用できません。
詳しくは、バックアップをご覧ください。
次のステップ
- CMEK の組織ポリシーを適用する方法を確認する。
- CMEK の詳細を見る。
- Google Cloud での転送データの暗号化の詳細を見る。