密鑰同步和耐久性設置 AWS CloudHSM - AWS CloudHSM

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

密鑰同步和耐久性設置 AWS CloudHSM

本主題說明中的主要同步處理設定 AWS CloudHSM、客戶在叢集上使用金鑰時所面臨的常見問題,以及製作金鑰更耐用的策略。

概念

權杖金鑰

您在金鑰產生、匯入或解除換行作業期間建立的永久金鑰。 AWS CloudHSM 跨集群同步令牌密鑰。

工作階段金鑰

僅存在於叢集中的一個硬體安全性模組 (HSM) 上的暫時金鑰。 AWS CloudHSM 會跨叢集同步處理工作階段金鑰。

用戶端金鑰同步

一種用戶端程序,可複製您在金鑰產生、匯入或解除包裝作業期間建立的權杖金鑰。您可以透過執行至少兩個 HSM 的叢集,使權杖金鑰更耐久。

伺服器端金鑰同步

定期將金鑰複製到叢集中的每個 HSM。不需要管理。

用戶端金鑰耐久性設定

您在用戶端上設定的會影響金鑰耐久性的設定。這些設定在用戶端 SDK 5 和用戶端 SDK 3 中的運作方式不同。

  • 在用戶端 SDK 5 中,使用此設定來執行單一 HSM 叢集。

  • 在用戶端 SDK 3 中,使用此設定可指定金鑰建立作業成功所需的 HSM 數目。

了解金鑰同步

AWS CloudHSM 使用金鑰同步處理來複製叢集中所有 HSM 的權杖金鑰。您可以在金鑰產生、匯入或解除包裝作業期間,將權杖金鑰建立為持久性金鑰。為了在叢集中分配這些金鑰,CloudHSM 提供用戶端和伺服器端金鑰同步處理。

金鑰同步處理 (伺服器端和用戶端) 的目標是在建立新金鑰之後,儘快在叢集中散發新金鑰。這很重要,因為您後續使用新金鑰所進行的呼叫可以路由傳送至叢集中任何可用的 HSM。如果您在沒有金鑰的情況下路由到 HSM 的呼叫,則呼叫會失敗。您可以指定應用程式重試在金鑰建立作業之後進行的後續呼叫,藉此減輕這些類型的失敗。同步處理所需的時間可能會有所不同,具體取決於叢集的工作負載和其他無形資產。使用 CloudWatch 指標來判斷應用程式在這種情況下應採用的時間。如需詳細資訊,請參閱CloudWatch 量度

在雲端環境中,金鑰同步處理的挑戰在於金鑰的耐久性。您可以在單一 HSM 上建立金鑰,並且通常會立即開始使用這些金鑰。如果您建立金鑰的 HSM 在將金鑰複製到叢集中的其他 HSM 前失敗,您將遺失金鑰存取金鑰所加密的任何項目。為了減輕此風險,我們提供用戶端同步處理。用戶端同步處理是用戶端程序,可複製您在金鑰產生、匯入或解除包裝作業期間建立的金鑰。在建立金鑰時複製金鑰會讓金鑰更耐久。當然,您無法使用單一 HSM 複製叢集中的金鑰。為了讓金鑰更耐久,我們也建議您將叢集設定為至少使用兩個 HSM。透過用戶端同步處理和具有兩個 HSM 的叢集,您可以在雲端環境中應對金鑰耐久性的挑戰。

使用用戶端金鑰耐久性設定

金鑰同步處理大部分是自動程序,但您可以管理用戶端金鑰耐久性設定。用戶端金鑰耐久性設定在用戶端 SDK 5 和用戶端 SDK 3 中的運作方式不同。

  • 在用戶端 SDK 5 中,我們介紹了金鑰可用性定額組的概念。此概念要求您至少使用兩個 HSM 執行叢集。您可以使用用戶端金鑰耐久性設定來選擇退出兩個 HSM 需求。如需定額組的詳細資訊,請參閱 用戶端 SDK 5 概念

  • 在用戶端 SDK 3 中,您可以使用用戶端金鑰耐久性設定來指定必須成功建立金鑰的 HSM 數目,整體作業才會視為成功。

在用戶端 SDK 5 中,金鑰同步處理是完全自動的程序。透過金鑰可用性定額組,新建立的金鑰在您的應用程式使用金鑰前必須存在於叢集中的兩個 HSM 上。若要使用金鑰可用性定額組,您的叢集必須至少要有兩個 HSM。

如果您的叢集組態不符合金鑰耐久性需求,則建立或使用權杖金鑰的任何嘗試都會失敗,並在日誌中顯示下列錯誤訊息:

Key <key handle> does not meet the availability requirements - The key must be available on at least 2 HSMs before being used.

您可以使用用戶端組態設定來選擇退出金鑰可用性定額組。例如,您可能想要選擇退出以單一 HSM 執行叢集。

用戶端 SDK 5 概念

金鑰可用性定額組

AWS CloudHSM 指定叢集中金鑰必須存在的 HSM 數目,您的應用程式才能使用金鑰。需要至少有兩個 HSM 的叢集。

管理用戶端金鑰耐久性設定

若要管理用戶端金鑰耐久性設定,您必須使用用戶端 SDK 5 的設定工具。

