概要
このページでは、顧客管理の暗号鍵(CMEK)が Datastream でどのように機能するかについて説明します。
CMEK は適しているか?
CMEK は、機密データや規制対象データを保管し、独自の暗号鍵を管理する必要がある組織を対象としています。
Google が管理する暗号鍵と顧客管理の暗号鍵の比較
CMEK 機能を使用すると、独自の暗号鍵を Datastream 内の保存データに使用できます。CMEK を追加すると、API が呼び出されるたびに、Datastream はその鍵を使用してデータにアクセスします。
Datastream は、Google が管理するデータ暗号鍵(DEK)と鍵暗号鍵(KEK)を使用して Datastream を暗号化します。暗号化には次の 2 つのレベルがあります。
- DEK がデータを暗号化する。
- 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 の詳細については、概要をご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Cloud SDK をインストールして初期化します。
- ユーザー アカウントに Datastream 管理者のロールが割り当てられていることを確認します。
-
Enable the Cloud Key Management Service API.
- Datastream API を有効にします。
CMEK を使用して Datastream でストリームを作成するワークフロー
- gcloud と API ユーザーのみ: CMEK を必要とするプロジェクトごとにサービス アカウントがあることを確認します。ない場合は、サービス アカウントの作成方法をご覧ください。
- キーリングと鍵を作成し、鍵ごとにロケーションを設定します。ロケーションは Google Cloud リージョンです。
- gcloud と API ユーザーのみ: サービス アカウントに鍵へのアクセス権を付与します。
- 鍵の鍵 ID(
KMS_KEY_ID
)とロケーション、キーリングの ID(KMS_KEYRING_ID
)をコピーするか書き留めます。この情報は、サービス アカウントに鍵へのアクセスを付与するときに必要になります。 - プロジェクトに移動して、次のオプションを使用して Datastream でストリームを作成します。
- CMEK と同じロケーション
- CMEK 構成
- CMEK ID
Datastream のストリームで CMEK が有効になります。
サービス アカウントを作成する
CMEK を必要とするプロジェクトごとにサービス アカウントを作成する必要があります。
ユーザーがサービス アカウントを管理できるようにするには、次のいずれかの役割を付与します。
- サービス アカウント ユーザー(
roles/iam.serviceAccountUser
): サービス アカウントを一覧表示する権限、サービス アカウントの詳細を取得する権限、サービス アカウントの権限借用の権限が含まれます。 - サービス アカウント管理者(
roles/iam.serviceAccountAdmin
): サービス アカウントを一覧表示する権限、サービス アカウントの詳細を取得する権限が含まれます。サービス アカウントの作成、更新、削除に加え、サービス アカウントの Datastream ポリシーを表示または変更する権限も含まれます。
現在、CMEK に必要なタイプのサービス アカウントを作成するには、gcloud
コマンドのみを使用できます。コンソールを使用している場合は、Datastream によって自動的にこのサービス アカウントが作成されます。
gcloud
でサービス アカウントを作成するには、次のコマンドを実行します。
gcloud beta services identity create \ --service=datastream.googleapis.com \ --project=PROJECT_ID
上記のコマンドはサービス アカウント名を返します。このサービス アカウント名は、サービス アカウントへの鍵へのアクセス権の付与の手順で使用します。
キーを作成
鍵は、Datastream のストリームと同じ Google Cloud プロジェクトで作成するか、別のユーザー プロジェクトで作成します。Cloud KMS キーリングの場所は、ストリームを作成するリージョンと一致する必要があります。マルチリージョンまたはグローバル リージョン鍵は使用できません。リージョンが一致しない場合、ストリームを作成できません。
Cloud KMS 鍵を作成するには:
Console
- Google Cloud Console で、[暗号鍵] ページに移動します。
- [キーリングを作成] をクリックします。
- [キーリング名] を追加します。この名前はサービス アカウントに鍵へのアクセスを付与するときに必要になります。
- [キーリングの場所] を追加します。
- [作成] をクリックします。[鍵の作成] ページが開きます。
- [鍵の名前] を追加します。
- [目的] を選択します(対称または非対称)。
- [ローテーション期間] と [開始日] を選択します。
- [作成] をクリックします。
- [鍵] のテーブルで、最後の列の 3 つのドットをクリックし、[リソース ID をコピー] を選択するか、書き留めます。これは
KMS_KEY_ID
です。KMS_KEY_ID
は、サービス アカウントに鍵へのアクセス権を付与するときに必要になります。
gcloud
- 新しいキーリングを作成します。
この名前は、サービス アカウントに鍵へのアクセスを付与するときに必要になるため、書き留めておきます。gcloud kms keyrings create KMS_KEYRING_ID \ --location=GCP_REGION
- キーリングで鍵を作成します。
この名前は、サービス アカウントに鍵へのアクセスを付与するときに必要になるため、書き留めておきます。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 を使用してデータの暗号化を管理できます。
次のステップ
- 鍵バージョンを無効にする方法については、有効な鍵バージョンを無効にするをご覧ください。
- 鍵バージョンを再び有効にする方法については、無効な鍵バージョンを有効にするをご覧ください。