匯入根金鑰

您可以使用 IBM Cloud® Hyper Protect Crypto Services,透過使用使用者介面或以程式化方式使用 Hyper Protect Crypto Services 金鑰管理服務 API 來保護現有根金鑰的安全。

根金鑰是用來保護雲端中已加密資料安全的對稱金鑰包裝金鑰。 如需匯入根金鑰的相關資訊,請參閱 將加密金鑰帶入雲端

藉由檢閱建立及加密金鑰資料的選項,來提前規劃匯入金鑰。 為了增加安全,您可以啟用金鑰資料的安全匯入,方法是在將金鑰資料帶至雲端之前,使用 匯入記號 來加密金鑰資料。

使用使用者介面匯入根金鑰

在建立服務的實例之後,請完成下列步驟以使用 Hyper Protect Crypto Services GUI 來新增現有根金鑰。

  1. 登入使用者介面

  2. 移至 功能表 > 資源清單,以檢視資源清單。

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

  4. 若要匯入金鑰,請選取側邊功能表中的 KMS 金鑰 標籤。

  5. 在「金鑰」表格中,按一下 新增金鑰,然後選取 匯入金鑰

    指定金鑰的詳細資料:

    表 1. 說明用於匯入根金鑰的設定
    設定 說明
    金鑰類型 您想要在 Hyper Protect Crypto Services 中管理的金鑰類型。 從金鑰類型清單中,選取 根金鑰
    金鑰名稱 方便識別金鑰且人類可閱讀的唯一別名。 若要保護您的隱私權,請確定金鑰名稱未包含個人識別資訊 (PII)(例如您的姓名或位置)。
    金鑰別名 (選用) 您要指派給金鑰的一或多個唯一、人類可讀的別名,以方便辨識。 別名大小可以是 2-90 個字元。 您可以為金鑰設定最多五個金鑰別名,每個別名以逗點區隔。

    附註: 每一個別名都必須是英數、區分大小寫,且不能包含橫線 (-) 或底線 (_) 以外的空格或特殊字元。別名不能是第 4 版 UUID,且不能是 Hyper Protect Crypto Services 保留名稱: allowed_ipkeykeysmetadatapolicypoliciesregistrationregistrationsringringsrotatewrapunwraprewrapversionversions

    金鑰環 ID 從清單中選取包含現有金鑰環的金鑰環。 如果您未指派金鑰環,則會將金鑰新增至 default 金鑰環。 如需金鑰環的相關資訊,請參閱 管理金鑰環
    金鑰資料

    您要在服務中儲存及管理並以 base64 編碼的金鑰資料(例如現有金鑰包裝金鑰)。 如需相關資訊,請參閱 Base64 編碼金鑰資料。 請確定金鑰資料符合下列需求:

    • 金鑰長度必須是 16、24 或 32 個位元組,對應於 128、192 或 256 位元。
    • 金鑰必須以 base64-encoded。
    到期日 (選用) 設定金鑰到期的日期和時間。 在到期日之後,金鑰會進入「已停用」狀態。 如需金鑰狀態的相關資訊,請參閱 監視加密金鑰的生命週期
    說明 (選用) 新增金鑰的延伸說明。 長度必須為 2 到 240 個字元。
  6. 當您完成填寫金鑰的詳細資料時,請按一下 匯入金鑰 以確認。

使用 API 匯入根金鑰

