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

このページでは、独自の暗号鍵を使用して 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 インスタンスの詳細ページで確認できます。

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

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

サポートされている階層

次の表に、顧客管理の暗号鍵をサポートする Filestore サービス階層を示します。

ティア CMEK のサポート
基本 HDD ×
基本 SSD ×
低容量範囲のゾーン
高容量範囲のゾーン(以前は高スケール SSD)
エンタープライズ

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

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

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

顧客管理の暗号鍵を使用する 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 は、顧客管理の暗号鍵をサポートする 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 インスタンスだけでなく、バックアップ チェーンも暗号化できます。

バックアップ チェーンは 1 つのバケットとリージョンに存在します。ソース インスタンス外のリージョンでバックアップ データを保存して暗号化するには、インスタンス用とバックアップ チェーン用の 2 つの別個の CMEK を適用する必要があります。いくつかの要件が適用されます。

  • CMEK は、暗号化するバックアップ チェーンと同じリージョンに存在する必要があります。

  • バックアップ チェーンが保存されているバケットに単一の CMEK が適用されます(組み合わせや置換はできません)。

  • 新しい CMEK を使用してバックアップを作成するには、既存のバックアップ チェーン全体を最初に削除する必要があります。

CMEK のサポートは、ベーシック ティアのバックアップでは使用できません。

詳しくは、バックアップをご覧ください。

次のステップ