手動輪替根金鑰

您可以使用 IBM Cloud® Hyper Protect Crypto Services隨需應變替換 根金鑰A symmetric wrapping key that is used for encrypting and decrypting other keys that are stored in a data service.

當您替換根金鑰時,會縮短金鑰的生命期限,並限制該金鑰所保護的資訊數量。

若要瞭解金鑰替換如何協助您符合業界標準及加密的最佳作法,請參閱金鑰替換

在使用者介面中輪替根金鑰

如果您喜歡使用圖形介面輪換根密鑰,則可以使用 UI。

在建立根金鑰或將現有根金鑰匯入到服務之後,請完成下列步驟來替換金鑰:

  1. 登入使用者介面

  2. 選單>資源列表查看您的資源清單。

  3. 從 IBM Cloud 資源清單,選取已佈建的 Hyper Protect Crypto Services 實例。

  4. KMS 金鑰頁面,使用按鍵表來瀏覽您服務中的金鑰。

  5. 選擇要旋轉的金鑰並點擊行動圖示操作圖示 開啟該密鑰的選項清單。

  6. 從選項功能表中,按一下 替換金鑰

    如果您最初提供金鑰的金鑰資料,請指定您要在服務中儲存及管理的新 base64 編碼金鑰資料。 請確定金鑰資料滿足下列需求:

    • 必須是 128、192 或 256 位元。
    • 必須使用 base64 編碼來編碼資料位元組(例如 32 位元組適用於 256 位元)。
  7. 按一下 替換金鑰 以確認。

使用 API 輪換根金鑰

您可以透過建立一個來旋轉根密鑰 POST 調用以下端點。

