顧客管理の暗号鍵(CMEK)を使用する

概要

このページでは、顧客管理の暗号鍵(CMEK)が Datastream でどのように機能するかについて説明します。

CMEK は適しているか?

CMEK は、機密データや規制対象データを保管し、独自の暗号鍵を管理する必要がある組織を対象としています。

Google が管理する暗号鍵と顧客管理の暗号鍵の比較

CMEK 機能を使用すると、独自の暗号鍵を Datastream 内の保存データに使用できます。CMEK を追加すると、API が呼び出されるたびに、Datastream はその鍵を使用してデータにアクセスします。

Datastream は、Google が管理するデータ暗号鍵(DEK)と鍵暗号鍵(KEK)を使用して Datastream を暗号化します。暗号化には次の 2 つのレベルがあります。

  1. DEK がデータを暗号化する。
  2. KEK が DEK を暗号化する。

Datastream は暗号化された DEK を暗号化されたデータとともに保存し、Google は Google KEK を管理します。CMEK を使用して、Google KEK をラップする鍵を作成します。CMEK を使用すると、KEK の作成、取り消し、削除ができます。

ソフトウェア、ハードウェア、外部鍵を含む CMEK はすべて、Cloud Key Management Service(KMS)API を介して管理されます。

CMEK を有効化した Datastream ストリームはどのロケーションでサポートされますか?

CMEK は、すべての Datastream ロケーションで使用できます。

サービス アカウントについて

Datastream ストリームで CMEK が有効になっている場合、サービス アカウントを使用して Cloud Key Management Service から鍵のアクセスをリクエストする必要があります。

CMEK をプロジェクトで使用するには、サービス アカウントを使用し、そのサービス アカウントに鍵へのアクセス権を付与する必要があります。サービス アカウントはプロジェクト内に存在する必要があります。サービス アカウントはすべてのリージョンで表示されます。

コンソールを使用してストリームを作成する場合、最初に [顧客管理の暗号鍵] オプションを選択すると、Datastream によってサービス アカウントが自動的に作成されます(サービス アカウントがまだ存在しない場合)。Datastream が自動的にサービス アカウントを作成する場合、ユーザー アカウントに特別な権限は必要ありません。

鍵について

Cloud Key Management Service では、ロケーションが設定された暗号鍵を使用してキーリングを作成する必要があります。Datastream で新しいストリームを作成するときに、この鍵を選択してストリームを暗号化します。

CMEK を使用する新しいストリームを作成するときは、鍵 ID と鍵リージョンを確認する必要があります。ストリームに関連付けられた CMEK と同じリージョンに新しいストリームを配置する必要があります。鍵とストリームの両方に対して 1 つのプロジェクトを作成できます。また、それぞれに異なるプロジェクトを作成することもできます。

CMEK は次の形式を使用します。

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Datastream が鍵にアクセスできない場合(鍵バージョンを無効にした場合など)、Datastream がストリームの状態を FAILED に変更し、関連するエラー メッセージが表示されます。エラー メッセージに関連する問題のトラブルシューティングを行い、キーが再びアクセス可能になった後、Datastream は自動的にストリームを再開します。

外部鍵マネージャー

Fortanix、Ionic、Thales などの外部鍵マネージャーに保存されている鍵を CMEK として使用できます。Cloud Key Management Service で外部鍵を使用する方法については、Cloud External Key Manager をご覧ください。

CMEK で暗号化されたデータを永続的にアクセスできなくするにはどうすればよいですか?

CMEK で暗号化されたデータを永続的に破棄する必要が生じることも考えられます。これを行うには、CMEK のバージョンを破棄します。キーリングや鍵の破棄はできませんが、鍵の鍵バージョンは破棄できます。

制限事項

CMEK を使用する場合、次の制限が適用されます。

  • 実行中のストリームでは CMEK を更新できません。

  • CMEK を使用してソース データベースの行を暗号化できますが、これらの鍵を使用して、ストリーム ID、ソース データベースの IP アドレス、ソース データベース テーブルの名前などのストリーム メタデータを暗号化することはできません。

CMEK の使用

CMEK について理解したので、CMEK 用のサービス アカウントと鍵を設定する準備が整いました。また、CMEK を使用するように Datastream を設定する方法についても学習します。CMEK の詳細については、概要をご覧ください。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. Cloud SDK をインストールして初期化します。
  7. ユーザー アカウントに Datastream 管理者のロールが割り当てられていることを確認します。

    IAM ページに移動

  8. Cloud Key Management Service API を有効にします。

    API を有効にする

  9. Datastream API を有効にします。

    API を有効にする

