AWS CloudHSM 加密用户凭证轮换的架构考虑 安全博客

AWS CloudHSM 用户密码轮换的架构考量

关键要点

这篇博客提供了关于 AWS CloudHSM 用户凭证轮换的架构指导,适用于正在使用或考虑使用 CloudHSM 的用户。CloudHSM 提供安全加密材料管理,是一种受欢迎的解决方案。使用该服务,组织可以享受到强大的机制来管理自己专用的 FIPS 1402 级别 3 硬件安全模块 (HSM) 集群以及客户端 SDK,以便加密用户能够在部署的 HSM 上执行加密操作。

凭证轮换是 AWS WellArchitected 最佳实践,有助于降低长期凭证使用所带来的风险。此外,组织通常需要根据合规性、监管或行业要求,定期轮换 HSM 集群中的加密用户凭证。与大多数使用 AWS 身份和访问管理 (IAM) 访问集群资源的 AWS 服务不同,HSM 用户是直接在 HSM 集群上创建和维护的。因此,凭证轮换操作的执行方式可能会影响工作负载的可用性。因此,理解不同的加密用户凭证轮换选项及其在易于实现和停机时间方面的影响是非常重要的。

本文将深入讨论不同的选项、实现步骤及其利弊,最后给出各选项的相对停机时间、复杂性和成本矩阵,帮助您选择最适合的用例。

解决方案概述

在本文中,我们考虑了三种方法:

方法一 针对具有明确维护窗口的工作负载。可以关闭所有与 CloudHSM 的客户端连接,修改加密用户的密码,然后重新建立与 CloudHSM 的连接。这个选项最为直接,但需要一定的应用停机时间。

方法二 创建一个额外的加密用户可以访问所有加密材料并为其设置新密码,然后部署新客户端实例。当新用户和实例就位后,通过负载均衡器将流量重定向到新实例。这个选项没有停机时间,但需要额外的基础设施客户端实例和在加密用户之间共享加密材料的过程。

AWS CloudHSM 加密用户凭证轮换的架构考虑 安全博客

方法三 运行两个独立而相同的环境,将流量引导到一个实时蓝色环境,而在另一个备份绿色环境中进行更改和测试,然后将流量重定向到绿色环境。此选项也不需要停机时间,但需要额外的基础设施客户端实例和额外的 CloudHSM 集群来支持蓝绿部署策略。

解决方案前提条件

连接到 CloudHSM 集群的网络路径。如需了解更多信息,请参阅 启动 Amazon Elastic Compute Cloud (Amazon EC2) 客户端实例。安装和配置 CloudHSM 命令行接口CLI。访问加密用户密码。

方法一

第一种方法利用应用程序的计划维护窗口来进行必要的加密用户密码更改。这是推荐选项中最直接的选择,复杂性最小,因为不需要额外的基础设施来支持密码轮换活动。然而,这需要停机时间最好是计划好的来轮换密码并更新客户端应用实例。根据您如何创建客户端应用程序的部署方式,您可以通过自动化应用程序的部署过程来缩短停机时间。实现此方法的主要步骤如下:

终止所有客户端与 CloudHSM 集群的连接。这是必要的,因为在加密用户的会话处于活动状态时,无法更改密码。您可以查询 Amazon CloudWatch 日志组,查看您的 CloudHSM 集群是否有用户会话活动。此外,您还可以通过启用与 CloudHSM 集群相关的弹性网络接口 (ENIs) 的 Amazon 虚拟私有云 (VPC) 流量日志 进行审计,以确定流量来源并将其与应用程序关联。更改加密用户密码:使用以下命令启动 CloudHSM CLI 交互模式。Windows CProgram FilesAmazonCloudHSMbingt cloudhsmcliexe interactiveLinux /opt/cloudhsm/bin/cloudhsmcli interactive使用登录命令登入要更改密码的用户:awscloudhsm gt login username ltUSERNAMEgt role ltROLEgt。输入用户的当前密码。输入更改密码命令:awscloudhsm gt user changepassword username ltUSERNAMEgt role ltROLEgt。输入新密码。再次输入新密码。更新连接到 CloudHSM 的客户端以使用新凭据。按照 SDK 文档 中的详细步骤进行操作,尤其是在使用 PKCS # 11、OpenSSL 动态引擎、JCE 提供者或 KSP 和 CNG 提供者时。恢复所有与 CloudHSM 集群的客户端连接。

方法二

第二种方法采用两个加密用户和蓝绿部署策略,即创建两个独立但相同的客户端环境的部署策略。一个环境蓝色运行当前应用程序版本并利用加密用户 1 (CU1) 处理实时流量,而另一个环境绿色则运行新应用程序版本并利用更新后的加密用户 2 (CU2) 密码。在绿色环境的测试完成后,流量将转向绿色环境,蓝色环境被废弃。在这种方法中,两个加密用户均可访问所需的加密材料。当轮换加密用户密码时,您可以启动新的客户端实例,并交换连接凭据以使用第二个加密用户。由于客户端应用程序一次只能使用一个加密用户,因此第二个用户可以保持不活跃,并在将来重复使用。与第一种方法相比,此方法增加了您架构的复杂性,以便能够通过部署额外的客户端实例将实时应用流量重定向到新环境,而无需重启。您还需注意,共享用户只能对共享密钥执行签名、加密、解密、验证和 HMAC 操作。当前,导出、包装、修改、删除和衍生操作不允许使用共享用户。此方法具有经典蓝绿部署的优点无停机和低风险,并通过拥多个加密用户以访问所需的加密材料,在用户管理层面提供冗余。以下是可能的架构:

实施方法二的步骤:

在 CloudHSM 集群中 设置两个加密用户,例如 CU1 和 CU2。创建应用程序所需的加密材料。使用 密钥共享命令 将密钥与另一个用户共享,以便两个用户都能访问所有密钥。通过运行密钥列表命令并添加过滤器来返回特定密钥。查看 sharedusers 输出以查明该密钥当前共享给谁。要与加密用户共享此密钥,请输入以下命令:awscloudhsm gt key share filter attrlabel=rsakeytoshare attrclass=privatekey username ltUSERNAMEgt role cryptouser。如果 CU1 用于对 CloudHSM 集群建立客户端即蓝色环境连接,则更改 CU2 的密码。按照 更改 HSM 用户密码 或方法一的步骤 2 更改分配给 CU2 的密码。启动新客户端实例,并使用 CU2 配置连接凭据即绿色环境。将新的客户端实例添加到现有应用程序负载均衡器 (ALB) 的新 目标组 中。然后,使用 ALB 的加权目标组路由功能将流量定向到新配置的环境。您可以使用 ALB 监听器规则设定的转发操作将请求路由到一个或多个目标组。如果您为转发操作指定多个目标组,则必须为每个目标组指定一个权重。每个目标组的权重从 0 到 999 之间取值。符合监听器规则的请求将根据它们的权重分配到这些目标组中。例如,如果您指定一个目标组权重为 10,另一个目标组权重为 20,则权重为 20 的目标组将接收到两倍于另一个目标组的请求。您可以使用 AWS 命令行接口 (AWS CLI)、AWS 管理控制台或支持的基础设施即代码 (IaC) 工具进行这些更改。有关更多信息,请参见 在应用程序负载均衡器上微调蓝/绿部署。在下一个密码轮换迭代中,可以通过更新客户端实例来切换回使用带有更新凭据的 CU1,并使用步骤 6 和 7 进行重新部署。

方法三

第三种方法是前一种方法的变体,通过构建相同的环境蓝绿部署,并在新环境上更改加密用户密码,以实现工作负载的零停机时间。您创建两个独立但相同的 CloudHSM 集群,一个作为实时蓝色环境,另一个作为测试绿色环境,在此环境中进行更改测试,测试完成后,将生产流量导向绿色环境并废弃蓝色环境。同样,此方法增加了架构复杂性,以便能够在部署和切换窗口中,通过启动额外的客户端实例和 CloudHSM 集群,将实时应用流量重定向到新环境,而无需重启。此外,在创建绿色集群后,对蓝色集群所做的更改将不会反映在绿色集群中,这可以通过在执行切换过程时对更改进行短期禁止来缓解。这种方法的一个主要优势是,它在不需要第二个加密用户的情况下提高了应用程序的可用性,同时仍然减少了部署风险,并简化了回滚过程,以防部署失败。这样的部署模式通常使用持续集成和持续交付CI/CD工具,如 AWS CodeDeploy,来自动化实施。有关详细部署配置选项,请参见 CodeDeploy 中的部署配置。以下是可能的架构:

实施方法三的步骤:

从备份创建集群。确保在与现有 CloudHSM 集群相同的可用区中还原新集群。这样您将获得绿色环境。启动新的应用实例绿色环境,并进行 配置,使其连接到新的 CloudHSM 集群。注意新的 CloudHSM 集群安全组,并将其附加到新客户端实例。按照 更改 HSM 用户密码 的步骤或方法一步骤 2 来更改新集群上加密用户的密码。更新与 CloudHSM 连接的客户端以使用新密码。通过按照方法二的步骤 6 和 7,将新的客户端添加到现有的应用程序负载均衡器中。完成部署后,可以删除旧的集群和客户端实例蓝色环境。使用控制台删除 CloudHSM 集群:打开 AWS CloudHSM 控制台。选择旧集群,然后选择 删除集群。确认要删除集群,然后选择 删除。使用 AWS 命令行接口 (AWS CLI) 删除集群,使用以下命令:aws cloudhsmv2 deletecluster clusterid ltcluster IDgt。

如何选择方法

为了更好地理解哪种方法最适合您的用例,考虑以下标准:

停机时间:您的工作负载可接受的停机时间是多少?实施复杂性:您是否需要对工作负载进行架构更改,实施工作量的复杂性如何?成本:该方法所需的额外费用对于企业来说是否可以接受?停机时间相对实施复杂性相对基础设施成本方法一是低方法二否中方法三否中

方法一,尤其是在计划的维护窗口内运行时,是三种方法中最直接的选择,因为不需要额外的基础设施,工作负载的停机时间是唯一的权衡。这适合于能够接受计划停机并希望保持解决方案复杂性低的应用。

方法二在工作负载上没有停机时间,第二个加密用户作为将来密码更新的备份例如,如果凭证丢失或人员更改时提供了便利。缺点是需要初步规划以设置工作负载来处理多个加密用户,分享所有密钥,并且存在额外成本。这更适合需要零停机时间和支持热交换传入流量的架构的工作负载。

方法三也支持工作负载的零停机时间,架构复杂性较高,并且需要额外基础设施的设置成本。这更适合于那些需要零停机时间、支持热交换传入流量的架构,而不想维护拥有共享访问权的第二个加密用户的工作负载。

飞跃加速器安卓下载

结论

在本文中,我们介绍了三种可在 CloudHSM 集群上轮换加密用户密码的方法,以符合 AWS WellArchitected 框架的安全最佳实践,并满足您的合规性、监管或行业要求。每种方法在相对成本、复杂性和停机时间方面都有考虑。建议仔细考虑将其映射到您的工作负载,并选择最适合您企业和工作负载需求的方法。

如果您对本文有反馈,请在以下评论部分发表意见。如果您对本文有疑问,请在 AWS CloudHSM rePost 上启动新线程或 联系 AWS 支持。