View a markdown version of this page

PCS AWS でクラスターシークレットをローテーションする - AWS PCS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

PCS AWS でクラスターシークレットをローテーションする

クラスターシークレットを更新してセキュリティ要件に準拠し、潜在的な侵害に対処します。このプロセスでは、クラスターをメンテナンスモードにする必要があります。

注記

デフォルトでは、 AWS PCS はクラスターシークレットを で暗号化します AWS マネージドキー。代わりにカスタマーマネージドキーで暗号化する場合は、キーポリシーが PCS AWS サービスにリンクされたロールにキーへのアクセスを許可していることを確認してください。そうしないと、 AWS PCS はシークレットをローテーションできません。詳細については、「カスタマーマネージドキーを使用してクラスターシークレットを暗号化する」を参照してください。

前提条件

  • アクセスsecretsmanager:RotateSecret許可を持つ IAM ロール

  • ACTIVE または UPDATE_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返し、PCS AWS は更新が完了するまでそれ以降の更新リクエストを拒否します。インスタンスが存在することの確認ACTIVEとして を使用しないでください。

  3. Secrets Manager を使用してローテーションを開始します。

    • コンソールメソッド:

      1. Secrets Manager に移動し、クラスターシークレットを選択し、シークレットのローテーションを選択します。

    • API メソッド:

      1. Secrets Manager rotate-secret API を使用します。

  4. ローテーションが成功したことを確認します。

    注記

    このrotate-secret呼び出しは、後でローテーションが失敗しても HTTP 200 を返します。結果は後で個別の RotationFailedまたは RotationSucceededイベントとして到着します。200 レスポンスは、PCS AWS がリクエストを受け入れたことのみを確認し、ローテーションが成功したことは確認しません。

    1. を実行してdescribe-secretAWSCURRENTステージングラベルが新しいバージョンに移動し、それがlastRotatedDate更新されたことを確認します。

    2. または、AWS CloudTrail でRotationSucceededイベントを待ちます。

    注記

    バージョンを検査list-secret-version-idsするにはdescribe-secret、 ではなく を使用します。 は、 を指定してもAWSPENDINGバージョンを省略list-secret-version-idsできます--include-deprecated

  5. ローテーションが成功したら、クラスターの容量を復元します。

    1. UpdateComputeNodeGroup API を使用して、ノードグループを希望の最小/最大容量にリセットします。

    2. PCS AWS マネージドログインノードの場合: 追加のアクションは必要ありません。

    3. BYO ログインノードの場合:

      1. ログインノードに接続します。

      2. Secrets Manager の新しいシークレット/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ステージングラベルは削除されず、 が 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 pingと を使用しますscontrol show nodes。キューがないクラスターのチェックsinfoに を使用しないでください。この場合、 は何もsinfo表示せず、有効なチェックではないためです。

ノードが現在のキーを使用していることを確認するには、base64 でデコードされたAWSCURRENTシークレットの SHA-256 ハッシュをノード/etc/slurm/slurm.key上の のハッシュと比較します。

sha256sum /etc/slurm/slurm.key

ノードハッシュを AWSPREVIOUSバージョンと比較し、ノードが古いキーにないことを確認します。キーマテリアルを印刷するのではなく、ハッシュを比較することをお勧めします。