View a markdown version of this page

Bewährte Sicherheitsmethoden für den HyperPod Ray Endpoint Operator - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bewährte Sicherheitsmethoden für den HyperPod Ray Endpoint Operator

Die folgenden Best Practices helfen Ihnen dabei, Ihre HyperPod Ray Endpoint Operator-Bereitstellung zu sichern. Installationsanweisungen finden Sie unter Den HyperPod Ray Endpoint Operator installieren.

Konfigurieren Sie die KMS-Signatur

Wir empfehlen, den HyperPod Ray Endpoint Operator mit einem AWS KMS Schlüssel zu installieren, sodass JWT-Signaturschlüssel von und AWS KMS nicht lokal generiert werden. Dies bietet einen Out-of-Band-Sperrmechanismus: Sie können den AWS KMS Schlüssel deaktivieren, um alle Sitzungen ungültig zu machen, ohne dass ein Cluster-Zugriff erforderlich ist. CloudTrail zeichnet außerdem jedes Ereignis bei der Schlüsselgenerierung auf, sodass Sie anhand eines Prüfprotokolls das Signieren von Schlüsselrotationen nachvollziehen können. Anweisungen zur Einrichtung finden Sie unterRichten Sie die KMS-Signatur ein (empfohlen).

Teilen Sie keine vorsignierten URLs

Eine vorsignierte URL gewährt authentifizierten Zugriff auf das Dashboard eines Ray-Clusters, das Job-Logs, Skripte, Metriken und Umgebungsvariablen enthält. Jeder mit der URL kann auf das Dashboard zugreifen, bis das Token abläuft. Das in die URL eingebettete Token ist 15 Minuten lang gültig. Wenn innerhalb dieses Fensters auf die URL zugegriffen wird, bleibt die resultierende Sitzung bis zu 6 Stunden gültig, sofern Sie nicht alle Sitzungen widerrufen.

Sowohl das Token als auch das Sitzungscookie sind auf den öffentlichen Endpunkt eines einzelnen Clusters beschränkt und können nicht für den Zugriff auf andere Cluster über den authentifizierten Pfad des HyperPod Ray Endpoint Operators verwendet werden.

Speichern Sie keine Geheimnisse in Ray-Job-Umgebungsvariablen

Umgebungsvariablen und Einstiegspunkt-Skripts sind über das Ray-Dashboard sichtbar. Verwenden Sie stattdessen Kubernetes Secrets oder Secrets Manager. Weitere Informationen finden Sie unter Was ist? AWS Secrets Managerim AWS Secrets Manager Benutzerhandbuch.

Verwenden Sie sagemaker_ray://für die programmatische Einreichung von Jobs

Das sagemaker_ray:// Adressschema verarbeitet die Authentifizierung, ohne dass eine URL in der Terminalausgabe oder in den Protokollen preisgegeben wird. Die Python-Bibliothek toolkit-for-ray-on-sagemaker-ai auf der PyPI-Website registriert dieses Schema, sodass sich die Standard-Jobs-CLI und das Python-SDK von Ray über den gesicherten Endpunkt des Clusters authentifizieren. Die Bibliothek ist in AI Distribution-Images vorinstalliert. SageMaker Weitere Informationen finden Sie unter Senden von Aufträgen aus der Ferne mit der Toolkit-Bibliothek.

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

Beschränken Sie den clusterinternen Zugriff auf Ray-Dashboards

Der HyperPod Ray Endpoint Operator authentifiziert den Zugriff über den öffentlichen Endpunkt, aber auf den Ray-Dashboard-Port (8265) des Head-Service kann vom Cluster-Netzwerk aus ohne Authentifizierung zugegriffen werden. Um den Dashboard-Zugriff von Nicht-Ray-Workloads aus einzuschränken, aktivieren Sie den Kubernetes-RBAC-Authentifizierungsmodus von Ray (und auf dem Head-Container). RAY_AUTH_MODE=token RAY_ENABLE_K8S_TOKEN_AUTH=true Dies erfordert Ray 2.55 oder höher und 1.6 oder höher. KubeRay Wenn diese Option aktiviert ist, lehnt der Ray-Head Anfragen ab, die kein gültiges ServiceAccount Kubernetes-Token mit Genehmigung enthalten. ray:write Weitere Informationen finden Sie unter KubeRay RBAC-Konfiguration in der Ray-Dokumentation.

