View a markdown version of this page

轮换集群密钥 AWS 个 - AWS 个

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

轮换集群密钥 AWS 个

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

注意

默认情况下, AWS PCS 使用加密集群密钥。 AWS 托管式密钥如果您改用客户管理的密钥对其进行加密,请确保密钥策略授予 AWS PCS 服务相关角色访问该密钥的权限。否则, AWS PCS 无法轮换密钥。有关更多信息,请参阅 使用客户管理的密钥加密集群密钥

先决条件

  • 具有secretsmanager:RotateSecret权限的 IAM 角色

  • 集群处于ACTIVEUPDATE_FAILED状态

过程

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

  2. 将所有计算节点组扩展到 0 容量,将集群置于维护模式。

    1. 使用 UpdateComputeNodeGroup API 将所有计算节点组的最小值InstanceCount 和最大值InstanceCount 均设置为 0。

    2. 等到所有节点停止。

    3. (可选)在终止容量之前,使用 Slurm 命令耗尽调度程序队列,以便顺利处理任务。

    注意

    轮换需要零个运行实例。如果开始轮换时实例仍在运行,则轮换将失败并出现以下错误:

    All instances must be terminated before you rotate a secret. Set the minimum instance count to 0 to terminate active instances.
    注意

    在缩减期间实例仍在终止ACTIVE时,计算节点组可以报告。它还可以在向上扩展期间ACTIVE在任何实例存在之前进行报告。扩展可能需要几分钟,最多大约 30 分钟。如果计算节点组是UPDATING,则get-compute-node-group返回更新前的缩放值, AWS PCS 会拒绝进一步的更新请求,直到更新完成。不要将实例存在ACTIVE视为确认。

  3. 通过密钥管理器启动轮换。

    • 控制台方法

      1. 导航到密钥管理器,选择您的集群密钥,然后选择轮换密钥

    • API 方法

      1. 使用密钥管理器 rotate-secret API。

  4. 确认旋转成功。

    注意

    即使稍后轮换失败,该rotate-secret调用也会返回 HTTP 200。结果稍后以单独RotationFailedRotationSucceeded事件的形式出现。200 响应仅确认了 AWS PCS 接受了请求,而不是轮换成功。

    1. 运行describe-secret并确认AWSCURRENT暂存标签已移至新版本并已lastRotatedDate更新。

    2. 或者,等待 AWS 中的RotationSucceeded事件 CloudTrail。

    注意

    使用describe-secret而不是list-secret-version-ids检查版本。list-secret-version-ids即使您指定--include-deprecated,也可以省略AWSPENDING版本。

  5. 成功轮换后,恢复群集容量。

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

    2. 对于 AWS PCS-managed 登录节点:无需执行其他操作。

    3. 对于 BYO 登录节点:

      1. 连接到登录节点。

      2. /etc/slurm/slurm.key使用密钥管理器的新密钥进行更新。

      3. 重启 Slurm Auth 和 Cred Kiosk 守护程序(sackd)。

从搁浅的待处理版本中恢复

轮换失败可能会将版本限制在AWSPENDING暂存标签上,并阻止以后的轮换,错误如下:

A previous rotation isn't complete. That rotation will be reattempted.

仅此cancel-rotate-secret命令并不能删除AWSPENDING暂存标签,而是将其设置RotationEnabledfalse。要清除搁置版本,请从待处理版本中移除AWSPENDING暂存标签:

aws secretsmanager update-secret-version-stage \ --secret-id secret-arn \ --version-stage AWSPENDING \ --remove-from-version-id pending-version-id

验证旋转

要确认 Slurm 控制器可访问且节点运行正常,请使用scontrol ping和。scontrol show nodes不要sinfo用来检查没有队列的集群,因为在这种情况下什么都不sinfo显示,也不是有效的检查。

要确认节点使用当前密钥,请将 base64 解码后的AWSCURRENT密钥的 SHA-256 哈希值与节点/etc/slurm/slurm.key上的哈希值进行比较:

sha256sum /etc/slurm/slurm.key

还要将节点哈希值与AWSPREVIOUS版本进行比较,以证明节点的密钥不是过时的。我们建议您比较哈希值,而不是打印密钥材料。