https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/rotate
  1. 檢索您的服務和驗證憑證以使用服務中的金鑰。

  2. 複製您要替換之根金鑰的 ID。

    您可以透過 擷取金鑰清單 或存取使用者介面,在服務實例中尋找金鑰的 ID。

  3. 執行下列 cURL 指令,將金鑰取代為新的金鑰資料。

    curl -X POST \
      'https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/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>"
          }'
    

    根據下表取代範例要求中的變數。

    表 2. 說明在 Hyper Protect Crypto Services 中替換指定金鑰所需的變數
    變數 說明
    region 必要。 代表 Hyper Protect Crypto Services 服務實例所在地理區域的地區縮寫,例如 us-southau-syd。 如需相關資訊,請參閱地區服務端點
    port 必要。 API 端點的埠號。
    key_ID 必要。 您要替換之根金鑰的唯一 ID。
    IAM_token 必要。 您的 IBM Cloud 存取記號。 請在 cURL 要求中包含 IAM 記號的完整內容,包括 Bearer 值。 有關更多信息,請參閱 檢索訪問令牌
    instance_ID 必要。 指派給您 Hyper Protect Crypto Services 服務實例的唯一 ID。 有關更多信息,請參閱 檢索實例 ID
    key_ring_ID 選用。 金鑰所屬金鑰環的唯一 ID。 如果未指定,Hyper Protect Crypto Services 將在與指定實例相關聯的每個金鑰環中搜尋金鑰。 因此,建議為更最佳化的要求指定金鑰環 ID。

    附註: 在沒有 x-kms-key-ring 標頭的情況下建立之金鑰的金鑰環 ID 為: 預設值。 如需相關資訊,請參閱 管理金鑰環

    key_material

    選用。 新的base64您想要在服務中儲存和管理的編碼密鑰材料。 如果在將金鑰新增至服務時一開始就匯入了金鑰資料,則這個值為必要項目。

    輪換最初產生的密鑰Hyper Protect Crypto Services,省略 payload 屬性並傳遞一個空的請求實體主體。 若要替換匯入的金鑰,請提供符合下列需求的金鑰資料:

    • 金鑰必須是 128、192 或 256 位元。
    • 必須使用 base64 編碼來編碼資料位元組(例如 32 位元組適用於 256 位元)。

    順利完成的替換要求會傳回 HTTP 204 No Content 回應,其指出新的金鑰資料已取代您的根金鑰。

  4. 選用項目:執行下列呼叫來瀏覽 Hyper Protect Crypto Services 服務實例中的金鑰,確認已替換金鑰。

    curl -X GET \
    https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys \
    -H 'accept: application/vnd.ibm.collection+json' \
    -H 'authorization: Bearer <IAM_token>' \
    -H 'bluemix-instance: <instance_ID>' \
    

    請檢閱回應實體內文中的 lastRotateDate 值,以檢查前次替換金鑰的日期和時間。

    {
      "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:hs-crypto: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": "AES",
          "algorithmMetadata": {
            "bitLength": "256",
            "mode": "CBC_PAD"
          },
          "algorithmBitSize": 256,
          "algorithmMode": "CBC_PAD",
          "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 屬性包含說明最新版本根金鑰的識別資訊。

    您也可以使用來列出金鑰可用的版本 Hyper Protect Crypto Services 金鑰管理服務 API。 若要進一步瞭解,請參閱 檢視金鑰版本

使用匯入記號來替換金鑰

如果您最初使用匯入記號匯入根金鑰,則可以對下列端點發出 POST 呼叫來替換金鑰。

https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/rotate
  1. 擷取鑑別認證以使用服務中的金鑰

    若要替換金鑰,您必須獲指派實例或金鑰的 WriterManager 存取原則。 若要瞭解 IAM 角色如何對映至 Hyper Protect Crypto Services 服務動作,請參閱 服務存取角色

  2. 檢索要輪換的密鑰的 ID。

    您可以透過建立一個來檢索指定鍵的 ID GET /v2/keys 請求,或透過在 UI 中查看您的金鑰。

  3. 建立及擷取匯入記號

  4. 使用匯入記號來加密您要用來替換現有金鑰的金鑰資料。

    若要瞭解如何使用匯入記號,請參閱 指導教學: 建立及匯入加密金鑰

  5. 執行下列 cURL 指令,以新的金鑰資料取代現有的金鑰。

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

    根據下表取代範例要求中的變數。

    表 3. 說明使用Hyper Protect Crypto Services API 還原金鑰所需的變數
    變數 說明
    region 必要。 代表 Hyper Protect Crypto Services 服務實例所在地理區域的地區縮寫,例如 us-southau-syd。 如需相關資訊,請參閱地區服務端點
    port 必要。 API 端點的埠號。
    key_ID 必要。 您要輪換的密鑰的唯一識別碼。
    IAM_token 必要。 您的 IBM Cloud 存取記號。 請在 cURL 要求中包含 IAM 記號的完整內容,包括 Bearer 值。 有關更多信息,請參閱 檢索訪問令牌
    instance_ID 必要。 指派給您 Hyper Protect Crypto Services 服務實例的唯一 ID。 有關更多信息,請參閱 檢索實例 ID
    key_alias 必要。 方便識別金鑰且人類可閱讀的唯一名稱。 為了保護您的隱私權,請不要將個人資料儲存為金鑰的 meta 資料。
    key_description 金鑰的延伸說明。 為了保護您的隱私權,請不要將個人資料儲存為金鑰的 meta 資料。
    encrypted_key 必要。 由匯入記號加密的新金鑰資料。 該值必須是base64編碼。 請確定金鑰資料符合下列需求:

    • 金鑰必須是 128、192 或 256 位元。
    • 必須使用 base64 編碼來編碼資料位元組(例如 32 位元組適用於 256 位元)。

    若要進一步瞭解,請參閱 指導教學: 建立及匯入加密金鑰

    key_type 決定金鑰資料是否可以離開服務的布林值。 當您設定 extractable 歸因於 false,該服務將密鑰指定為根密鑰,您可以將其用於 wrap 或者 unwrap 營運。
    encrypted_nonce 必要。 AES-GCM 加密 Nonce,可確保您在要求中傳送的位元與我們接收的位元完全相同。 暫時性要求會驗證您要還原的金鑰。 若要進一步瞭解,請參閱 指導教學: 建立及匯入加密金鑰
    iv 必要。 AES-GCM 演算法在加密 Nonce 時所產生的起始設定向量 (IV)。 此值用來解碼 Hyper Protect Crypto Services 系統中儲存體的金鑰。 若要進一步瞭解,請參閱 指導教學: 建立及匯入加密金鑰

    成功的輪換請求會回傳 HTTP 204 No Content 回應,這表示您的根密鑰已被新密鑰材料取代。

  6. 選用項目: 擷取金鑰的相關詳細資料,以驗證金鑰已輪替。

    curl -X GET \
    https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_id>/metadata \
    -H 'authorization: Bearer <IAM_token>' \
    -H 'bluemix-instance: <instance_ID>'
    -H 'accept: application/vnd.ibm.kms.key+json'
    

    回顧 lastRotateDatekeyVersion 回應實體主體中的值來檢查金鑰上次輪換的日期和時間。

    您也可以使用 Hyper Protect Crypto Services API 來列出金鑰可用的版本。 若要進一步瞭解,請參閱 檢視金鑰版本

下一步