Um eine stärkere Isolierung zwischen Benutzern zu erreichen, die sich einen Cluster teilen, sollten Sie die Bereitstellung RayClusters in separaten Namespaces durchführen und diese Option anwenden NetworkPolicies , um den Zugriff auf Port 8265 nur auf Traefik-Pods im Operator-Namespace () zu beschränken. hyperpod-ray Dazu ist ein CNI-Plug-In erforderlich, das dies NetworkPolicies durchsetzt, z. B. das Amazon VPC CNI mit. ENABLE_NETWORK_POLICY=true Weitere Informationen finden Sie unter Kubernetes-Netzwerkrichtlinien im Amazon EKS-Benutzerhandbuch.

Beschränken Sie außerdem die RBAC-Berechtigungen für Endbenutzer. Verweigern Sie Folgendes:

  • pods/portforwardauf Ray Head Pods

  • pods/execkein Operator oder Traefik-Pods

  • createein oder roles rolebindings

  • get auf secrets

  • impersonateauf Dienstkonten

Weitere Informationen zu Kubernetes RBAC finden Sie unter Identitäts- und Zugriffsmanagement im Amazon EKS-Benutzerhandbuch.

Verwenden Sie eindeutige Sitzungsnamen für gemeinsam genutzte Ausführungsrollen

Der HyperPod Ray Endpoint Operator identifiziert Benutzer anhand ihres vollständigen IAM-Prinzipal-ARN, der den Namen der Rollensitzung enthält (z. B.arn:aws:sts::123456789012:assumed-role/DataScientist/alice). Wenn mehrere Benutzer dieselbe IAM-Rolle mit demselben Sitzungsnamen übernehmen, kann der Operator sie nicht unterscheiden und behandelt sie als dieselbe Identität.

Um die Zugriffskontrolle pro Benutzer zu aktivieren, wenn Benutzer eine Ausführungsrolle gemeinsam nutzen, konfigurieren Sie für jeden Benutzer eindeutige Sitzungsnamen. Weitere Informationen finden Sie unter sts: RoleSessionName im IAM-Benutzerhandbuch.

Sperrung von Sitzungen

Führen Sie die folgenden Befehle aus, um alle Sitzungen zu widerrufen (Clusterzugriff erforderlich). Dadurch werden Sitzungen für alle Benutzer auf allen Ray-Clustern im Amazon EKS-Cluster ungültig.

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

Um alle Sitzungen über zu widerrufen AWS KMS (kein Cluster-Zugriff erforderlich), deaktivieren Sie den AWS KMS Schlüssel im AWS-Managementkonsole oder verwenden Sie den AWS CLI. Weitere Informationen finden Sie unter Schlüssel aktivieren und deaktivieren im AWS KMS Entwicklerhandbuch.

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

Bestehende Signaturschlüssel laufen innerhalb von 30 Minuten ab. Aktive Sitzungen, die mit den vorherigen Signaturschlüsseln eingerichtet wurden, bleiben gültig, bis diese Schlüssel durch die Rotation ungültig werden. Nachdem der Rotator neue Schlüssel generiert hat, können Sitzungen, die mit den alten Schlüsseln signiert wurden, nicht mehr verifiziert werden und werden effektiv widerrufen.

Überprüfen Sie den Zugriff auf das Dashboard

Wir empfehlen Ihnen, das Amazon CloudWatch Observability Amazon EKS-Add-on für die Erfassung und Aufbewahrung von Protokollen zu installieren. Weitere Informationen finden Sie unter Installieren des CloudWatch Observability EKS-Add-ons im CloudWatch Amazon-Benutzerhandbuch.

Der HyperPod Ray Endpoint Operator schreibt Zugriffsprotokolle /aws/containerinsights/eks-cluster-name/application aus dem authmiddleware Container in. Suchen Sie nach:

  • "Session established"— wird protokolliert, wenn ein JWT-Token erfolgreich gegen ein Sitzungscookie ausgetauscht wird.

  • "cluster accessed"— wird bei jeder nachfolgenden Anfrage, die das Sitzungscookie verwendet, protokolliert.

Halte das Helm-Diagramm auf dem neuesten Stand

Wichtig

Das bereitgestellte Diagramm erhält nicht automatisch Sicherheitsupdates. Sie müssen ein manuelles Upgrade auf ein neueres Diagramm durchführen, sobald es verfügbar ist.

Wir empfehlen Ihnen, das HyperPod Ray Endpoint Operator Helm-Diagramm regelmäßig auf die neueste Version zu aktualisieren, um sicherzustellen, dass Sie über die neuesten Sicherheitsupdates und Verbesserungen verfügen. Wechseln Sie beim Upgrade upgrade im Helm-Befehl install zu:

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"