ルート鍵を使用したデータ暗号化鍵の再ラップ

IBM Cloud® Hyper Protect Crypto Services キー管理サービス API を使用して、データ暗号キーを再暗号化します。

Hyper Protect Crypto Services 内のルート鍵をローテートすると、そのルート鍵と関連付けられたデータ暗号鍵 (DEK) を保護するための新しい暗号鍵素材が使用可能になります。 再ラップ API を使用すると、キーをプレーンテキスト形式で公開することなく、DEKS を再暗号化または再ラップできます。

エンベロープ暗号化がクラウド内の保存データのセキュリティー制御にどのように役立つかについては、エンベロープ暗号化を使用したデータ保護を参照してください。

API を使用した鍵の再ラップ

指定したデータ暗号化キー(DEK)を、管理しているルートキーで再暗号化することができます。Hyper Protect Crypto Services DEK をプレーンテキスト形式で公開することなく。

鍵の再ラップは、サービスへの unwrap 呼び出しと wrap 呼び出しを組み合わせることで機能します。 例えば、最初に rewrap API を呼び出して DEK にアクセスし、次に unwrap API を呼び出してその DEK を最新ルート鍵素材を使用して再暗号化することによって、wrap 操作をエミュレートできます。

サービス内でルート鍵をローテートした後、以下のエンドポイントへの POST 呼び出しを行うことによって、そのルート鍵と関連付けられたデータ暗号鍵を再ラップします。

https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/rewrap
  1. サービス内で鍵の処理を行うために、サービス資格情報および認証資格情報を取得します

  2. 最初のラップ要求を実行するために使用した、ローテートされたルート鍵の ID をコピーします。

    キーのIDを取得するには、GET api/v2/keys リクエストするか、UI でキーを表示します。

  3. 最新のラップ要求時に返された ciphertext 値をコピーします。

  4. 以下の cURL コマンドを実行して、最新ルート鍵素材を使用して鍵を再ラップします。

    curl -X POST \
      'https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/rewrap' \
      -H 'accept: application/vnd.ibm.kms.key_action+json' \
      -H 'authorization: Bearer <IAM_token>' \
      -H 'bluemix-instance: <instance_ID>' \
      -H 'content-type: application/vnd.ibm.kms.key_action+json' \
      -H "x-kms-key-ring: <key_ring_ID>" \
      -H 'correlation-id: <correlation_ID>' \
      -d '{
      "ciphertext": "<encrypted_data_key>"
    }'
    

    次の表に従って、例の要求内の変数を置き換えてください。

    表 1. Hyper Protect Crypto Servicesで鍵を再ラップするために必要な変数について説明します。
    変数 説明
    region 必須。 地域の略語、例:us-south または eu-de、あなたの地理的エリアを表しますHyper Protect Crypto Servicesサービス インスタンスが存在します。 詳細については、リージョナル・サービス・エンドポイントを参照してください。
    port 必須。 API エンドポイントのポート番号。
    key_ID 必須。 初期ラップ要求に使用したルート鍵の固有 ID。
    IAM_token 必須。 IBM Cloud アクセス・トークン。 Bearer 値を含む、IAM トークンの全コンテンツを cURL 要求に組み込みます。 詳細については、アクセス・トークンのリトリーブを参照してください。
    instance_ID 必須。 Hyper Protect Crypto Services サービス・インスタンスに割り当てられた固有 ID。 詳細については、インスタンス ID のリトリーブを参照してください。
    key_ring_ID オプション。 鍵が属する鍵リングの固有 ID。 指定しないと、Hyper Protect Crypto Services は、指定されたインスタンスに関連付けられているすべての鍵リングで鍵を検索します。 このため、鍵リング ID を指定して、より最適化された要求を行うことをお勧めします。

    注: x-kms-key-ring ヘッダーを指定せずに作成した鍵の鍵リング ID は「default」になります。 詳しくは、鍵リングの管理を参照してください。

    correlation_ID トランザクションを追跡し、相互に関連付けるために使用される固有 ID。
    encrypted_data_key 必須。ciphertext 元のラップ操作によって返された値。

    新しくラップされたデータ暗号化鍵、提供された暗号文に関連付けられている元の鍵バージョン (keyVersion)、および新しい暗号文に関連付けられている最新の鍵バージョン (rewrappedKeyVersion) が、応答エンティティー本体に入って返ってきます。 以下の JSON オブジェクトは、返された値の例を示しています。

    {
      "ciphertext": "eyJjaX ... h0Ijoi ... c1ZCJ9",
      "keyVersion": {
        "id": "02fd6835-6001-4482-a892-13bd2085f75d"
      },
      "rewrappedKeyVersion": {
        "id": "12e8c9c2-a162-472d-b7d6-8b9a86b815a6"
      }
    }
    

    データが最新のルート鍵で保護されるように、この新しい ciphertext 値を保管し、今後のエンベロープ暗号化操作で使用してください。