鍵の手動ローテート

IBM® Key Protect for IBM Cloud® を使用して、ルート鍵を手動でローテートできます。

ルート・キーを回転させると、キーに新しいキー素材が追加される。 このプロセスにより、データの再ラップまたは再暗号化に使用できる新しい鍵バージョンが作成されます。

鍵のローテーションがどのように業界標準や暗号のベスト・プラクティスへの準拠に役立つのかについては、暗号鍵のローテートを参照してください。

ローテーションは、ルート鍵に対してのみ使用可能です。 Key Protect での鍵のローテーションのオプションについて詳しくは、鍵のローテーションのオプションの比較を参照してください。

コンソールでのルート鍵のローテート

ルート鍵を作成した後、以下の手順を実行して、その鍵をローテートさせます。

  1. IBM Cloud コンソールにログインしてください

  2. 「メニュー」>**「リソース・リスト」**に移動し、リソースのリストを表示します。

  3. IBM Cloud リソース・リストで、Key Protect のプロビジョン済みインスタンスを選択します。

  4. アプリケーションの詳細ページで、**「鍵 (Keys)」**テーブルを使用して、サービス内の鍵を参照します。 キーが多数ある場合は、検索バーを使って、有効になっているキー(その他の種類のキーはローテーションできないため)、特定のキーリングにあるキー、および特定のエイリアスを持つキーを絞り込んでください。

  5. キーが見つかったら、 [アクション] アイコン (⋯) をクリックして、ローテーションしたいキーのオプション一覧を表示します。

  6. オプションメニューから「 回転 」をクリックして、「 回転 」サイドパネルを開きます。

  7. ここから、「 回転 」をクリックすると、キーを1回回転させることができます。 この鍵がインポートされた場合は、新しい鍵素材を指定する必要があります。

    また、このキーに対して、任意の間隔でローテーションポリシーを設定することもできます:

    • 「主要オプション」に戻り、「 回転ポリシーの編集 」をクリックします
    • ポリシーを有効にする
    • キーの更新間隔として、希望する30日間隔を選択してください

    例えば 2 カ月ごとにローテートするように鍵を設定すると、特定の月の日数に関係なく、60 日ごとにローテートされます。

  8. 保存 」をクリックして、このポリシーを設定してください。

続いて作成されるすべてのキーにローテーション・ポリシーを設定するインスタンスのローテーション・ポリシーの設定については、 ローテーション・ポリシーの設定を 参照してください。

インポートされたルート鍵の場合のみ、サービスで保管および管理する base64 エンコードの鍵素材を追加する必要があります。 鍵素材が 128、192、または 256 ビットであること、そのバイト数のデータ (例えば 256 ビットの場合は 32 バイトのデータ) が base64 でエンコードされていることを確認してください。

API を使用したルート鍵のローテート

以下のエンドポイントに対して POST 呼び出しを行うことによって、ルート鍵をローテートできます。

https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rotate
  1. サービス内で鍵を処理するための認証資格情報を取得します。

  2. ローテートするルート鍵の ID をコピーします。

    鍵の ID は、以下の場所にあります。 Key Protect インスタンスの鍵の ID は、鍵のリストを取得するか、または Key Protect ダッシュボードにアクセスすることで見つけることができます。 ダッシュボード

  3. 以下の方法で新しい鍵素材を指定して、鍵を回転させます。 curl コマンドで表示されます。

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rotate" \
        -H "accept: application/vnd.ibm.kms.key_action+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "x-kms-key-ring: <key_ring_ID>" \
        -H "content-type: application/vnd.ibm.kms.key_action+json" \
        -d '{
                "payload": "<key_material>"
            }'
    

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

変数 説明
リージョン 必須us-southeu-gb といった地域略称は、 Key Protect インスタンスが配置されている地理的エリアを表します。

詳しくは、地域のサービス・エンドポイントを参照してください。
keyID_or_alias 必須。 ローテートするルート鍵の固有 ID または別名。
IAM_token 必須。 IBM Cloud アクセス・トークン。 Bearer 値を含む、IAM トークンの全コンテンツを curl 要求に組み込みます。
詳細については、「 アクセストークンの取得 」を参照してください。
instance_ID 必須。 Key Protect サービス・インスタンスに割り当てられた固有 ID。

