Translated ['src/pentesting-cloud/aws-security/aws-services/aws-sagemake

This commit is contained in:
Translator
2025-10-23 11:00:19 +00:00
parent 52f12369ed
commit 3aeb03e96b

View File

@@ -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 policiesSCPs のようなベースライン制限を記録してください。
クロスアカウントの信頼関係execution roles external principals を持つ S3 バケットなど)および service control policiesSCPs)などのベースライン制限を記録してください。
## 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 bucketKMSを確認し、ログの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)