顧客管理の暗号鍵でデータを暗号化する

デフォルトでは、Filestore はお客様のコンテンツを保存時に暗号化します。暗号化は Filestore が行うため、ユーザー側での操作は必要ありません。このオプションは、Google のデフォルトの暗号化と呼ばれます。

暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵(CMEK)を、Filestore などの CMEK 統合サービスで使用できます。Cloud KMS 鍵を使用すると、保護レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。Cloud KMS を使用すると、監査ログを表示し、鍵のライフサイクルを管理することもできます。データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵を制御および管理します。

CMEK を使用してリソースを設定した後は、Filestore リソースへのアクセスは、Google のデフォルトの暗号化を使用する場合と同様です。暗号化オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。

CMEK は、Filestore のインスタンスバックアップで使用できます。

CMEK オプション

Filestore は、ソフトウェア鍵として保存された CMEK、HSM クラスタ内のハードウェア鍵として保存された CMEK、Cloud External Key Manager(Cloud EKM)に外部で保存された鍵として保存された CMEK をサポートしています。

詳細については、Cloud Key Management Service をご覧ください。

EKM サービスの停止

設計上、外部鍵はサードパーティによって管理されます。このような場合、Google Cloud は鍵の可用性について責任を負いません。

外部鍵にアクセスできないことが External Key Manager(EKM)から Cloud Key Management Service(Cloud KMS)に通知されると、ユーザーに ekm_key_unreachable_detected 通知が送信されます。最大で 1 時間、インスタンスからオペレーションへのユーザー アクセスは制限されました。1 時間が経過しても鍵のステータスが変更されない場合は、次のアクションが適用されます。

  • 鍵が無効になる。
  • 暗号化と復号化のすべてのオペレーションが失敗する。
  • Filestore インスタンスが一時停止される。

VM の再起動など、予定外のイベントが発生した場合は、1 時間前にインスタンスへのアクセスが停止されることがあります。

到達不能な鍵に関する通知は、Filestore インスタンスの詳細ページで確認できます。

Filestore インスタンス ページに移動

また、最初に報告された通知から 1 時間以内に次のいずれかのオペレーションが実行された場合は、このオペレーションに関する ekm_key_unreachable_detected 通知もユーザーに送信されます。

サポートされている階層

次の表に、CMEK をサポートする Filestore サービスティアを示します。

階層 CMEK のサポート
基本 HDD ×
基本 SSD ×
ゾーン
リージョン
Enterprise

インスタンスで使用するキーリングと鍵を作成する

キーリングと鍵は Filestore インスタンスとは異なるプロジェクトに含めてもかまいませんが、同じロケーションに存在する必要があります。Filestore で使用する Cloud KMS キーリングと鍵がすでにある場合は、次のセクションに進んでください。それ以外の場合は、対称暗号鍵の作成の手順に従って、キーリングと鍵を作成します。

Filestore サービス アカウントに鍵へのアクセス権を付与する

CMEK を使用する Filestore インスタンスを作成するには、Filestore サービス アカウントに Cloud KMS 暗号鍵の暗号化/復号のロール(roles/cloudkms.cryptoKeyEncrypterDecrypter)が必要です。

  1. 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 に置き換えます。

  2. 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 鍵を使用するインスタンスを作成するには:

  1. Google Cloud コンソールで、Filestore インスタンス ページに移動します。

    Filestore インスタンス ページに移動

  2. [インスタンスを作成] をクリック

  3. CMEK をサポートするインスタンス階層を選択し、その他すべての必須フィールドと省略可能フィールドに通常どおりに入力します。

  4. [詳細設定を表示] をクリックします。

  5. [顧客管理の暗号鍵(CMEK)を使用する] チェックボックスをオンにします。

  6. インスタンスに使用する Cloud KMS 鍵を選択します。

  7. [作成] をクリックします。

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 は、CMEK をサポートする 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 コンソール

  1. Filestore インスタンス ページに移動

    Filestore インスタンス ページに移動

  2. インスタンス ID をクリックして、インスタンスの詳細ページを開きます。

  3. [概要] タブをクリックします。

インスタンスが 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 のサポートは、ベーシック ティアのバックアップでは使用できません。

詳細については、バックアップをご覧ください。

次のステップ