View a markdown version of this page

HyperPod Ray Endpoint Operator のセキュリティのベストプラクティス - Amazon SageMaker AI

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

HyperPod Ray Endpoint Operator のセキュリティのベストプラクティス

次のベストプラクティスは、HyperPod Ray Endpoint Operator のデプロイを保護するのに役立ちます。インストール手順については、「HyperPod Ray Endpoint Operator のインストール」を参照してください。

KMS 署名を設定する

JWT 署名 AWS KMS キーがローカル AWS KMS ではなく から生成されるように、 キーを使用して HyperPod Ray Endpoint Operator をインストールすることをお勧めします。これにより、out-of-band失効メカニズムが提供されます。 AWS KMS キーを無効にして、クラスターへのアクセスを必要とせずにすべてのセッションを無効にすることができます。CloudTrail は各キー生成イベントも記録し、キーローテーションに署名するための監査証跡を提供します。セットアップ手順については、「KMS 署名を設定する (推奨)」を参照してください。

署名付き URLs を共有しない

署名付き URL は、ジョブログ、スクリプト、メトリクス、環境変数を含む 1 つの Ray クラスターのダッシュボードへの認証されたアクセスを許可します。URL を持つユーザーは、トークンの有効期限が切れるまでダッシュボードにアクセスできます。URL に埋め込まれたトークンは 15 分間有効です。URL がそのウィンドウ内でアクセスされた場合、すべてのセッションを取り消しない限り、結果のセッションは最大 6 時間有効です。

トークンとセッション Cookie の両方が単一のクラスターのパブリックエンドポイントに限定されており、HyperPod Ray Endpoint Operator の認証されたパスを介して他のクラスターにアクセスするために使用することはできません。

Ray ジョブ環境変数にシークレットを保存しない

環境変数とエントリポイントスクリプトは、Ray ダッシュボードに表示されます。代わりに Kubernetes Secrets または Secrets Manager を使用します。詳細については、「 とは」を参照してください AWS Secrets Manager。 AWS Secrets Manager 「 ユーザーガイド」の「」を参照してください。

プログラムによるジョブ送信に sagemaker_ray:// を使用する

sagemaker_ray:// アドレススキームは、ターミナル出力またはログに URL を公開せずに認証を処理します。PyPI ウェブサイトの toolkit-for-ray-on-sagemaker-ai Python ライブラリはこのスキームを登録するため、Ray の標準の Jobs CLI と Python SDK はクラスターのセキュリティで保護されたエンドポイントを介して認証します。ライブラリは SageMaker AI Distribution イメージにプリインストールされています。詳細については、「ツールキットライブラリを使用したジョブのリモート送信」を参照してください。

ray job submit --address "sagemaker_ray://cluster-name/namespace" -- python train.py

Ray ダッシュボードへのクラスター内アクセスを制限する

HyperPod Ray Endpoint Operator はパブリックエンドポイントを介してアクセスを認証しますが、ヘッドサービスの Ray ダッシュボードポート (8265) には認証なしでクラスターネットワーク内からアクセスできます。Ray 以外のワークロードからのダッシュボードアクセスを制限するには、Ray の Kubernetes RBAC 認証モード (RAY_AUTH_MODE=token および ヘッドコンテナRAY_ENABLE_K8S_TOKEN_AUTH=true) を有効にします。これには、Ray 2.55 以降と KubeRay 1.6 以降が必要です。有効にすると、Ray ヘッドは、 アクセスray:write許可を持つ有効な Kubernetes ServiceAccount トークンを持たないリクエストを拒否します。詳細については、Ray ドキュメントのKubeRay RBAC 設定」を参照してください。

クラスターを共有するユーザー間の分離を強化するには、RayClusters を別々の名前空間にデプロイし、ポート 8265 の進入を制限する NetworkPolicies をオペレータ名前空間 () の Traefik ポッドのみに適用しますhyperpod-ray。これには、 を使用する Amazon VPC CNI などの NetworkPolicies を適用する CNI プラグインが必要ですENABLE_NETWORK_POLICY=true。詳細については、「Amazon EKS ユーザーガイド」の「Kubernetes ネットワークポリシー」を参照してください。

さらに、エンドユーザーの RBAC アクセス許可の範囲を絞り込みます。以下を拒否します。

  • pods/portforward on Ray ヘッドポッド

  • pods/exec オペレーターポッドまたは Traefik ポッドでの

  • create rolesまたは rolebindings

  • secrets での get

  • impersonate サービスアカウントの

Kubernetes RBAC の詳細については、「Amazon EKS ユーザーガイド」の「アイデンティティとアクセスの管理」を参照してください。

共有実行ロールに一意のセッション名を使用する

HyperPod Ray Endpoint Operator は、ロールセッション名 ( など) を含む完全な IAM プリンシパル ARN によってユーザーを識別しますarn:aws:sts::123456789012:assumed-role/DataScientist/alice。複数のユーザーが同じセッション名を持つ同じ IAM ロールを引き受ける場合、オペレーターはそれらを区別できず、同じ ID として扱います。

ユーザーが実行ロールを共有するときにユーザーごとのアクセスコントロールを有効にするには、ユーザーごとに一意のセッション名を設定します。詳細については、IAM ユーザーガイドの「sts:RoleSessionName」を参照してください。

セッションの取り消し

すべてのセッションを取り消すには (クラスターアクセスが必要)、次のコマンドを実行します。これにより、Amazon EKS クラスター内のすべての Ray クラスターのすべてのユーザーのセッションが無効になります。

kubectl patch secret hyperpod-ray-endpoint-operator-extensionapi-jwt-secret \ -n hyperpod-ray --type merge -p '{"data":null}' kubectl create job --from=cronjob/hyperpod-ray-endpoint-operator-jwt-rotator \ manual-rotate -n hyperpod-ray

を通じてすべてのセッションを取り消すには AWS KMS (クラスターアクセスは不要)、 AWS KMS AWS マネジメントコンソール または を使用して キーを無効にします AWS CLI。詳細については、AWS KMS デベロッパーガイド の「キーの有効化と無効化」を参照してください。

aws kms disable-key --key-id key-id

既存の署名キーは 30 分以内に期限切れになります。前の署名キーで確立されたアクティブなセッションは、それらのキーがローテーションによって無効化されるまで有効です。ローテーターが新しいキーを生成すると、古いキーによって署名されたセッションは検証されなくなり、実質的に取り消されます。

ダッシュボードへのアクセスを監査する

ログの収集と保持にはAmazon CloudWatch Observability Amazon EKS アドオンをインストールすることをお勧めします。詳細については、「Amazon CloudWatch ユーザーガイド」の「CloudWatch Observability EKS アドオンのインストール」を参照してください。 Amazon CloudWatch

HyperPod Ray Endpoint Operator は、authmiddlewareコンテナ/aws/containerinsights/eks-cluster-name/applicationから にアクセスログを書き込みます。以下を検索します。

  • "Session established" — JWT トークンがセッション Cookie に正常に交換されるとログに記録されます。

  • "cluster accessed" — セッション Cookie を使用する後続のすべてのリクエストにログオンします。

Helm チャートを最新の状態に保つ

重要

デプロイされたグラフは、セキュリティに関する更新を自動的に受信しません。新しいグラフが利用可能になったら、手動でアップグレードする必要があります。

HyperPod Ray Endpoint Operator Helm チャートの最新バージョンに定期的に更新して、最新のセキュリティ修正と改善を行うことをお勧めします。アップグレードするときは、Helm コマンドupgradeの installを に変更します。

helm upgrade --install hyperpod-ray-endpoint-operator \ ./helm_chart/HyperPodHelmChart/charts/hyperpod-ray-endpoint-operator \ --namespace hyperpod-ray \ --set region=region \ --set domain=your-route53-domain \ --set manager.enableEndpointsByDefault=true|false \ --set kmsKeyArn="arn:aws:kms:region:account-id:key/key-id"