詳細については、「 インスタンス ID の取得 」を参照してください。
key_ring_ID オプション。 鍵が含まれている鍵リングの固有 ID。 指定しない場合は、Key Protect が、指定されたインスタンスに関連付けられているすべての鍵リングで鍵を検索します。 鍵リング ID を指定して、より最適化された要求を行うことをお勧めします。

注: x-kms-key-ring ヘッダーを指定せずに作成されたキーのキーリングIDは、「default」となります。

For more information, see グループ化キー.
key_material オプション。 サービスで保管および管理する、新しい base64 エンコードの
        鍵素材。 この値は、サービスへの鍵の追加時に鍵素材を最初にインポートした場合に必要になります。<br><br> Key Protect によって最初に生成された鍵を回転させるには、payload 属性を省略し、空のリクエスト・エンティティ・ボディを渡してください。 インポートされた鍵をローテートするには、以下の要件を満たす鍵素材を指定します。<br><br>鍵は 128 ビット、192 ビット、または 256 ビットである必要があります。 データバイト(例えば、256ビットの場合は32バイト)は、 base64 エンコーディングを使用してエンコードする必要があります。 |

ローテーション要求が成功すると、HTTP 204 No Content 応答が返されます。これは、ルート鍵が新しい鍵素材に置き換えられたことを示しています。

オプション: 鍵のローテーションの確認

鍵のリスト表示の要求を実行して、鍵がローテートされたことを確認できます。

$ curl -X GET \
    "https://<region>.kms.cloud.ibm.com/api/v2/keys" \
    -H "accept: application/vnd.ibm.collection+json" \
    -H "authorization: Bearer <IAM_token>" \
    -H "bluemix-instance: <instance_ID>"

ここで、<instance_ID> はインスタンスの名前で、<IAM_token> は IAM トークンです。

応答エンティティー本体内の lastRotateDate および keyVersion の値を確認して、 鍵が最後にローテートされた日時を調べます。

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.key+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "type": "application/vnd.ibm.kms.key+json",
            "id": "02fd6835-6001-4482-a892-13bd2085f75d",
            "name": "test-root-key",
            "state": 1,
            "extractable": false,
            "crn": "crn:v1:bluemix:public:kms:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:12e8c9c2-a162-472d-b7d6-8b9a86b815a6:key:02fd6835-6001-4482-a892-13bd2085f75d",
            "imported": false,
            "creationDate": "2020-03-12T03:50:12Z",
            "createdBy": "...",
            "algorithmType": "Deprecated",
            "algorithmMetadata": {
                "bitLength": "256",
                "mode": "Deprecated"
            },
            "algorithmBitSize": 256,
            "algorithmMode": "Deprecated",
            "lastUpdateDate": "2020-03-12T03:50:12Z",
            "lastRotateDate": "2020-03-12T03:49:01Z",
            "keyVersion": {
                "id": "2291e4ae-a14c-4af9-88f0-27c0cb2739e2",
                "creationDate": "2020-03-12T03:50:12Z"
            },
            "dualAuthDelete": {
                "enabled": false
            },
            "deleted": false
        }
    ]
}

keyVersion 属性には、ルート鍵の最新バージョンを記述する識別情報が含まれています。

また、以下を使用して、キーに使用可能なバージョンをリストすることもできます。 Key Protect API。 詳しくは、鍵のバージョンの表示を参照してください。

インポート・トークンを使用した鍵のローテート

最初にインポート・トークンを使用してルート鍵をインポートした場合は、以下のエンドポイントに対して POST 呼び出しを行うことによって、鍵をローテートできます。

