View a markdown version of this page

在 AWS PCS 中輪換叢集秘密 - AWS PCS

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

在 AWS PCS 中輪換叢集秘密

輪換您的叢集秘密以符合安全要求,並解決潛在的入侵。此程序需要讓您的叢集進入維護模式。

注意

根據預設, AWS PCS 會使用 加密叢集秘密 AWS 受管金鑰。如果您改用客戶受管金鑰進行加密,請確定金鑰政策授予 AWS PCS 服務連結角色對金鑰的存取權。否則, AWS PCS 無法輪換秘密。如需詳細資訊,請參閱使用客戶受管金鑰來加密叢集秘密

先決條件

  • 具有 secretsmanager:RotateSecret 許可的 IAM 角色

  • 叢集處於 ACTIVEUPDATE_FAILED 狀態

程序

  1. 通知叢集使用者即將到來的維護時段。

  2. 透過將所有運算節點群組擴展到 0 容量,將叢集置於維護模式。

    1. 使用 UpdateComputeNodeGroup API,將所有運算節點群組的 minInstanceCount 和 maxInstanceCount 設定為 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. 透過 Secrets Manager 啟動輪換。

    • 主控台方法

      1. 導覽至 Secrets Manager,選取叢集秘密,然後選擇輪換秘密

    • API 方法

      1. 使用 Secrets Manager rotate-secret API。

  4. 確認輪換成功。

    注意

    即使稍後輪換失敗,rotate-secret呼叫仍會傳回 HTTP 200。結果稍後會以個別 RotationFailedRotationSucceeded事件的形式送達。200 回應只會確認 AWS PCS 接受請求,而不是輪換成功。

    1. 執行describe-secret並確認AWSCURRENT預備標籤已移至新版本且lastRotatedDate已更新。

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

    注意

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

  5. 輪換成功後,請還原叢集容量。

    1. 使用 UpdateComputeNodeGroup API 將節點群組重設為所需的最小/最大容量。

    2. 對於 AWS PCS 受管登入節點:不需要其他動作。

    3. 對於 BYO 登入節點:

      1. 連線至登入節點。

      2. /etc/slurm/slurm.key 使用 Secrets Manager 的新秘密進行更新。

      3. 重新啟動 Slurm Auth 和 Cred Kiosk Daemon (已封裝)。

從擱置版本復原

失敗的輪換可以在AWSPENDING預備標籤綁定版本,並在稍後的輪換時封鎖下列錯誤:

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

cancel-rotate-secret 命令本身不會移除AWSPENDING預備標籤,而且會RotationEnabled設定為 false。若要清除絞線版本,請從待定版本移除AWSPENDING預備標籤:

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

驗證輪換

若要確認 Slurm 控制器可連線且節點狀態良好,請使用 scontrol pingscontrol show nodes。請勿使用 sinfo 來檢查沒有佇列的叢集,因為在這種情況下不會sinfo顯示任何內容,而且不是有效的檢查。

若要確認節點使用目前的金鑰,請將 base64 解碼AWSCURRENT秘密的 SHA-256 雜湊與節點/etc/slurm/slurm.key上的 雜湊進行比較:

sha256sum /etc/slurm/slurm.key

也請將節點雜湊與 AWSPREVIOUS版本進行比較,以證明節點不在過時金鑰上。我們建議您比較雜湊,而不是列印金鑰材料。