透過對下列端點發出 POST 呼叫,將對稱金鑰匯入至 Hyper Protect Crypto Services。

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

  2. 使用下列 cURL 指令呼叫 Hyper Protect Crypto Services 金鑰管理服務 API:

    curl -X POST \
      https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys \
      -H 'authorization: Bearer <IAM_token>' \
      -H 'bluemix-instance: <instance_ID>' \
      -H 'content-type: application/vnd.ibm.kms.key+json' \
      -d '{
     "metadata": {
       "collectionType": "application/vnd.ibm.kms.key+json",
       "collectionTotal": 1
     },
     "resources": [
       {
       "type": "application/vnd.ibm.kms.key+json",
       "name": "<key_alias>",
       "description": "<key_description>",
       "expirationDate": "<YYYY-MM-DDTHH:MM:SS.SSZ>",
       "payload": "<key_material>",
       "extractable": <key_type>
       }
     ]
    }'
    

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

    表 2. 說明使用 API 新增根金鑰所需的變數
    變數 說明
    region 必要。 代表 Hyper Protect Crypto Services 實例所在地理區域的區域縮寫,例如 us-southau-syd。 如需相關資訊,請參閱地區服務端點
    port 必要。 API 端點的埠號。
    IAM_token 必要。 您的 IBM Cloud 存取記號。 請在 cURL 要求中包含 IAM 記號的完整內容,包括 Bearer 值。 如需相關資訊,請參閱 擷取存取記號
    instance_ID 必要。 指派給 Hyper Protect Crypto Services 實例的唯一 ID。 如需相關資訊,請參閱 擷取實例 ID
    correlation_ID 用來追蹤及關聯交易的唯一 ID。
    key_alias 必要。 方便識別金鑰且人類可閱讀的唯一名稱。 為了保護您的隱私權,請不要將個人資料儲存為金鑰的 meta 資料。
    key_description 金鑰的延伸說明。 為了保護您的隱私權,請不要將個人資料儲存為金鑰的 meta 資料。
    YYYY-MM-DD

    HH:MM:SS.SS

    系統中的金鑰到期的日期和時間,以 RFC 3339 格式表示。 如果省略 expirationDate 屬性,則金鑰不會到期。
    key_material

    您要在服務中儲存及管理並以 base64 編碼的金鑰資料(例如現有金鑰包裝金鑰)。 如需相關資訊,請參閱 Base64 編碼金鑰資料。 請確定金鑰資料符合下列需求:

    • 金鑰長度必須是 16、24 或 32 個位元組,對應於 128、192 或 256 位元。
    • 金鑰必須以 base64-encoded。
    key_type 決定金鑰資料是否可以離開服務的布林值。 當您將 extractable 屬性設為 false 時,服務會將金鑰指定為可用於 wrapunwrap 作業的根金鑰。

    若要保護您個人資料的機密性,請在將金鑰新增至服務時避免輸入個人識別資訊 (PII)(例如您的姓名或位置)。 如需 PII 的其他範例,請參閱 NIST 特殊出版品 800-122的 2.2 小節。

    成功的 POST api/v2/keys 回應會傳回您金鑰的 ID 值,以及其他 meta 資料。 ID 是指派給金鑰的唯一 ID,用於後續呼叫 Hyper Protect Crypto Services 金鑰管理服務 API。

  3. 選用項目:執行下列呼叫來瀏覽 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>'
    

使用 CLI 匯入根金鑰

使用 Key Protect CLI (整合在 Hyper Protect Crypto Services中),完成下列步驟來匯入根金鑰:

  1. 設定 Key Protect CLI

  2. 使用下列指令匯入根金鑰:

    ibmcloud kp key create
    

    您可以在 Key Protect CLI 參考資料 中找到此指令的其他參數。

Base64 編碼金鑰資料

匯入現有的根金鑰時,必須包含您要在服務中儲存及管理的已加密金鑰資料。

使用 OpenSSL 來編碼現有的金鑰資料

  1. 下載並安裝 OpenSSL

  2. 執行下列指令,以 Base64 編碼金鑰資料字串:

    $ openssl base64 -in <infile> -out <outfile>
    

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

    表 3. 說明 base64 編碼金鑰資料所需的變數
    變數 說明
    infile 金鑰資料字串所在檔案的名稱。 請確定金鑰長度為 16、24 或 32 個位元組,對應於 128、192 或 256 位元。
    outfile 執行指令時將在其中建立 base64-encoded 金鑰資料的檔案名稱。

    如果您要直接在指令行而非檔案中輸出 base64 資料,請執行指令 openssl enc -base6<<< '<key_material_string>',其中 key_material_string 是所匯入金鑰的金鑰資料輸入。

使用 OpenSSL 來建立及編碼新的金鑰資料

  1. 下載並安裝 OpenSSL

  2. 執行下列指令,以 Base64 編碼金鑰資料字串:

    $ openssl rand <byte_length> -base64
    

    將範例要求中的 byte_length 變數取代為金鑰長度 (以位元組為單位測量)。 可接受的位元組長度為 16、24 或 32 個位元組,對應於 128、192 或 256 位元。

下一步