mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-27 21:23:07 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-services/aws-sagemake
This commit is contained in:
@@ -4,29 +4,29 @@
|
||||
|
||||
## サービス概要
|
||||
|
||||
Amazon SageMaker は、ノートブック、トレーニングインフラ、オーケストレーション、レジストリ、マネージドエンドポイントを結びつける AWS のマネージド機械学習プラットフォームです。SageMaker リソースが侵害されると通常、次のような権限やアクセスが得られます:
|
||||
Amazon SageMaker はノートブック、トレーニングインフラ、オーケストレーション、レジストリ、マネージドエンドポイントを結びつける AWS のマネージド機械学習プラットフォームです。SageMaker リソースが侵害されると通常得られるもの:
|
||||
|
||||
- 長期的な IAM 実行ロール(広範な S3、ECR、Secrets Manager、または KMS へのアクセス権を持つ)。
|
||||
- S3、EFS、または feature stores 内に保存された機密データセットへのアクセス。
|
||||
- 広範な S3、ECR、Secrets Manager、または KMS へのアクセス権を持つ長期間有効な IAM 実行ロール。
|
||||
- S3、EFS、または feature stores に格納された機密データセットへのアクセス。
|
||||
- VPC 内のネットワーク足場(Studio apps、training jobs、endpoints)。
|
||||
- コンソール認証を回避する高権限の presigned URLs。
|
||||
- コンソール認証をバイパスする高権限の presigned URL。
|
||||
|
||||
SageMaker の構成を理解することは、ピボット、永続化、またはデータの持ち出しを行う前に重要です。
|
||||
SageMaker がどのように構成されているかを理解することは、pivot、persist、または exfiltrate data を行う前に重要です。
|
||||
|
||||
## コア構成要素
|
||||
|
||||
- **Studio Domains & Spaces**: Web IDE (JupyterLab, Code Editor, RStudio)。各ドメインは共有の EFS ファイルシステムとデフォルトの実行ロールを持ちます。
|
||||
- **Notebook Instances**: スタンドアロンのノートブック用に管理された EC2 インスタンス。実行ロールは別々に設定されます。
|
||||
- **Training / Processing / Transform Jobs**: ECR からコードを、S3 からデータを取得するエフェメラルなコンテナ。
|
||||
- **Studio Domains & Spaces**: Web IDE (JupyterLab, Code Editor, RStudio)。各 domain は共有 EFS ファイルシステムとデフォルトの実行ロールを持ちます。
|
||||
- **Notebook Instances**: スタンドアロンノートブック用のマネージド EC2 インスタンス。個別の実行ロールを使用します。
|
||||
- **Training / Processing / Transform Jobs**: ECR からコード、S3 からデータを取得するエフェメラルなコンテナ。
|
||||
- **Pipelines & Experiments**: すべてのステップ、入力、出力を記述するオーケストレーションされたワークフロー。
|
||||
- **Models & Endpoints**: HTTPS エンドポイント経由で推論にデプロイされるパッケージ化されたアーティファクト。
|
||||
- **Feature Store & Data Wrangler**: データ準備と特徴量管理のためのマネージドサービス。
|
||||
- **Autopilot & JumpStart**: 自動化された ML とキュレーションされたモデルカタログ。
|
||||
- **MLflow Tracking Servers**: presigned アクセストークンを使ったマネージドな MLflow UI/API。
|
||||
- **Feature Store & Data Wrangler**: データ準備とフィーチャ管理のためのマネージドサービス。
|
||||
- **Autopilot & JumpStart**: 自動化された ML とキュレートされたモデルカタログ。
|
||||
- **MLflow Tracking Servers**: presigned アクセストークンを用いるマネージド MLflow UI/API。
|
||||
|
||||
すべてのリソースは実行ロール、S3 の位置、コンテナイメージ、および任意の VPC/KMS 構成を参照しているため、列挙時にそれらをすべて取得してください。
|
||||
すべてのリソースは実行ロール、S3 ロケーション、コンテナイメージ、そしてオプションの VPC/KMS 設定を参照します — 列挙時にこれらをすべて記録してください。
|
||||
|
||||
## アカウントとグローバルメタデータ
|
||||
## アカウント & グローバルメタデータ
|
||||
```bash
|
||||
REGION=us-east-1
|
||||
# Portfolio status, used when provisioning Studio resources
|
||||
@@ -39,9 +39,9 @@ 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
|
||||
```
|
||||
クロスアカウントの信頼関係(execution roles または S3 buckets に external principals が含まれている場合)や、service control policies や SCPs のようなベースライン制限を記録してください。
|
||||
クロスアカウントの信頼関係(execution roles や external principals を持つ S3 バケットなど)および service control policies(SCPs)などのベースラインの制限を記録してください。
|
||||
|
||||
## Studio ドメイン、アプリ & 共有スペース
|
||||
## Studio ドメイン、Apps & Shared Spaces
|
||||
```bash
|
||||
aws sagemaker list-domains --region $REGION
|
||||
aws sagemaker describe-domain --domain-id <domain-id> --region $REGION
|
||||
@@ -63,26 +63,26 @@ aws sagemaker describe-studio-lifecycle-config --studio-lifecycle-config-name <n
|
||||
記録する項目:
|
||||
|
||||
- `DomainArn`, `AppSecurityGroupIds`, `SubnetIds`, `DefaultUserSettings.ExecutionRole`.
|
||||
- マウントされた EFS (`HomeEfsFileSystemId`) および S3 のホームディレクトリ。
|
||||
- Lifecycle scripts(しばしば bootstrap credentials を含む、または push/pull による追加コードを含む)。
|
||||
- マウントされた EFS (`HomeEfsFileSystemId`) と S3 のホームディレクトリ。
|
||||
- Lifecycle scripts(しばしば bootstrap credentials や push/pull による追加コードを含む)。
|
||||
|
||||
> [!TIP]
|
||||
> Presigned Studio URLs は、広く付与されていると認証をバイパスする可能性があります。
|
||||
> Presigned Studio URLs は、広く付与されると認証をバイパスできることがある。
|
||||
|
||||
## Notebook Instances & Lifecycle Configs
|
||||
## ノートブックインスタンスとライフサイクル設定
|
||||
```bash
|
||||
aws sagemaker list-notebook-instances --region $REGION
|
||||
aws sagemaker describe-notebook-instance --notebook-instance-name <name> --region $REGION
|
||||
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 のメタデータから判明すること:
|
||||
Notebook のメタデータが明らかにする情報:
|
||||
|
||||
- 実行ロール (`RoleArn`)、直接インターネットアクセスか VPC-only モードか。
|
||||
- `DefaultCodeRepository`、`DirectInternetAccess`、`RootAccess` に記載された S3 の場所。
|
||||
- 資格情報や永続化用のフックを仕込むためのライフサイクルスクリプト。
|
||||
- 実行ロール (`RoleArn`)、直接インターネットアクセスとVPC-onlyモードの判別。
|
||||
- `DefaultCodeRepository`, `DirectInternetAccess`, `RootAccess` にある S3 の場所。
|
||||
- 認証情報や永続化フック用のライフサイクルスクリプト。
|
||||
|
||||
## トレーニング、プロセッシング、トランスフォーム、およびバッチジョブ
|
||||
## Training, Processing, Transform & Batch Jobs
|
||||
```bash
|
||||
aws sagemaker list-training-jobs --region $REGION
|
||||
aws sagemaker describe-training-job --training-job-name <job> --region $REGION
|
||||
@@ -93,14 +93,12 @@ aws sagemaker describe-processing-job --processing-job-name <job> --region $REGI
|
||||
aws sagemaker list-transform-jobs --region $REGION
|
||||
aws sagemaker describe-transform-job --transform-job-name <job> --region $REGION
|
||||
```
|
||||
精査する:
|
||||
|
||||
- `AlgorithmSpecification.TrainingImage` / `AppSpecification.ImageUri` – どの ECR イメージがデプロイされているかを確認する。
|
||||
- `AlgorithmSpecification.TrainingImage` / `AppSpecification.ImageUri` – どの ECR イメージがデプロイされているか。
|
||||
- `InputDataConfig` & `OutputDataConfig` – S3 バケット、プレフィックス、および KMS キー。
|
||||
- `ResourceConfig.VolumeKmsKeyId`, `VpcConfig`, `EnableNetworkIsolation` – ネットワークや暗号化の構成を判断する。
|
||||
- `HyperParameters` may leak environment secrets or connection strings.
|
||||
- `ResourceConfig.VolumeKmsKeyId`, `VpcConfig`, `EnableNetworkIsolation` – ネットワークや暗号化の設定状況を判断する。
|
||||
- `HyperParameters` は環境のシークレットや接続文字列を leak する可能性がある。
|
||||
|
||||
## パイプライン、実験 & トライアル
|
||||
## パイプライン、実験、トライアル
|
||||
```bash
|
||||
aws sagemaker list-pipelines --region $REGION
|
||||
aws sagemaker list-pipeline-executions --pipeline-name <pipeline> --region $REGION
|
||||
@@ -110,9 +108,9 @@ 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 コンポーネントにはしばしばトレーニングアーティファクトのURI、S3ログ、そして機密データの流れを示唆するメトリクスが含まれます。
|
||||
|
||||
## モデル、エンドポイント構成 & デプロイ済みエンドポイント
|
||||
## モデル、エンドポイント設定、およびデプロイ済みエンドポイント
|
||||
```bash
|
||||
aws sagemaker list-models --region $REGION
|
||||
aws sagemaker describe-model --model-name <name> --region $REGION
|
||||
@@ -123,11 +121,11 @@ aws sagemaker describe-endpoint-config --endpoint-config-name <cfg> --region $RE
|
||||
aws sagemaker list-endpoints --region $REGION
|
||||
aws sagemaker describe-endpoint --endpoint-name <endpoint> --region $REGION
|
||||
```
|
||||
注力領域:
|
||||
重点領域:
|
||||
|
||||
- モデルアーティファクトのS3 URI (`PrimaryContainer.ModelDataUrl`) と推論用コンテナイメージ。
|
||||
- エンドポイントのデータキャプチャ設定(S3 bucket、KMS)を確認し、ログのexfil 可能性を調査。
|
||||
- `S3DataSource` または `ModelPackage` を使用するマルチモデルエンドポイント(クロスアカウントのパッケージ化を確認)。
|
||||
- モデルアーティファクトの S3 URIs (`PrimaryContainer.ModelDataUrl`) および 推論コンテナイメージ。
|
||||
- エンドポイントのデータキャプチャ構成(S3 bucket, KMS) — 可能な log exfil を想定して確認。
|
||||
- `S3DataSource` または `ModelPackage` を使用するマルチモデルエンドポイント(クロスアカウントでのパッケージ化を確認)。
|
||||
- エンドポイントに紐づくネットワーク構成とセキュリティグループ。
|
||||
|
||||
## Feature Store, Data Wrangler & Clarify
|
||||
@@ -141,11 +139,11 @@ 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
|
||||
```
|
||||
セキュリティの要点:
|
||||
セキュリティのポイント:
|
||||
|
||||
- Online feature stores はデータを Kinesis に複製します。`OnlineStoreConfig.SecurityConfig.KmsKeyId` と VPC を確認してください。
|
||||
- Data Wrangler のフローには、JDBC/Redshift の認証情報やプライベートエンドポイントが埋め込まれていることが多いです。
|
||||
- Clarify/Model Monitor ジョブはデータを S3 にエクスポートします。S3 が world-readable だったりクロスアカウントでアクセス可能になっている可能性があります。
|
||||
- Data Wrangler のフローには、JDBC/Redshift の認証情報や private endpoints が埋め込まれていることが多いです。
|
||||
- Clarify/Model Monitor ジョブはデータを S3 にエクスポートしますが、それが world-readable または cross-account でアクセス可能になっている場合があります。
|
||||
|
||||
## MLflow Tracking Servers, Autopilot & JumpStart
|
||||
```bash
|
||||
@@ -158,15 +156,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 は実験とアーティファクトを保存します。presigned URLs によりすべてが露出する可能性があります。
|
||||
- Autopilot ジョブは複数の training jobs を起動します — 隠れたデータのために出力を列挙してください。
|
||||
- JumpStart の reference architectures はアカウント内に特権ロールをデプロイする場合があります。
|
||||
- MLflow tracking serversは実験やアーティファクトを保存します。presigned URLsによりすべてが露出する可能性があります。
|
||||
- Autopilot jobsは複数のtraining jobsを起動します — 隠されたデータを見つけるために出力を列挙してください。
|
||||
- JumpStart reference architecturesはアカウント内に特権ロールをデプロイする可能性があります。
|
||||
|
||||
## IAM とネットワーキングの考慮事項
|
||||
## IAM とネットワークに関する考慮事項
|
||||
|
||||
- Studio、notebooks、training jobs、pipelines、endpoints を含むすべての実行ロールにアタッチされた IAM ポリシーを列挙してください。
|
||||
- ネットワークの文脈(subnets、security groups、VPC endpoints)を確認してください。多くの組織は training jobs を分離しますが、アウトバウンド通信の制限を忘れがちです。
|
||||
- 外部アクセスについて、`ModelDataUrl`、`DataCaptureConfig`、`InputDataConfig` で参照される S3 バケットポリシーを確認してください。
|
||||
- すべての実行ロール(Studio、notebooks、training jobs、pipelines、endpoints)にアタッチされているIAMポリシーを列挙してください。
|
||||
- ネットワークコンテキストを確認してください:subnets、security groups、VPC endpoints。多くの組織はtraining jobsを分離しますが、アウトバウンドトラフィックの制限を忘れがちです。
|
||||
- 外部アクセスについて、`ModelDataUrl`、`DataCaptureConfig`、`InputDataConfig`で参照されているS3バケットポリシーを確認してください。
|
||||
|
||||
## Privilege Escalation
|
||||
|
||||
@@ -192,7 +190,7 @@ aws sagemaker list-jumpstart-script-resources --region $REGION
|
||||
../../aws-unauthenticated-enum-access/aws-sagemaker-unauthenticated-enum/README.md
|
||||
{{#endref}}
|
||||
|
||||
## 参考資料
|
||||
## 参考
|
||||
|
||||
- [AWS SageMaker Documentation](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html)
|
||||
- [AWS CLI SageMaker Reference](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/index.html)
|
||||
|
||||
Reference in New Issue
Block a user