https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rotate
  1. サービス内で鍵の処理を行うために、認証資格情報を取得します

    キーをローテーションするには、インスタンスまたはキーの_「ライター」または「マネージャー」_アクセス権限ポリシーが割り当てられている必要があります。 IAM ロールがどのように Key Protect サービス・アクションにどのようにマップされるかについては、サービス・アクセス役割を確認してください。

  2. ローテートする鍵の ID を取得します。

    指定した鍵の ID を取得するには、 GET /v2/keys リクエスト、または Key Protect ダッシュボード。

  3. インポート・トークンを作成して取得します

  4. インポート・トークンを使用して、既存の鍵をローテートするために使用する鍵素材を暗号化します。

    インポート・トークンの使用方法については、 チュートリアル: 暗号鍵の作成とインポートを確認してください。

  5. 以下のコマンドを実行して、既存の鍵を新しい鍵データに置き換えてください curl コマンドを使用して作成できます。

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rotate" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -d '{
                "type": "application/vnd.ibm.kms.key+json",
                "name": "<key_alias>",
                "description": "<key_description>",
                "extractable": <key_type>,
                "payload": "<encrypted_key>",
                "encryptionAlgorithm": "RSAES_OAEP_SHA_256",
                "encryptedNonce": "<encrypted_nonce>",
                "iv": "<iv>"
            }'
    

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

変数 説明
リージョン 必須us-southeu-gb といった地域略称は、 Key Protect インスタンスが配置されている地理的エリアを表します。

詳細については、「 地域別サービスエンドポイント 」を参照してください。
keyID_or_alias 必須。 ローテートするルート鍵の固有 ID または別名。
IAM_token 必須。 IBM Cloud アクセス・トークン。 Bearer 値を含む、IAM トークンの全コンテンツを cURL 要求に組み込みます。

詳細については、「 アクセストークンの取得 」を参照してください。
instance_ID 必須。 Key Protect サービス・インスタンスに割り当てられた固有 ID。

詳細については、「 インスタンス ID の取得 」を参照してください。
key_alias 必須。 鍵を簡単に識別するための、人間が理解できる固有の名前。 プライバシーを保護するため、個人データを鍵のメタデータとして保管しないでください。
key_description オプション。 鍵の詳しい説明。 プライバシーを保護するため、個人データを鍵のメタデータとして保管しないでください。
encrypted_key 必須。 サービスで保管および管理する、
        暗号化された鍵素材。 この値は base64 エンコードでなければ
        なりません。 鍵素材が以下の要件を満たしていることを確認してください:<br><br>鍵の長さは128、192、または256ビットでなければなりません。 データバイト(例えば、256ビットの場合は32バイト)は、 base64 エンコーディングを使用してエンコードする必要があります。 |

| key_type | オプション。 鍵の素材をサービスの外に出すことができるかどうかを決定するブール値。

extractable 属性を false に設定すると、そのキーは wrap または unwrap 操作に使用できるルートキーになります。 | | encrypted_nonce | 必須。 要求の一部として送信されるビットがその送信先で受信されるビットとまったく同じであることを確認するための、AES-GCM で暗号化された nonce。 復元しようとしている鍵は、この nonce によって検証されます。

詳細については、 「チュートリアル:暗号化キーの作成とインポート」 をご覧ください。 | | iv | 必須。 nonce を暗号化する際に、AES-GCM アルゴリズムによって生成される初期設定ベクトル (IV)。 この値は、 Key Protect システムに保存するためのキーを復号化する際に使用されます。

詳細については、 「チュートリアル:暗号化キーの作成とインポート」 をご覧ください。 |

ローテーション要求が成功すると、HTTP 204 No Content 応答が返されます。これは、ルート鍵が新しい鍵素材に置き換えられたことを示しています。

オプション: インポート・トークンの鍵のローテーションの確認

鍵メタデータの取得の要求を実行して、インポート・トークンを使用してインポートされていた鍵がローテートされたことを確認できます。

$ curl -X GET \
    "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/metadata" \
    -H "accept: application/vnd.ibm.kms.key+json" \
    -H "authorization: Bearer <IAM_token>" \
    -H "bluemix-instance: <instance_ID>"

ここで、<keyID_or_alias> は鍵の ID または別名、<instance_ID> はインスタンスの名前、<IAM_token> は IAM トークンです。

応答エンティティー本体内の lastRotateDate および keyVersion の値を確認して、 鍵が最後にローテートされた日時を調べます。

また、以下を使用して、キーに使用可能なバージョンをリストすることもできます。 Key Protect API。 詳しくは、鍵のバージョンの表示を参照してください。