PKCS #11 library
在 Linux 上停用用戶端 SDK 5 的用戶端金鑰耐久性
  • 使用設定工具來停用用戶端金鑰耐久性設定。

    $ sudo /opt/cloudhsm/bin/configure-pkcs11 --disable-key-availability-check
在 Windows 上停用用戶端 SDK 5 的用戶端金鑰耐久性
  • 使用設定工具來停用用戶端金鑰耐久性設定。

    "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" --disable-key-availability-check
OpenSSL Dynamic Engine
在 Linux 上停用用戶端 SDK 5 的用戶端金鑰耐久性
  • 使用設定工具來停用用戶端金鑰耐久性設定。

    $ sudo /opt/cloudhsm/bin/configure-dyn --disable-key-availability-check
JCE provider
在 Linux 上停用用戶端 SDK 5 的用戶端金鑰耐久性
  • 使用設定工具來停用用戶端金鑰耐久性設定。

    $ sudo /opt/cloudhsm/bin/configure-jce --disable-key-availability-check
在 Windows 上停用用戶端 SDK 5 的用戶端金鑰耐久性
  • 使用設定工具來停用用戶端金鑰耐久性設定。

    "C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe" --disable-key-availability-check
CloudHSM CLI
在 Linux 上停用用戶端 SDK 5 的用戶端金鑰耐久性
  • 使用設定工具來停用用戶端金鑰耐久性設定。

    $ sudo /opt/cloudhsm/bin/configure-cli --disable-key-availability-check
在 Windows 上停用用戶端 SDK 5 的用戶端金鑰耐久性
  • 使用設定工具來停用用戶端金鑰耐久性設定。

    "C:\Program Files\Amazon\CloudHSM\bin\configure-cli.exe" --disable-key-availability-check

在用戶端 SDK 3 中,金鑰同步處理大部分是自動程序,但您可以使用用戶端金鑰耐久性設定,讓金鑰更耐久。您需要指定必須成功建立金鑰的 HSM 數目,整體作業才會視為成功。無論您選擇何種設定,用戶端同步處理始終都會盡最大努力嘗試將金鑰複製到叢集中的每個 HSM。您的設定會對您指定的 HSM 數量強制建立金鑰。如果您指定一個值,但系統無法將金鑰複製到該數目的 HSM,則系統會自動清除任何不需要的金鑰材料,您可以再試一次。

重要

如果您未設定用戶端金鑰耐久性設定 (或使用預設值 1),您的金鑰容易遺失。如果您目前的 HSM 應該在伺服器端服務將該金鑰複製到另一個 HSM 之前失敗,您就會遺失金鑰材料。

若要最大化金鑰持久性,請考慮為用戶端同步處理指定至少兩個 HSM。請記住,無論您指定了多少 HSM,叢集上的工作負載都保持不變。用戶端同步處理一律會盡最大努力嘗試將金鑰複製到叢集中的每個 HSM。

建議

  • 最小值:每個叢集兩個 HSM

  • 最大值:少於叢集中 HSM 總數的一個值

如果用戶端同步處理失敗,用戶端服務會清除任何可能已建立且現在不需要的多餘金鑰。這種清理是盡力而為的回應,可能並非不總是有效。如果清理失敗,您可能必須刪除不需要的金鑰材料。如需詳細資訊,請參閱金鑰同步處理失敗

設定用戶端金鑰耐久性的組態檔案

若要指定用戶端金鑰耐久性設定,您必須編輯 cloudhsm_client.cfg

編輯用戶端組態檔案
  1. 打開 cloudhsm_client.cfg.

    Linux

    /opt/cloudhsm/etc/cloudhsm_client.cfg

    Windows

    C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg
  2. 在檔案的client節點中,新增create_object_minimum_nodes並指定 HSM 數目下限的值, AWS CloudHSM 必須成功建立金鑰才能成功建立金鑰,金鑰建立作業才能成功。

    "create_object_minimum_nodes" : 2
    注意

    key_mgmt_util (KMU) 命令列工具有用戶端金鑰耐久性的額外設定。如需更多資訊,請參閱KMU 與用戶端同步

組態參考

以下是用戶端同步處理屬性,如 cloudhsm_client.cfg 的摘錄所示:

{ "client": { "create_object_minimum_nodes" : 2, ... }, ... }
create_object_minimum_nodes

指定認為金鑰產生、金鑰匯入或金鑰解除包裝作業成功所需的 HSM 數目下限。如果設定,則預設值為 1。即:對於每個金鑰建立作業,用戶端服務都會嘗試在叢集中的每個 HSM 上建立金鑰,但若要傳回成功,只需要在叢集中的一個 HSM 上建立單一金鑰

KMU 與用戶端同步

如果您使用 key_mgmt_util (KMU) 命令列工具建立金鑰,您可以使用選用的命令列參數 (-min_srv) 來限制需要複製金鑰的 HSM 數目。如果您在組態檔案中指定命令列參數值,則 AWS CloudHSM 會使用這兩個值中較大的值。

如需詳細資訊,請參閱下列主題:

同步複製的叢集之間的金鑰

用戶端和伺服器端同步處理僅適用於同步處理同一叢集內的金鑰。如果您將叢集備份複製到另一個區域,您可以使用 cloudhsm_mgmt_util (CMU) 的 syncKey 命令來同步叢集之間的金鑰。您可以使用複製的叢集進行跨區域備援,或簡化災難復原程序。如需詳細資訊,請參閱 syncKey