翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
PCS AWS でクラスターシークレットをローテーションする
クラスターシークレットを更新してセキュリティ要件に準拠し、潜在的な侵害に対処します。このプロセスでは、クラスターをメンテナンスモードにする必要があります。
注記
デフォルトでは、 AWS PCS はクラスターシークレットを で暗号化します AWS マネージドキー。代わりにカスタマーマネージドキーで暗号化する場合は、キーポリシーが PCS AWS サービスにリンクされたロールにキーへのアクセスを許可していることを確認してください。そうしないと、 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返し、PCS AWS は更新が完了するまでそれ以降の更新リクエストを拒否します。インスタンスが存在することの確認ACTIVEとして を使用しないでください。 -
-
Secrets Manager を使用してローテーションを開始します。
-
コンソールメソッド:
-
Secrets Manager に移動し、クラスターシークレットを選択し、シークレットのローテーションを選択します。
-
-
API メソッド:
-
Secrets Manager
rotate-secretAPI を使用します。
-
-
-
ローテーションが成功したことを確認します。
注記
この
rotate-secret呼び出しは、後でローテーションが失敗しても HTTP 200 を返します。結果は後で個別のRotationFailedまたはRotationSucceededイベントとして到着します。200 レスポンスは、PCS AWS がリクエストを受け入れたことのみを確認し、ローテーションが成功したことは確認しません。-
を実行して
describe-secret、AWSCURRENTステージングラベルが新しいバージョンに移動し、それがlastRotatedDate更新されたことを確認します。 -
または、AWS CloudTrail で
RotationSucceededイベントを待ちます。
注記
バージョンを検査
list-secret-version-idsするにはdescribe-secret、 ではなく を使用します。 は、 を指定してもAWSPENDINGバージョンを省略list-secret-version-idsできます--include-deprecated。 -
-
ローテーションが成功したら、クラスターの容量を復元します。
-
UpdateComputeNodeGroup API を使用して、ノードグループを希望の最小/最大容量にリセットします。
-
PCS AWS マネージドログインノードの場合: 追加のアクションは必要ありません。
-
BYO ログインノードの場合:
-
ログインノードに接続します。
-
Secrets Manager の新しいシークレット
/etc/slurm/slurm.keyで を更新します。 -
Slurm Auth デーモンと Cred Kiosk デーモン (sackd) を再起動します。
-
-
ストランド保留中のバージョンからの復旧
ローテーションが失敗すると、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バージョンと比較し、ノードが古いキーにないことを確認します。キーマテリアルを印刷するのではなく、ハッシュを比較することをお勧めします。