View a markdown version of this page

HyperPod Ray 엔드포인트 운영자의 보안 모범 사례 - Amazon SageMaker AI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

HyperPod Ray 엔드포인트 운영자의 보안 모범 사례

다음 모범 사례는 HyperPod Ray 엔드포인트 운영자 배포를 보호하는 데 도움이 됩니다. 설치 지침은 HyperPod Ray 엔드포인트 운영자 설치을 확인하세요.

KMS 서명 구성

JWT 서명 AWS KMS 키가 로컬이 AWS KMS 아닌에서 생성되도록 키를 사용하여 HyperPod Ray 엔드포인트 연산자를 설치하는 것이 좋습니다. 이렇게 하면 out-of-band 취소 메커니즘이 제공됩니다. 클러스터 액세스 없이 AWS KMS 키를 비활성화하여 모든 세션을 무효화할 수 있습니다. 또한 CloudTrail은 각 키 생성 이벤트를 기록하여 키 교체 서명에 대한 감사 추적을 제공합니다. 설정 지침은 KMS 서명 설정(권장) 섹션을 참조하세요.

미리 서명된 URLs

미리 서명된 URL은 작업 로그, 스크립트, 지표 및 환경 변수를 포함하는 Ray 클러스터의 대시보드에 대한 인증된 액세스 권한을 부여합니다. URL이 있는 사람은 토큰이 만료될 때까지 대시보드에 액세스할 수 있습니다. URL에 포함된 토큰은 15분 동안 유효합니다. 해당 기간 내에 URL에 액세스하는 경우 모든 세션을 취소하지 않는 한 결과 세션은 최대 6시간 동안 유효합니다.

토큰과 세션 쿠키는 모두 단일 클러스터의 퍼블릭 엔드포인트로 범위가 지정되며 HyperPod Ray 엔드포인트 운영자의 인증된 경로를 통해 다른 클러스터에 액세스하는 데 사용할 수 없습니다.

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 배포 이미지에 사전 설치되어 있습니다. 자세한 내용은 도구 키트 라이브러리를 사용하여 원격으로 작업 제출 단원을 참조하십시오.

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

Ray 대시보드에 대한 클러스터 내 액세스 제한

HyperPod Ray 엔드포인트 운영자는 퍼블릭 엔드포인트를 통해 액세스를 인증하지만 헤드 서비스의 Ray 대시보드 포트(8265)는 인증 없이 클러스터 네트워크 내에서 액세스할 수 있습니다. Ray가 아닌 워크로드에서 대시보드 액세스를 제한하려면 헤드 컨테이너RAY_ENABLE_K8S_TOKEN_AUTH=true에서 Ray의 Kubernetes RBAC 인증 모드(RAY_AUTH_MODE=token 및 )를 활성화합니다. 이를 위해서는 Ray 2.55 이상 및 KubeRay 1.6 이상이 필요합니다. 활성화하면 Ray 헤드는 ray:write 권한이 있는 유효한 Kubernetes ServiceAccount 토큰을 보유하지 않는 요청을 거부합니다. 자세한 내용은 Ray 설명서의 KubeRay RBAC 구성을 참조하세요.

클러스터를 공유하는 사용자 간에 더 강력한 격리를 위해 별도의 네임스페이스에 RayClusters를 배포하고 포트 8265의 수신을 운영자 네임스페이스()의 Traefik 포드로만 제한하는 NetworkPolicies를 적용합니다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 엔드포인트 운영자는 역할 세션 이름(예: )을 포함하는 전체 IAM 보안 주체 ARN으로 사용자를 식별합니다arn:aws:sts::123456789012:assumed-role/DataScientist/alice. 여러 사용자가 동일한 세션 이름으로 동일한 IAM 역할을 수임하는 경우 연산자는 둘을 구분할 수 없으며 동일한 자격 증명으로 취급합니다.

사용자가 실행 역할을 공유할 때 사용자별 액세스 제어를 활성화하려면 각 사용자에 대해 고유한 세션 이름을 구성합니다. 자세한 내용은 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 Management Console 또는를 사용하여에서 키를 비활성화합니다 AWS CLI. 자세한 내용은 AWS KMS 개발자 안내서의 키 활성화 및 비활성화를 참조하세요.

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

기존 서명 키는 30분 이내에 만료됩니다. 이전 서명 키로 설정된 활성 세션은 교체로 인해 해당 키가 무효화될 때까지 유효합니다. 교체자가 새 키를 생성한 후에는 이전 키로 서명된 세션을 더 이상 확인할 수 없으며 효과적으로 취소됩니다.

대시보드 액세스 감사

로그 수집 및 보존을 위해 Amazon CloudWatch Observability Amazon EKS 추가 기능을 설치하는 것이 좋습니다. 자세한 내용은 Amazon CloudWatch 사용 설명서의 CloudWatch 관찰성 EKS 추가 기능 설치를 참조하세요. Amazon CloudWatch

HyperPod Ray 엔드포인트 운영자는 authmiddleware 컨테이너/aws/containerinsights/eks-cluster-name/application에서에 액세스 로그를 씁니다. 다음을 검색합니다.

  • "Session established" - JWT 토큰이 세션 쿠키로 성공적으로 교환되면 기록됩니다.

  • "cluster accessed" - 세션 쿠키를 사용하는 모든 후속 요청에 기록됩니다.

차트 Helm을 최신 상태로 유지

중요

배포된 차트는 보안 업데이트를 자동으로 수신하지 않습니다. 사용 가능한 차트가 되면 수동으로 최신 차트로 업그레이드해야 합니다.

최신 보안 수정 및 개선 사항이 있는지 확인하려면 HyperPod Ray 엔드포인트 운영자 차트 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"