このページでは、Cloud Key Management Service(Cloud KMS)を使用して、Sensitive Data Protection の Cloud Data Loss Prevention API に
deidentify と
reidentify リクエスト
を送信するために使用できるラップされた鍵を作成する方法について説明します。
暗号鍵を使用してコンテンツを匿名化および再識別するプロセス は仮名化(またはトークン化)と呼ばれます。このプロセスの概念については、 仮名化をご覧ください。
ラップされた鍵の作成、 コンテンツのトークン化、トークン化されたコンテンツの再識別の方法を示す例については、機密テキストの 匿名化と 再識別 をご覧ください。
このドキュメントの手順は、 始める前に の手順を除き、5 ~ 10 分で完了します。
をご覧ください。始める前に
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを作成または選択します Google Cloud 。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクトを作成する: Google Cloud
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
-
このガイドで既存のプロジェクトを使用する場合は、 このガイドを完了するために必要な権限があることを 確認します。新しいプロジェクトを作成した場合は、 必要な権限がすでに付与されています。
Sensitive Data Protection API と Cloud KMS API を有効にします。
API を有効にするために必要なロール
API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(
roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enable詳しくは、ロールを付与する方法をご覧ください。gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを作成または選択します Google Cloud 。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクトを作成する: Google Cloud
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
-
このガイドで既存のプロジェクトを使用する場合は、 このガイドを完了するために必要な権限があることを 確認します。新しいプロジェクトを作成した場合は、 必要な権限がすでに付与されています。
Sensitive Data Protection API と Cloud KMS API を有効にします。
API を有効にするために必要なロール
API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(
roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enable詳しくは、ロールを付与する方法をご覧ください。gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com
必要なロール
ラップされた AES 鍵を作成するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud KMS 管理者 (
roles/cloudkms.admin) - Cloud KMS 暗号鍵の暗号化 (
roles/cloudkms.cryptoKeyEncrypter)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
キーリングと鍵を作成する
この手順を開始する前に、Sensitive Data Protection で匿名化と再識別リクエストを処理する場所を決定してください。Cloud KMS 鍵を作成するときは、global か、機密データの保護リクエストに使用するリージョンと同じリージョンに保管する必要があります。そうしないと、Sensitive Data Protection リクエストは失敗します。
サポートされているロケーションのリストについては、Sensitive Data Protection のロケーションをご覧ください。選択したリージョンの名前(us-west1 など)をメモします。
この手順では、すべての API リクエストのロケーションとして global を使用します。別のリージョンを使用する場合は、global をリージョン名に置き換えます。
キーリングの作成
gcloud kms keyrings create "dlp-keyring" \ --location "global"鍵を作成します。
gcloud kms keys create "dlp-key" \ --location "global" \ --keyring "dlp-keyring" \ --purpose "encryption"キーリングと鍵をリスティングします。
gcloud kms keys list \ --location "global" \ --keyring "dlp-keyring"次の出力が表示されます。
NAME: projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key PURPOSE: ENCRYPT_DECRYPT ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION PROTECTION_LEVEL: SOFTWARE LABELS: PRIMARY_ID: 1 PRIMARY_STATE: ENABLEDこの出力では、
PROJECT_IDはプロジェクトの ID です。NAMEの値は、Cloud KMS 鍵の完全リソース名です。匿名化リクエストと再識別リクエストに必要になるため、この値をメモしておきます。
base64 でエンコードされた AES 鍵を作成する
このセクションでは、Advanced Encryption Standard(AES)鍵を作成して、base64 形式でエンコードする方法について説明します。
128 ビット、192 ビット、256 ビットの AES 鍵を作成します。次のコマンドは、
opensslを使用して、現在のディレクトリに 256 ビットのキーを作成します。openssl rand -out "./aes_key.bin" 32ファイル
aes_key.binが現在のディレクトリに追加されます。AES 鍵を base64 文字列としてエンコードします。
base64 -i ./aes_key.bin次のような出力が表示されます。
uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
Cloud KMS 鍵を使用して AES 鍵をラップする
このセクションでは、 キーリングと鍵を作成するで作成した Cloud KMS 鍵を使用して、base64 でエンコードされた AES 鍵を作成するで作成した base64 でエンコードされた AES 鍵をラップする方法について説明します。
AES 鍵をラップするには、curl を使用して次のリクエストを
Cloud KMS API
projects.locations.keyRings.cryptoKeys.encrypt
メソッドに送信します。
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key:encrypt" \
--request "POST" \
--header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
--header "content-type: application/json" \
--data "{\"plaintext\": \"BASE64_ENCODED_AES_KEY\"}"
次のように置き換えます。
PROJECT_ID: プロジェクトのID。BASE64_ENCODED_AES_KEY: base64 でエンコードされた文字列 base64 でエンコードされた AES 鍵を作成するで返されました。
Cloud KMS からのレスポンスは、次の JSON のようになります。
{
"name": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1",
"ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
"ciphertextCrc32c": "901327763",
"protectionLevel": "SOFTWARE"
}
この出力では、PROJECT_ID はプロジェクトの ID です。
レスポンスの ciphertext の値をメモします。それがラップされた鍵です。
次のステップ
暗号鍵によるデータのトークン化 の詳細を確認する。
このラップされた鍵を使用する匿名化メソッドの詳細と、コード サンプルの詳細を確認する。