手動輪替根金鑰
您可以使用 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。
在建立根金鑰或將現有根金鑰匯入到服務之後,請完成下列步驟來替換金鑰:
-
去選單>資源列表查看您的資源清單。
-
從 IBM Cloud 資源清單,選取已佈建的 Hyper Protect Crypto Services 實例。
-
上 KMS 金鑰頁面,使用按鍵表來瀏覽您服務中的金鑰。
-
選擇要旋轉的金鑰並點擊行動圖示
開啟該密鑰的選項清單。
-
從選項功能表中,按一下 替換金鑰。
如果您最初提供金鑰的金鑰資料,請指定您要在服務中儲存及管理的新 base64 編碼金鑰資料。 請確定金鑰資料滿足下列需求:
- 必須是 128、192 或 256 位元。
- 必須使用 base64 編碼來編碼資料位元組(例如 32 位元組適用於 256 位元)。
-
按一下 替換金鑰 以確認。
使用 API 輪換根金鑰
您可以透過建立一個來旋轉根密鑰 POST 調用以下端點。
https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/actions/rotate
-
複製您要替換之根金鑰的 ID。
您可以透過 擷取金鑰清單 或存取使用者介面,在服務實例中尋找金鑰的 ID。
-
執行下列 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-south或au-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回應,其指出新的金鑰資料已取代您的根金鑰。 -
選用項目:執行下列呼叫來瀏覽 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
-
若要替換金鑰,您必須獲指派實例或金鑰的 Writer 或 Manager 存取原則。 若要瞭解 IAM 角色如何對映至 Hyper Protect Crypto Services 服務動作,請參閱 服務存取角色。
-
檢索要輪換的密鑰的 ID。
您可以透過建立一個來檢索指定鍵的 ID
GET /v2/keys請求,或透過在 UI 中查看您的金鑰。 -
使用匯入記號來加密您要用來替換現有金鑰的金鑰資料。
若要瞭解如何使用匯入記號,請參閱 指導教學: 建立及匯入加密金鑰。
-
執行下列 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-south或au-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回應,這表示您的根密鑰已被新密鑰材料取代。 -
選用項目: 擷取金鑰的相關詳細資料,以驗證金鑰已輪替。
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'回顧
lastRotateDate和keyVersion回應實體主體中的值來檢查金鑰上次輪換的日期和時間。您也可以使用 Hyper Protect Crypto Services API 來列出金鑰可用的版本。 若要進一步瞭解,請參閱 檢視金鑰版本。
下一步
- 在您替換根金鑰之後,新的加密金鑰資料會變成可用,以保護與根金鑰相關聯的資料加密金鑰 (DEK)。 瞭解如何重新加密或重新包裝 DEKS,而不以純文字形式公開金鑰,請參閱 重新包裝金鑰。
- 若要了解信封加密如何協助您控制雲端中靜態資料的安全性,請參閱 透過信封加密保護數據。
- 要了解有關以編程方式管理密鑰的更多信息,看看Hyper Protect Crypto Services金鑰管理服務API參考文檔。