還原金鑰

您可以使用 IBM Cloud® Hyper Protect Crypto Services 來還原先前刪除的金鑰,並存取雲端上的相關聯資料。

當刪除金鑰時,它會移至「已毀損」狀態。 不過,仍然可以檢視金鑰 (例如 meta 資料) 的相關資訊,而且您有 30 天時間將金鑰還原至「作用中」狀態。 因此,金鑰刪除被視為 軟刪除,其中金鑰仍然存在,但無法再用來存取金鑰所加密的資料。 本主題說明還原金鑰的處理程序,以及金鑰還原處理程序的限制。

此軟刪除期間 (已刪除金鑰但仍可還原) 會持續 30 天。 在 30 天到 90 天之間,仍然可以存取金鑰資料,但無法再還原金鑰。 90 天之後,金鑰會變成有資格自動清除,這可在 90 天之後隨時發生。 已清除的金鑰與已毀損的金鑰不同,會永遠消失。

表 1. 將金鑰狀態與從金鑰刪除到金鑰可能執行的動作的時間相結合。
金鑰刪除的時間 金鑰狀態的名稱 可以檢視或存取金鑰資料嗎? 可以還原嗎?
1-30 天 已破壞 True True
30-90 天 已破壞 True
90 天之後 已清除 (技術上不是關鍵狀態)

因為已清除的金鑰無法存取及毀損,所以技術上沒有 已清除 金鑰狀態。 不過,將 清除 視為狀態可能很有用,因為不存在是金鑰生命週期的一部分。

不論是由 Hyper Protect Crypto Services 產生或由您匯入,所有根金鑰和標準金鑰都可以還原。

如何知道是否可以還原金鑰?

若要查看是否可以還原已毀損的金鑰,請執行下列動作:

  1. 在使用者介面中導覽至 Hyper Protect Crypto Services 實例。
  2. 在導覽中,請確定您位於 KMS 按鍵 頁面上。
  3. 尋找您要還原的金鑰,並確定金鑰處於 已毀損 狀態。
  4. 檢查 已毀損 狀態旁邊是否顯示 復原 圖示 「復原」圖示。 圖示指出金鑰可以還原。 您可以在刪除之後 30 天內還原金鑰。 當您將游標移至圖示上方時,即會顯示還原到期日。

使用使用者介面還原已刪除的金鑰

如果您喜歡使用圖形介面恢復金鑰,則可以使用 UI。

完成以下步驟來還原金鑰:

  1. 登入使用者介面
  2. 選單>資源列表查看您的資源清單。
  3. 從 IBM Cloud 資源清單,選取已佈建的 Hyper Protect Crypto Services 實例。
  4. KMS 金鑰頁面,使用按鍵表來瀏覽您服務中的金鑰。
  5. 選擇您要還原的金鑰,然後按一下行動圖示操作圖示 開啟該密鑰的選項清單。
  6. 從選項功能表中,按一下 還原金鑰
  7. 按一下 還原金鑰 以確認動作。

使用 API 還原已刪除的金鑰

透過建立一個來恢復密鑰 POST 調用以下端點。

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

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

  2. 擷取金鑰管理服務 API 端點 URL。

    您可以透過 概觀 > Connect > 金鑰管理端點 URL,從已佈建的服務實例儀表板取得 API 端點。 或者,您可以使用 API 呼叫來動態 擷取 API 端點 URL。 根據您的需要選取公開或私密金鑰管理端點 URL。

  3. 檢索您要復原的金鑰的 ID。

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

  4. 執行下列 curl 指令,以還原金鑰並重新取得相關聯資料的存取權。 您必須在刪除金鑰之後等待 30 秒,才能還原金鑰。

    您無法還原具有現行或過去到期日的金鑰。

    curl -X POST \
      "https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/restore" \
      -H 'authorization: Bearer <IAM_token>' \
      -H 'bluemix-instance: <instance_ID>' \
      -H 'x-kms-key-ring: <key_ring_ID>'
    

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

    表 1. 說明使用 Hyper Protect Crypto Services API 還原金鑰所需的變數
    變數 說明
    region 必要。 地區縮寫,例如 us-south 或者 eu-de,代表您所在的地理區域Hyper Protect Crypto Services服務實例駐留。 如需相關資訊,請參閱地區服務端點
    port 必要。 API 端點的埠號。
    key_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。 \n \n 附註: 在沒有 x-kms-key-ring 標頭的情況下建立之金鑰的金鑰環 ID 是 default

    如需相關資訊,請參閱 管理金鑰環

    成功的還原要求會傳回 HTTP 201 Created 回應,指出金鑰已還原至「作用中」金鑰狀態,現在可用於加密及解密作業。 也會還原先前與金鑰相關聯的所有屬性及原則。

    一旦還原金鑰,您就可以存取與金鑰相關聯的資料。

  5. 選用項目: 透過擷取金鑰的相關詳細資料,驗證已還原金鑰。

    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'
    

    其中 <key_id> 是金鑰的 ID,<instance_ID> 是實例的名稱,而 <IAM_token> 是 IAM 記號。

    檢閱回應內文中的 state 欄位,以驗證金鑰已移至「作用中」金鑰狀態。 下列 JSON 輸出顯示作用中金鑰的 meta 資料詳細資料。

    「作用中」索引鍵狀態的整數對映是 1。 金鑰狀態基於 NIST SP 800-57。

    {
      "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": "...",
          "description": "...",
          "tags": [
            "..."
          ],
          "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": true,
          "creationDate": "2020-03-10T20:41:27Z",
          "createdBy": "...",
          "algorithmType": "AES",
          "algorithmMetadata": {
            "bitLength": "128",
            "mode": "CBC_PAD"
          },
          "algorithmBitSize": 128,
          "algorithmMode": "CBC_PAD",
          "lastUpdateDate": "2020-03-16T20:41:27Z",
          "keyVersion": {
            "id": "30372f20-d9f1-40b3-b486-a709e1932c9c",
            "creationDate": "2020-03-12T03:37:32Z"
          },
          "dualAuthDelete": {
            "enabled": false
          },
          "deleted": false
        }
      ]
    }