ラップされた鍵の作成

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

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

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

このドキュメントの手順(始める前にの手順は除く)は 5〜10 分で完了できます。

始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  5. Google Cloud プロジェクトを作成または選択します

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  6. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  7. Google Cloud プロジェクトに対して課金が有効になっていることを確認します

  8. Sensitive Data Protection API と Cloud KMS API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  9. Google Cloud CLI をインストールします。

  10. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  11. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  12. Google Cloud プロジェクトを作成または選択します

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  13. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  14. Google Cloud プロジェクトに対して課金が有効になっていることを確認します

  15. Sensitive Data Protection API と Cloud KMS API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com

必要なロール

ラップされた AES 鍵の作成に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

キーリングと鍵を作成する

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

サポートされているロケーションのリストについては、Sensitive Data Protection のロケーションをご覧ください。選択したリージョンの名前をメモします(例: 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: 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 形式でエンコードする方法について説明します。

  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=
    

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

次のように置き換えます。

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

次のステップ