匯入根金鑰
您可以使用 IBM Cloud® Hyper Protect Crypto Services,透過使用使用者介面或以程式化方式使用 Hyper Protect Crypto Services 金鑰管理服務 API 來保護現有根金鑰的安全。
根金鑰是用來保護雲端中已加密資料安全的對稱金鑰包裝金鑰。 如需匯入根金鑰的相關資訊,請參閱 將加密金鑰帶入雲端。
藉由檢閱建立及加密金鑰資料的選項,來提前規劃匯入金鑰。 為了增加安全,您可以啟用金鑰資料的安全匯入,方法是在將金鑰資料帶至雲端之前,使用 匯入記號 來加密金鑰資料。
使用使用者介面匯入根金鑰
在建立服務的實例之後,請完成下列步驟以使用 Hyper Protect Crypto Services GUI 來新增現有根金鑰。
-
移至 功能表 > 資源清單,以檢視資源清單。
-
從 IBM Cloud 資源清單,選取已佈建的 Hyper Protect Crypto Services 實例。
-
若要匯入金鑰,請選取側邊功能表中的 KMS 金鑰 標籤。
-
在「金鑰」表格中,按一下 新增金鑰,然後選取 匯入金鑰。
指定金鑰的詳細資料:
表 1. 說明用於匯入根金鑰的設定 設定 說明 金鑰類型 您想要在 Hyper Protect Crypto Services 中管理的金鑰類型。 從金鑰類型清單中,選取 根金鑰。 金鑰名稱 方便識別金鑰且人類可閱讀的唯一別名。 若要保護您的隱私權,請確定金鑰名稱未包含個人識別資訊 (PII)(例如您的姓名或位置)。 金鑰別名 (選用) 您要指派給金鑰的一或多個唯一、人類可讀的別名,以方便辨識。 別名大小可以是 2-90 個字元。 您可以為金鑰設定最多五個金鑰別名,每個別名以逗點區隔。 附註: 每一個別名都必須是英數、區分大小寫,且不能包含橫線 (-) 或底線 (_) 以外的空格或特殊字元。別名不能是第 4 版 UUID,且不能是 Hyper Protect Crypto Services 保留名稱:
allowed_ip、key、keys、metadata、policy、policies、registration、registrations、ring、rings、rotate、wrap、unwrap、rewrap、version、versions。金鑰環 ID 從清單中選取包含現有金鑰環的金鑰環。 如果您未指派金鑰環,則會將金鑰新增至 default金鑰環。 如需金鑰環的相關資訊,請參閱 管理金鑰環。金鑰資料 您要在服務中儲存及管理並以 base64 編碼的金鑰資料(例如現有金鑰包裝金鑰)。 如需相關資訊,請參閱 Base64 編碼金鑰資料。 請確定金鑰資料符合下列需求:
- 金鑰長度必須是 16、24 或 32 個位元組,對應於 128、192 或 256 位元。
- 金鑰必須以 base64-encoded。
到期日 (選用) 設定金鑰到期的日期和時間。 在到期日之後,金鑰會進入「已停用」狀態。 如需金鑰狀態的相關資訊,請參閱 監視加密金鑰的生命週期。 說明 (選用) 新增金鑰的延伸說明。 長度必須為 2 到 240 個字元。 -
當您完成填寫金鑰的詳細資料時,請按一下 匯入金鑰 以確認。
使用 API 匯入根金鑰
透過對下列端點發出 POST 呼叫,將對稱金鑰匯入至 Hyper Protect Crypto Services。
https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys
-
使用下列 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-south或au-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-DDHH:MM:SS.SS系統中的金鑰到期的日期和時間,以 RFC 3339 格式表示。 如果省略 expirationDate屬性,則金鑰不會到期。key_material您要在服務中儲存及管理並以 base64 編碼的金鑰資料(例如現有金鑰包裝金鑰)。 如需相關資訊,請參閱 Base64 編碼金鑰資料。 請確定金鑰資料符合下列需求:
- 金鑰長度必須是 16、24 或 32 個位元組,對應於 128、192 或 256 位元。
- 金鑰必須以 base64-encoded。
key_type決定金鑰資料是否可以離開服務的布林值。 當您將 extractable屬性設為false時,服務會將金鑰指定為可用於wrap或unwrap作業的根金鑰。若要保護您個人資料的機密性,請在將金鑰新增至服務時避免輸入個人識別資訊 (PII)(例如您的姓名或位置)。 如需 PII 的其他範例,請參閱 NIST 特殊出版品 800-122的 2.2 小節。
成功的
POST api/v2/keys回應會傳回您金鑰的 ID 值,以及其他 meta 資料。 ID 是指派給金鑰的唯一 ID,用於後續呼叫 Hyper Protect Crypto Services 金鑰管理服務 API。 -
選用項目:執行下列呼叫來瀏覽 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中),完成下列步驟來匯入根金鑰:
-
使用下列指令匯入根金鑰:
ibmcloud kp key create您可以在 Key Protect CLI 參考資料 中找到此指令的其他參數。
Base64 編碼金鑰資料
匯入現有的根金鑰時,必須包含您要在服務中儲存及管理的已加密金鑰資料。
使用 OpenSSL 來編碼現有的金鑰資料
-
下載並安裝 OpenSSL。
-
執行下列指令,以 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 來建立及編碼新的金鑰資料
-
下載並安裝 OpenSSL。
-
執行下列指令,以 Base64 編碼金鑰資料字串:
$ openssl rand <byte_length> -base64將範例要求中的
byte_length變數取代為金鑰長度 (以位元組為單位測量)。 可接受的位元組長度為 16、24 或 32 個位元組,對應於 128、192 或 256 位元。
下一步
- 若要進一步瞭解如何使用封套加密來保護金鑰,請參閱包裝金鑰。
- 若要找出建立金鑰的指示,請參閱 建立根金鑰 或 建立標準金鑰。
- 若要進一步瞭解如何以程式化方式管理金鑰,請參閱 Hyper Protect Crypto Services 金鑰管理服務 API 參考資料文件。
- 若要進一步瞭解如何使用 Key Protect CLI,請參閱 Key Protect CLI 參考資料文件。