

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 AWS PCS 中轮换集群密钥
<a name="cluster-secret-rotation"></a>

使用 AWS Secrets Manager 托管轮换在 AWS PCS 中轮换集群密钥。定期轮换密钥是在 HPC 环境中保持强大安全态势的最佳安全实践。此功能使您能够满足行业合规标准，包括要求定期轮换证书的 HIPAA 和 FedRAMP。

集群密钥有两个用途：对加入集群的计算节点进行身份验证，以及作为 Slurm REST API 身份验证的 JWT 密钥。旋转时，两个方面会同时受到影响。

## 集群密钥轮换的工作原理
<a name="cluster-secret-rotation-overview"></a>

手动准备以在密钥轮换期间保持集群的稳定性：

1. **准备** — 将所有计算节点组的容量扩展到 0 并确保没有作业在运行

1. **轮换** — 通过 Secrets Manager 控制台或 API 启动轮换

1. **监控**-通过 CloudTrail 事件跟踪进度

1. **恢复**-将计算节点组扩展回所需的容量

在轮换期间，您的集群将保持`ACTIVE`状态，并且继续正常计费。该过程通常需要几分钟。

## 要求和限制
<a name="cluster-secret-rotation-requirements"></a>

在轮换集群密钥之前，请完成以下要求：
+ 集群必须处于`ACTIVE`或`UPDATE_FAILED`状态
+ IAM 角色必须拥有`secretsmanager:RotateSecret`权限
+ 所有计算节点组的容量都必须扩展到 0
+ 轮换前停止所有作业

限制：
+ 每次轮换都需要手动准备
+ 现有的 JWT 代币失效，需要重新发行
+ BYO 登录节点需要在轮换后手动更新密钥

**Topics**
+ [集群密钥轮换的工作原理](#cluster-secret-rotation-overview)
+ [要求和限制](#cluster-secret-rotation-requirements)
+ [在 AWS PCS 中轮换集群密钥](cluster-secret-rotation-procedure.md)
+ [有关 AWS PCS 中集群密钥轮换的常见问题](cluster-secret-rotation-faq.md)
+ [排除 AWS PCS 中集群密钥轮换的问题](cluster-secret-rotation-troubleshooting.md)

# 在 AWS PCS 中轮换集群密钥
<a name="cluster-secret-rotation-procedure"></a>

轮换您的集群密钥以符合安全要求并解决潜在的漏洞。此过程需要将您的集群置于维护模式。

## 先决条件
<a name="cluster-secret-rotation-procedure-prerequisites"></a>
+ 具有`secretsmanager:RotateSecret`权限的 IAM 角色
+ 集群处于`ACTIVE`或`UPDATE_FAILED`状态

## 过程
<a name="cluster-secret-rotation-procedure-steps"></a>

1. 通知集群用户即将到来的维护时段。

1. 通过将所有计算节点组缩放到 0 容量，将集群置于维护模式。

   1. 使用 UpdateComputeNodeGroup API 将所有计算节点组 maxInstanceCount 的 minInstanceCount 和设置为 0。

   1. 等到所有节点停止。

   1. 可选：在终止容量以优雅地处理任务之前，使用 Slurm 命令耗尽调度器队列。

1. 通过 Secrets Manager 启动轮换。
   + **控制台方法**：

     1. 导航到 Secrets Manager，选择您的集群密钥，然后选择**轮换密钥**。
   + **API 方法**：

     1. 使用 Secrets Manager `rotate-secret` API。

1. 监控轮换进度。

   1. 通过 CloudTrail 事件跟踪进度。

   1. `lastRotatedDate`通过 Secrets Manager 控制台或 `secretsmanager:describeSecret` API 进行查看。

   1. 等待我们的`RotationSucceeded``RotationFailed` CloudTrail 活动。

1. 成功轮换后，恢复集群容量。

   1. 使用 UpdateComputeNodeGroup API 将节点组重置为所需 min/max 容量。

   1. 对于 AWS PC 管理的登录节点：无需执行其他操作。

   1. 对于 BYO 登录节点：

      1. Connect 连接到登录节点。

      1. 使用 Sec `/etc/slurm/slurm.key` rets Manager 中的新密钥进行更新。

      1. 重启 Slurm Auth and Cred Kiosk 守护程序（sackd）。

# 有关 AWS PCS 中集群密钥轮换的常见问题
<a name="cluster-secret-rotation-faq"></a>

查找有关 AWS PCS 中集群密钥轮换的常见问题的答案。

**什么是集群密钥？**  
集群密钥是一种安全凭证，可实现 Slurm 控制器和 AWS PCS 计算节点之间的安全通信。它还用作 Slurm REST API 身份验证的 JSON 网络令牌 (JWT) 密钥。

**集群密钥和 JWT 密钥有什么区别？**  
在 AWS PCS 中，集群密钥和 JWT 密钥是相同的资源，用于不同的用途。集群密钥对 Slurm 内部通信进行身份验证，而 JWT 密钥对 REST API 身份验证的令牌进行签名。旋转时，两个方面会同时受到影响。

**轮换需要多长时间？**  
轮换过程通常需要几分钟。您的集群仍处于 ACTIVE 状态，并且在轮换期间继续正常计费。

**我可以安排自动轮换吗？**  
你可以在 Secrets Manager 中启用定时轮换。但是，初始版本需要在每次轮换之前进行手动准备（将节点组缩放到 0）。

**我现有的 JWT 代币在轮换后还能使用吗？**  
不，现有的 JWT 代币在轮换后会失效。为 REST API 客户端发行新令牌。

**我在哪里可以找到我的集群密钥？**  
你可以在 Secrets Manager 控制台或 AWS PCS 控制台中找到你的集群密钥。有关详细说明，请参阅[用于 AWS Secrets Manager 查找集群密钥](working-with_clusters_secrets_find_secrets-manager.md)和[使用 AWS PCS 查找集群密钥](working-with_clusters_secrets_find_pcs.md)。

**为什么轮换需要将节点组缩放到 0？**  
轮换不需要正在运行的实例，以确保密钥更新过程中的集群稳定性。这样可以防止新旧密钥之间的身份验证冲突。

**此功能支持哪些合规性要求？**  
此功能使 AWS PCS能够满足行业合规标准，包括HIPAA和FedRAMP，这两个标准要求定期轮换凭证，这是其安全控制的一部分。

# 排除 AWS PCS 中集群密钥轮换的问题
<a name="cluster-secret-rotation-troubleshooting"></a>

如果环境准备不当，集群密钥轮换将失败。最常见的原因是集群中的实例处于活动状态。为防止失败：

1. 将所有节点组的容量设置为 0。

1. 等待节点停止。

1. 验证您的集群是否处于以下状态：`CREATE_FAILED``DELETE_FAILED`、`RESUMING`、`SUSPENDING`、或`SUSPENDED`。

如果轮换失败：
+ 出现一个 RotationFailed CloudTrail 事件
+ 集群密钥保持不变
+ 查看 RotationFailed 活动了解 CloudTrail 详情
+ 完成成功轮换的所有准备步骤