更改 AWS CloudHSM 客户端密钥持久性设置 - AWS CloudHSM

更改 AWS CloudHSM 客户端密钥持久性设置

密钥同步总体是一个自动过程,但您可以管理客户端密钥的耐久性设置。客户端软件开发工具包 5 和客户端软件开发工具包 3 中的客户端密钥持久性设置的运作方式不同。

  • 在客户端软件开发工具包 5 中,我们引入了密钥可用性仲裁的概念,它要求您运行有两个及以上 HSM 的集群。您可以使用客户端密钥持久性设置,选择不要求使用两个 HSM。有关仲裁的更多信息,请参阅 客户端软件开发工具包 5 概念

  • 在客户端软件开发工具包 3 中,您可以使用客户端密钥持久性设置来指定要使整个操作视为成功必须成功创建密钥的 HSM 数量。

在客户端软件开发工具包 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 运行集群。

客户端软件开发工具包 5 概念

密钥可用性仲裁

AWS CloudHSM 指定在应用程序使用密钥前必须存在密钥的集群中的 HSM 数量。需要有两个及以上 HSM 的集群。

管理客户端密钥持久性设置

要管理客户端密钥持久性设置,必须使用客户端软件开发工具包 5 的配置工具。

PKCS #11 library
在 Linux 上禁用客户端软件开发工具包 5 的客户端密钥持久性
  • 使用配置工具禁用客户端密钥持久性设置。

    $ sudo /opt/cloudhsm/bin/configure-pkcs11 --disable-key-availability-check
在 Windows 上禁用客户端软件开发工具包 5 的客户端密钥持久性
  • 使用配置工具禁用客户端密钥持久性设置。

    "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" --disable-key-availability-check
OpenSSL Dynamic Engine
在 Linux 上禁用客户端软件开发工具包 5 的客户端密钥持久性
  • 使用配置工具禁用客户端密钥持久性设置。

    $ sudo /opt/cloudhsm/bin/configure-dyn --disable-key-availability-check
JCE provider
在 Linux 上禁用客户端软件开发工具包 5 的客户端密钥持久性
  • 使用配置工具禁用客户端密钥持久性设置。

    $ sudo /opt/cloudhsm/bin/configure-jce --disable-key-availability-check
在 Windows 上禁用客户端软件开发工具包 5 的客户端密钥持久性
  • 使用配置工具禁用客户端密钥持久性设置。

    "C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe" --disable-key-availability-check
CloudHSM CLI
在 Linux 上禁用客户端软件开发工具包 5 的客户端密钥持久性
  • 使用配置工具禁用客户端密钥持久性设置。

    $ sudo /opt/cloudhsm/bin/configure-cli --disable-key-availability-check
在 Windows 上禁用客户端软件开发工具包 5 的客户端密钥持久性
  • 使用配置工具禁用客户端密钥持久性设置。

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

在客户端软件开发工具包 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 必须在该数量及以上的 HSM 上成功创建密钥才能令密钥创建操作成功。

    "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 会选择两个值中较大的一个。

有关更多信息,请参阅以下主题: