顧客管理の暗号鍵(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 をプロジェクトで使用するには、サービス アカウントを使用し、そのサービス アカウントに鍵へのアクセス権を付与する必要があります。サービス アカウントはプロジェクト内に存在する必要があります。サービス アカウントはすべてのリージョンで表示されます。

Console を使用してストリームを作成する場合、最初に [顧客管理の暗号鍵] オプションを選択すると、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. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

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

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

  5. 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 に必要なサービス アカウントの種類を作成する方法だけです。Console を使用している場合、Datastream はこのサービス アカウントを自動的に作成します。

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

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

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

キーを作成

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

Cloud KMS 鍵を作成するには:

Console

  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 を使用すると、データの暗号化を管理できます。

鍵バージョンの無効化と再有効化

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