このページでは、独自の暗号鍵を使用して Filestore インスタンスとバックアップのデータを暗号化する方法について説明します。
Google Cloud では、デフォルトで、Google Cloud が管理する暗号鍵を使用して、自動的に保存されているデータを暗号化します。データを保護する鍵をより詳細に管理する必要がある場合、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 | × |
ゾーン | ○ |
リージョン | ○ |
エンタープライズ | ○ |
インスタンスで使用するキーリングと鍵を作成する
キーリングと鍵は 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 インスタンスだけでなく、バックアップ チェーンも暗号化できます。
バックアップ チェーンは 1 つのバケットとリージョンに存在します。ソース インスタンス外のリージョンでバックアップ データを保存して暗号化するには、インスタンス用とバックアップ チェーン用の 2 つの別個の CMEK を適用する必要があります。いくつかの要件が適用されます。
CMEK は、暗号化するバックアップ チェーンと同じリージョンに存在する必要があります。
バックアップ チェーンが保存されているバケットに単一の CMEK が適用されます(組み合わせや置換はできません)。
新しい CMEK を使用してバックアップを作成するには、既存のバックアップ チェーン全体を最初に削除する必要があります。
CMEK のサポートは、ベーシック ティアのバックアップでは使用できません。
詳しくは、バックアップをご覧ください。
次のステップ
- CMEK の組織ポリシーを適用する方法を確認する。
- CMEK の詳細を見る。
- Google Cloud での転送データの暗号化の詳細を見る。