mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-13 00:00:24 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-services/aws-sagemake
This commit is contained in:
@@ -4,27 +4,27 @@
|
||||
|
||||
## 서비스 개요
|
||||
|
||||
Amazon SageMaker는 노트북, 학습 인프라, 오케스트레이션, 레지스트리, 관리형 엔드포인트를 하나로 연결하는 AWS의 관리형 머신러닝 플랫폼입니다. SageMaker 리소스가 침해되면 일반적으로 다음을 얻을 수 있습니다:
|
||||
Amazon SageMaker는 AWS의 관리형 머신러닝 플랫폼으로, 노트북, 학습 인프라, 오케스트레이션, 레지스트리 및 관리형 엔드포인트를 통합합니다. SageMaker 리소스가 침해되면 일반적으로 다음을 확보할 수 있습니다:
|
||||
|
||||
- 광범위한 S3, ECR, Secrets Manager 또는 KMS 접근 권한을 가진 장기 실행 IAM execution roles.
|
||||
- 광범위한 S3, ECR, Secrets Manager 또는 KMS 접근 권한을 가진 장기간 유효한 IAM 실행 역할.
|
||||
- S3, EFS 또는 feature stores에 저장된 민감한 데이터셋에 대한 접근.
|
||||
- VPC 내부의 네트워크 발판(Studio apps, training jobs, endpoints).
|
||||
- 콘솔 인증을 우회하는 높은 권한의 presigned URLs.
|
||||
|
||||
SageMaker가 어떻게 구성되는지 이해하는 것은 pivot, persist 또는 exfiltrate data 전에 핵심입니다.
|
||||
pivot, persist, 또는 데이터를 exfiltrate하기 전에 SageMaker가 어떻게 구성되는지 이해하는 것이 핵심입니다.
|
||||
|
||||
## 핵심 구성 요소
|
||||
|
||||
- **Studio Domains & Spaces**: 웹 IDE (JupyterLab, Code Editor, RStudio). 각 domain에는 공유 EFS 파일 시스템과 기본 execution role이 있습니다.
|
||||
- **Notebook Instances**: 독립형 노트북을 위한 관리형 EC2 인스턴스; 별도의 execution roles를 사용합니다.
|
||||
- **Studio Domains & Spaces**: Web IDE (JupyterLab, Code Editor, RStudio). 각 도메인에는 공유 EFS 파일 시스템과 기본 실행 역할이 있습니다.
|
||||
- **Notebook Instances**: 독립형 노트북용 관리되는 EC2 인스턴스; 별도의 실행 역할을 사용합니다.
|
||||
- **Training / Processing / Transform Jobs**: ECR에서 코드를, S3에서 데이터를 가져오는 임시 컨테이너.
|
||||
- **Pipelines & Experiments**: 모든 단계, 입력, 출력 등을 기술하는 오케스트레이션된 워크플로.
|
||||
- **Models & Endpoints**: HTTPS endpoints를 통해 추론을 위해 배포되는 패키지화된 아티팩트.
|
||||
- **Feature Store & Data Wrangler**: 데이터 준비와 feature 관리를 위한 관리형 서비스.
|
||||
- **Autopilot & JumpStart**: 자동화된 ML과 큐레이션된 모델 카탈로그.
|
||||
- **MLflow Tracking Servers**: presigned access tokens가 있는 관리형 MLflow UI/API.
|
||||
- **Pipelines & Experiments**: 모든 단계, 입력 및 출력을 설명하는 오케스트레이션된 워크플로.
|
||||
- **Models & Endpoints**: HTTPS 엔드포인트를 통해 추론용으로 배포되는 패키지형 아티팩트.
|
||||
- **Feature Store & Data Wrangler**: 데이터 준비 및 feature 관리용 관리형 서비스.
|
||||
- **Autopilot & JumpStart**: 자동화된 ML 및 선별된 모델 카탈로그.
|
||||
- **MLflow Tracking Servers**: presigned 액세스 토큰을 가진 관리형 MLflow UI/API.
|
||||
|
||||
모든 리소스는 execution role, S3 위치, 컨테이너 이미지, 선택적 VPC/KMS 구성 등을 참조합니다—enumeration 동안 이들 모두를 수집하세요.
|
||||
모든 리소스는 실행 역할, S3 위치, 컨테이너 이미지 및 선택적 VPC/KMS 구성을 참조합니다 — enumeration 과정에서 이들을 모두 수집하세요.
|
||||
|
||||
## 계정 및 전역 메타데이터
|
||||
```bash
|
||||
@@ -39,7 +39,7 @@ aws sagemaker list-models --region $REGION --query 'Models[].ExecutionRoleArn' -
|
||||
# Generic tag sweep across any SageMaker ARN you know
|
||||
aws sagemaker list-tags --resource-arn <sagemaker-arn> --region $REGION
|
||||
```
|
||||
cross-account trust (execution roles or S3 buckets with external principals) 및 service control policies 또는 SCPs와 같은 기본 제한사항을 확인하고 기록하세요.
|
||||
cross-account trust (execution roles or S3 buckets with external principals) 및 service control policies 또는 SCPs와 같은 기본 제한 사항을 기록하세요.
|
||||
|
||||
## Studio 도메인, 앱 및 공유 공간
|
||||
```bash
|
||||
@@ -64,10 +64,10 @@ aws sagemaker describe-studio-lifecycle-config --studio-lifecycle-config-name <n
|
||||
|
||||
- `DomainArn`, `AppSecurityGroupIds`, `SubnetIds`, `DefaultUserSettings.ExecutionRole`.
|
||||
- 마운트된 EFS (`HomeEfsFileSystemId`) 및 S3 홈 디렉터리.
|
||||
- Lifecycle scripts (종종 bootstrap 자격증명이나 추가 코드의 push/pull을 포함합니다).
|
||||
- Lifecycle scripts (종종 부트스트랩 자격증명이나 push/pull 추가 코드를 포함함).
|
||||
|
||||
> [!TIP]
|
||||
> Presigned Studio URLs는 광범위하게 부여되면 인증을 우회할 수 있습니다.
|
||||
> Presigned Studio URLs은(는) 광범위하게 권한을 부여하면 인증을 우회할 수 있습니다.
|
||||
|
||||
## Notebook Instances & Lifecycle Configs
|
||||
```bash
|
||||
@@ -76,13 +76,13 @@ aws sagemaker describe-notebook-instance --notebook-instance-name <name> --regio
|
||||
aws sagemaker list-notebook-instance-lifecycle-configs --region $REGION
|
||||
aws sagemaker describe-notebook-instance-lifecycle-config --notebook-instance-lifecycle-config-name <cfg> --region $REGION
|
||||
```
|
||||
노트북 메타데이터는 다음을 드러냅니다:
|
||||
Notebook 메타데이터는 다음을 드러냅니다:
|
||||
|
||||
- 실행 역할 (`RoleArn`), 직접 인터넷 액세스 여부(또는 VPC 전용 모드).
|
||||
- 실행 역할 (`RoleArn`), 직접 인터넷 액세스 또는 VPC-only 모드.
|
||||
- `DefaultCodeRepository`, `DirectInternetAccess`, `RootAccess`에 있는 S3 위치.
|
||||
- 자격증명 또는 persistence 후크를 위한 라이프사이클 스크립트.
|
||||
- 자격 증명 또는 지속성 훅을 위한 Lifecycle 스크립트.
|
||||
|
||||
## 학습, 처리, 변환 및 배치 작업
|
||||
## Training, Processing, Transform 및 Batch 작업
|
||||
```bash
|
||||
aws sagemaker list-training-jobs --region $REGION
|
||||
aws sagemaker describe-training-job --training-job-name <job> --region $REGION
|
||||
@@ -95,10 +95,10 @@ aws sagemaker describe-transform-job --transform-job-name <job> --region $REGION
|
||||
```
|
||||
면밀히 검토:
|
||||
|
||||
- `AlgorithmSpecification.TrainingImage` / `AppSpecification.ImageUri` – 어떤 ECR 이미지가 배포되었는지.
|
||||
- `InputDataConfig` & `OutputDataConfig` – S3 버킷, 프리픽스, 및 KMS 키.
|
||||
- `ResourceConfig.VolumeKmsKeyId`, `VpcConfig`, `EnableNetworkIsolation` – 네트워크 또는 암호화 구성을 판단.
|
||||
- `HyperParameters` 환경 비밀 또는 연결 문자열을 leak할 수 있음.
|
||||
- `AlgorithmSpecification.TrainingImage` / `AppSpecification.ImageUri` – 어떤 ECR images가 배포되었는지.
|
||||
- `InputDataConfig` & `OutputDataConfig` – S3 buckets, prefixes, 및 KMS keys.
|
||||
- `ResourceConfig.VolumeKmsKeyId`, `VpcConfig`, `EnableNetworkIsolation` – 네트워크 또는 암호화 포지처를 판단합니다.
|
||||
- `HyperParameters` may leak 환경 비밀 또는 연결 문자열.
|
||||
|
||||
## 파이프라인, 실험 및 트라이얼
|
||||
```bash
|
||||
@@ -110,7 +110,7 @@ aws sagemaker list-experiments --region $REGION
|
||||
aws sagemaker list-trials --experiment-name <experiment> --region $REGION
|
||||
aws sagemaker list-trial-components --trial-name <trial> --region $REGION
|
||||
```
|
||||
파이프라인 정의는 각 단계, 관련 역할, 컨테이너 이미지 및 환경 변수를 상세히 기술합니다. 실험 구성 요소는 종종 학습 아티팩트 URI, S3 로그 및 민감한 데이터 흐름을 암시하는 메트릭을 포함합니다.
|
||||
파이프라인 정의는 각 단계, 관련 역할, 컨테이너 이미지 및 환경 변수를 상세히 설명합니다. Trial 구성 요소에는 종종 훈련 아티팩트 URIs, S3 로그 및 민감한 데이터 흐름을 암시하는 지표가 포함되어 있습니다.
|
||||
|
||||
## 모델, 엔드포인트 구성 및 배포된 엔드포인트
|
||||
```bash
|
||||
@@ -125,9 +125,9 @@ aws sagemaker describe-endpoint --endpoint-name <endpoint> --region $REGION
|
||||
```
|
||||
중점 영역:
|
||||
|
||||
- 모델 아티팩트 S3 URI들 (`PrimaryContainer.ModelDataUrl`) 및 추론 컨테이너 이미지.
|
||||
- 로그 exfil 가능성을 고려한 Endpoint 데이터 캡처 구성 (S3 버킷, KMS).
|
||||
- S3DataSource 또는 ModelPackage를 사용하는 멀티 모델 엔드포인트 (크로스-계정 패키징 여부 확인).
|
||||
- 모델 아티팩트 S3 URIs (`PrimaryContainer.ModelDataUrl`)와 추론 컨테이너 이미지.
|
||||
- 가능한 log exfil을 위한 Endpoint 데이터 캡처 구성 (S3 bucket, KMS).
|
||||
- `S3DataSource` 또는 `ModelPackage`를 사용하는 멀티-모델 엔드포인트(교차 계정 패키징 확인).
|
||||
- 엔드포인트에 연결된 네트워크 구성 및 보안 그룹.
|
||||
|
||||
## Feature Store, Data Wrangler & Clarify
|
||||
@@ -141,13 +141,13 @@ aws sagemaker describe-data-wrangler-flow --flow-name <flow> --region $REGION
|
||||
aws sagemaker list-model-quality-job-definitions --region $REGION
|
||||
aws sagemaker list-model-monitoring-schedule --region $REGION
|
||||
```
|
||||
보안 요약:
|
||||
Security 요점:
|
||||
|
||||
- Online feature store는 데이터를 Kinesis로 복제합니다; `OnlineStoreConfig.SecurityConfig.KmsKeyId`와 VPC를 확인하세요.
|
||||
- Data Wrangler flows는 종종 JDBC/Redshift 자격증명 또는 프라이빗 엔드포인트를 포함합니다.
|
||||
- Clarify/Model Monitor 작업은 데이터를 S3로 내보내며, 해당 데이터가 퍼블릭(읽기 가능)하거나 교차 계정 접근이 가능할 수 있습니다.
|
||||
- Online feature stores는 데이터를 Kinesis로 복제합니다. `OnlineStoreConfig.SecurityConfig.KmsKeyId`와 VPC를 확인하세요.
|
||||
- Data Wrangler flows는 종종 JDBC/Redshift 자격 증명이나 프라이빗 엔드포인트를 포함합니다.
|
||||
- Clarify/Model Monitor jobs는 데이터를 S3로 내보내며, 해당 데이터가 전 세계에서 읽을 수 있는 상태(world-readable)이거나 계정 간 접근(cross-account) 가능할 수 있습니다.
|
||||
|
||||
## MLflow 추적 서버, Autopilot & JumpStart
|
||||
## MLflow Tracking Servers, Autopilot & JumpStart
|
||||
```bash
|
||||
aws sagemaker list-mlflow-tracking-servers --region $REGION
|
||||
aws sagemaker describe-mlflow-tracking-server --tracking-server-name <name> --region $REGION
|
||||
@@ -158,15 +158,15 @@ aws sagemaker describe-auto-ml-job --auto-ml-job-name <name> --region $REGION
|
||||
aws sagemaker list-jumpstart-models --region $REGION
|
||||
aws sagemaker list-jumpstart-script-resources --region $REGION
|
||||
```
|
||||
- MLflow tracking servers는 실험과 아티팩트를 저장하며, 사전 서명된 URL은 모든 것을 노출시킬 수 있습니다.
|
||||
- MLflow tracking 서버는 실험과 아티팩트를 저장합니다; 사전 서명된 URL은 모든 것을 노출시킬 수 있습니다.
|
||||
- Autopilot 작업은 여러 training jobs를 실행합니다 — 숨겨진 데이터를 찾기 위해 출력물을 열거하세요.
|
||||
- JumpStart reference architectures는 계정에 권한이 높은 역할을 배포할 수 있습니다.
|
||||
- JumpStart 참조 아키텍처는 계정에 권한이 높은 역할을 배포할 수 있습니다.
|
||||
|
||||
## IAM 및 네트워킹 고려사항
|
||||
|
||||
- 모든 실행 역할(Studio, notebooks, training jobs, pipelines, endpoints)에 연결된 IAM 정책을 나열하세요.
|
||||
- 네트워크 컨텍스트를 확인하세요: subnets, security groups, VPC endpoints. 많은 조직이 training jobs를 격리하지만 아웃바운드 트래픽 제한을 잊습니다.
|
||||
- 외부 액세스 관점에서 `ModelDataUrl`, `DataCaptureConfig`, `InputDataConfig`에서 참조되는 S3 버킷 정책을 검토하세요.
|
||||
- 모든 실행 역할에 연결된 IAM 정책(Studio, notebooks, training jobs, pipelines, endpoints)을 열거하세요.
|
||||
- 네트워크 컨텍스트를 확인하세요: subnets, security groups, VPC endpoints. 많은 조직이 학습 작업을 분리하지만 아웃바운드 트래픽 제한을 잊습니다.
|
||||
- 외부 접근을 위해 `ModelDataUrl`, `DataCaptureConfig`, `InputDataConfig`에서 참조되는 S3 버킷 정책을 검토하세요.
|
||||
|
||||
## Privilege Escalation
|
||||
|
||||
|
||||
Reference in New Issue
Block a user