本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 AWS PCS 中輪換叢集秘密
輪換您的叢集秘密以符合安全要求,並解決潛在的入侵。此程序需要讓您的叢集進入維護模式。
注意
根據預設, AWS PCS 會使用 加密叢集秘密 AWS 受管金鑰。如果您改用客戶受管金鑰進行加密,請確定金鑰政策授予 AWS PCS 服務連結角色對金鑰的存取權。否則, AWS PCS 無法輪換秘密。如需詳細資訊,請參閱使用客戶受管金鑰來加密叢集秘密。
先決條件
-
具有
secretsmanager:RotateSecret許可的 IAM 角色 -
叢集處於
ACTIVE或UPDATE_FAILED狀態
程序
-
通知叢集使用者即將到來的維護時段。
-
透過將所有運算節點群組擴展到 0 容量,將叢集置於維護模式。
-
使用 UpdateComputeNodeGroup API,將所有運算節點群組的 minInstanceCount 和 maxInstanceCount 設定為 0。
-
等到所有節點停止。
-
(選用) 使用 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視為執行個體存在的確認。 -
-
透過 Secrets Manager 啟動輪換。
-
主控台方法:
-
導覽至 Secrets Manager,選取叢集秘密,然後選擇輪換秘密。
-
-
API 方法:
-
使用 Secrets Manager
rotate-secretAPI。
-
-
-
確認輪換成功。
注意
即使稍後輪換失敗,
rotate-secret呼叫仍會傳回 HTTP 200。結果稍後會以個別RotationFailed或RotationSucceeded事件的形式送達。200 回應只會確認 AWS PCS 接受請求,而不是輪換成功。-
執行
describe-secret並確認AWSCURRENT預備標籤已移至新版本且lastRotatedDate已更新。 -
或者,在 AWS CloudTrail 中等待
RotationSucceeded事件。
注意
使用
describe-secret而非list-secret-version-ids來檢查版本。即使您指定 ,list-secret-version-ids也可以省略AWSPENDING版本--include-deprecated。 -
-
輪換成功後,請還原叢集容量。
-
使用 UpdateComputeNodeGroup API 將節點群組重設為所需的最小/最大容量。
-
對於 AWS PCS 受管登入節點:不需要其他動作。
-
對於 BYO 登入節點:
-
連線至登入節點。
-
/etc/slurm/slurm.key使用 Secrets Manager 的新秘密進行更新。 -
重新啟動 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-idsecret-arn\ --version-stage AWSPENDING \ --remove-from-version-idpending-version-id
驗證輪換
若要確認 Slurm 控制器可連線且節點狀態良好,請使用 scontrol ping和 scontrol show nodes。請勿使用 sinfo 來檢查沒有佇列的叢集,因為在這種情況下不會sinfo顯示任何內容,而且不是有效的檢查。
若要確認節點使用目前的金鑰,請將 base64 解碼AWSCURRENT秘密的 SHA-256 雜湊與節點/etc/slurm/slurm.key上的 雜湊進行比較:
sha256sum /etc/slurm/slurm.key
也請將節點雜湊與 AWSPREVIOUS版本進行比較,以證明節點不在過時金鑰上。我們建議您比較雜湊,而不是列印金鑰材料。