CMEK を使用して Datastream でストリームを作成するワークフロー

  1. gcloud と API ユーザーのみ: CMEK を必要とするプロジェクトごとにサービス アカウントがあることを確認します。ない場合は、サービス アカウントの作成方法をご覧ください。
  2. キーリングと鍵を作成し、鍵ごとにロケーションを設定します。ロケーションは Google Cloud リージョンです。
  3. gcloud と API ユーザーのみ: サービス アカウントに鍵へのアクセス権を付与します。
  4. 鍵の鍵 ID(KMS_KEY_ID)とロケーション、キーリングの ID(KMS_KEYRING_ID)をコピーするか書き留めます。この情報は、サービス アカウントに鍵へのアクセスを付与するときに必要になります。
  5. プロジェクトに移動して、次のオプションを使用して Datastream でストリームを作成します。
    1. CMEK と同じロケーション
    2. CMEK 構成
    3. CMEK ID

CMEK で Datastream のストリームが有効になります。

サービス アカウントを作成する

CMEK を必要とするプロジェクトごとにサービス アカウントを作成する必要があります。

ユーザーがサービス アカウントを管理できるようにするには、次のいずれかの役割を付与します。

  • サービス アカウント ユーザー(roles/iam.serviceAccountUser): サービス アカウントを一覧表示する権限、サービス アカウントの詳細を取得する権限、サービス アカウントの権限借用の権限が含まれます。
  • サービス アカウント管理者(roles/iam.serviceAccountAdmin): サービス アカウントを一覧表示する権限、サービス アカウントの詳細を取得する権限が含まれます。サービス アカウントの作成、更新、削除に加え、サービス アカウントの Datastream ポリシーを表示または変更する権限も含まれます。

現時点では、gcloud コマンドのみを使用して、CMEK に必要なサービス アカウントの種類を作成できます。コンソールを使用している場合は、Datastream によって自動的にこのサービス アカウントが作成されます。

gcloud でサービス アカウントを作成するには、次のコマンドを実行します。

gcloud beta services identity create \
--service=datastream.googleapis.com \
--project=PROJECT_ID

上記のコマンドはサービス アカウント名を返します。このサービス アカウント名は、サービス アカウントへの鍵へのアクセス権の付与の手順で使用します。

キーを作成

鍵は、Datastream のストリームと同じ Google Cloud プロジェクトで作成するか、別のユーザー プロジェクトで作成します。Cloud KMS キーリングの場所は、ストリームを作成するリージョンと一致する必要があります。マルチリージョンまたはグローバル リージョン鍵は使用できません。リージョンが一致しない場合、ストリームを作成できません。

Cloud KMS 鍵を作成するには:

コンソール

  1. Google Cloud Console で、[暗号鍵] ページに移動します。
  2. [キーリングを作成] をクリックします。
  3. [キーリング名] を追加します。この名前はサービス アカウントに鍵へのアクセスを付与するときに必要になるため、書き留めておきます。
  4. [キーリングの場所] を追加します。
  5. [作成] をクリックします。[鍵の作成] ページが開きます。
  6. [鍵の名前] を追加します。
  7. [目的] を選択します(対称または非対称)。
  8. [ローテーション期間] と [開始日] を選択します。
  9. [作成] をクリックします。
  10. [] のテーブルで、最後の列の 3 つのドットをクリックし、[リソース ID をコピー] を選択するか、書き留めます。これは KMS_KEY_ID です。KMS_KEY_ID は、サービス アカウントに鍵へのアクセス権を付与するときに必要になります。

gcloud

  1. 新しいキーリングを作成します。
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    この名前はサービス アカウントに鍵へのアクセスを付与するときに必要になるため、書き留めておきます。
  2. キーリングで鍵を作成します。
    gcloud kms keys create KMS_KEY_ID \
    --location=GCP_REGION \
    --keyring=KMS_KEYRING_ID \
    --purpose=encryption
      
    この名前はサービス アカウントに鍵へのアクセスを付与するときに必要になるため、書き留めておきます。

サービス アカウントに鍵のアクセス権を付与してください。

この手順は、gcloud または API を使用する場合にのみ必要です。

サービス アカウントへのアクセス権を付与するには、次のコードを使用します。

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=GCP_REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-datastream.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

CMEK を使用して Datastream でストリームを作成する

Datastream でストリームを作成するときに、CMEK を使用してデータの暗号化を管理できます。

鍵バージョンを無効にしてから再度有効にする

次のトピックをご覧ください。