このページでは、Cloud Key Management Service(Cloud KMS)を使用して、deidentify
と reidentify
リクエストを Cloud Data Loss Prevention API に送信するために使用できるラップされた鍵を作成する方法について説明します。します。
暗号鍵を使用してコンテンツを匿名化および再識別するプロセスは仮名化(またはトークン化)と呼ばれます。このプロセスの概念については、仮名化をご覧ください。
ラップされた鍵の作成、コンテンツのトークン化、トークン化されたコンテンツの再識別の方法を示すエンドツーエンドの例については、クイックスタート: 機密テキストの匿名化と再識別をご覧ください。
このトピックの手順(始める前にの手順は含まない)は 5〜10 分で完了できます。
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud プロジェクトを作成または選択します。
-
Google Cloud プロジェクトを作成する
gcloud projects create PROJECT_ID
-
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
-
-
Google Cloud プロジェクトの課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud DLP and Cloud KMS API を有効にします。
gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Google アカウントにロールを付与します。次の IAM ロールごとに次のコマンドを 1 回実行します。
roles/dlp.user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
PROJECT_ID
は、実際のプロジェクト ID に置き換えます。EMAIL_ADDRESS
は実際のメールアドレスに置き換えます。ROLE
は、個々のロールに置き換えます。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud プロジェクトを作成または選択します。
-
Google Cloud プロジェクトを作成する
gcloud projects create PROJECT_ID
-
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
-
-
Google Cloud プロジェクトの課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud DLP and Cloud KMS API を有効にします。
gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Google アカウントにロールを付与します。次の IAM ロールごとに次のコマンドを 1 回実行します。
roles/dlp.user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
PROJECT_ID
は、実際のプロジェクト ID に置き換えます。EMAIL_ADDRESS
は実際のメールアドレスに置き換えます。ROLE
は、個々のロールに置き換えます。
ステップ 1: キーリングと鍵を作成する
この手順を開始する前に、Cloud DLP で匿名化リクエストと再識別リクエストを処理する場所を決定してください。Cloud KMS 鍵を作成する場合は、global
または Cloud DLP リクエストに使用するのと同じリージョンに保存する必要があります。そうしなければ、Cloud DLP リクエストは失敗します。
サポートされているロケーションのリストについては、Cloud DLP のロケーションをご覧ください。選択したリージョンの名前をメモします(たとえば、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 PURPOSE ALGORITHM PROTECTION_LEVEL LABELS PRIMARY_ID PRIMARY_STATE projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED
この出力では、
PROJECT_ID
はプロジェクトの ID です。NAME
の下にあるパスは、Cloud KMS 鍵の完全リソース名です。それは匿名化リクエストと再識別リクエストで必要になるため、メモしておいてください。
ステップ 2: 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=
ステップ 3: Cloud KMS 鍵を使用して AES 鍵をラップする
このセクションでは、ステップ 1 で作成した Cloud KMS 鍵を使用して、ステップ 2 で作成した 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
: ステップ 2 で返された base64 エンコード文字列。
Cloud KMS からのレスポンスは、次の JSON のようになります。
{ "name": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1", "ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "ciphertextCrc32c": "901327763", "protectionLevel": "SOFTWARE" }
この出力では、PROJECT_ID
はプロジェクトの ID です。
表示されたレスポンス内の ciphertext
の値をメモします。それがラップされた鍵です。
次のステップ
暗号鍵によるデータのトークン化の詳細を確認する。
ラップされた鍵の作成、コンテンツのトークン化、トークン化されたコンテンツの再識別の方法を示すエンドツーエンドの例を確認する。