ラップされた鍵の作成

このページでは、Cloud Key Management Service(Cloud KMS)を使用して、deidentifyおよび reidentify リクエストを機密データの保護の Cloud Data Loss Prevention API の送信に使用できるラップされた鍵を作成する方法について説明します。

暗号鍵を使用してコンテンツを匿名化および再識別するプロセスは仮名化(またはトークン化)と呼ばれます。このプロセスの概念については、仮名化をご覧ください。

ラップされた鍵の作成、コンテンツのトークン化、トークン化されたコンテンツの再識別の方法を示すエンドツーエンドの例については、クイックスタート: 機密テキストの匿名化と再識別をご覧ください。

このトピックの手順(始める前にの手順は含まない)は 5〜10 分で完了できます。

準備

  1. Install the Google Cloud CLI.
  2. Configure the gcloud CLI to use your federated identity.

    For more information, see Browser-based sign-in with the gcloud CLI.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Sensitive Data Protection and Cloud KMS APIs:

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  7. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/dlp.user

    gcloud projects add-iam-policy-binding PROJECT_ID --member="USER_IDENTIFIER" --role=ROLE

ステップ 1: キーリングと鍵を作成する

この手順を開始する前に、機密データの保護で匿名化と再識別リクエストを処理する場所を決定してください。Cloud KMS 鍵を作成するときは、global か、機密データの保護リクエストに使用するリージョンと同じリージョンに保管する必要があります。そうしないと、機密データの保護リクエストは失敗します。

サポートされているロケーションのリストについては、機密データの保護のロケーションをご覧ください。選択したリージョンの名前をメモします(たとえば、us-west1)。

この手順では、すべての API リクエストのロケーションとして global を使用します。別のリージョンを使用する場合は、global をリージョン名に置き換えます。

  1. キーリングの作成

    gcloud kms keyrings create "dlp-keyring" \
        --location "global"
    
  2. 鍵を作成します。

    gcloud kms keys create "dlp-key" \
        --location "global" \
        --keyring "dlp-keyring" \
        --purpose "encryption"
    
  3. キーリングと鍵をリスティングします。

    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 形式でエンコードする方法について説明します。

  1. 128 ビット、192 ビット、256 ビットの AES 鍵を作成します。次のコマンドは、openssl を使用して、現在のディレクトリに 256 ビットのキーを作成します。

    openssl rand -out "./aes_key.bin" 32
    

    ファイル aes_key.bin が現在のディレクトリに追加されます。

  2. 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\"}"

以下を置き換えます。

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 の値をメモします。それがラップされた鍵です。

次のステップ