[SageMaker.12] SageMaker モデルバイアスジョブ定義では、ネットワーク分離を有効にする必要があります

[SageMaker.12] SageMaker モデルバイアスジョブ定義では、ネットワーク分離を有効にする必要があります

2026.06.30

かつまたです。

本記事では、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。

本記事の対象コントロール

[SageMaker.12] SageMaker モデルバイアスジョブ定義では、ネットワーク分離を有効にする必要があります

[SageMaker.12] SageMaker model bias job definitions should have network isolation enabled

https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/sagemaker-controls.html#sagemaker-12

前提条件

本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。
AWS Security Hubの詳細についてはこちらのブログをご覧ください。

https://dev.classmethod.jp/articles/lets-learn-aws-security-hub/

https://dev.classmethod.jp/articles/aws-security-operation-with-securityhub-2021/

対象コントロールの説明

このコントロールは、SageMakerモデルバイアスジョブ定義でネットワーク分離が有効になっているかチェックします。
ジョブ定義のNetworkConfigEnableNetworkIsolationパラメータをtrueに設定すると、このコントロールは成功します。

モデルバイアスジョブ定義は、機械学習モデルの予測に偏りがないかを継続的に監視するジョブの設定です。

ネットワーク分離が無効な場合、ジョブのコンテナがインターネット経由で外部リソースと通信できる状態になります。
これにより、攻撃対象領域の拡大や、コンテナを経由した機密データの外部流出につながるリスクがあります。
特に規制対象データや機密データを扱うジョブでは影響が大きいため、本番環境ではネットワーク分離の有効化が必須です。

本番以外の環境では規制対象データや機密データを扱わないケースが多く、外部流出リスクは限定的です。
また、有効化にはジョブ定義の再作成が必要となり、運用負荷も生じます。
ただし、本番環境と同等の構成を維持したい場合や、機密データを扱う場合は、本番以外でも有効化をご検討ください。

修復手順

ネットワーク分離はジョブ定義の作成後に変更できないため、新しいジョブ定義を作成する必要があります。

1. 既存のジョブ定義の設定を確認する

まず、既存のモデルバイアスジョブ定義の設定をAWS CLIで確認します。

aws sagemaker describe-model-bias-job-definition \
  --job-definition-name <既存のジョブ定義> \
  --region ap-northeast-1

出力例は以下の通りです。

{
    "JobDefinitionArn": "arn:aws:sagemaker:ap-northeast-1:123456789012:model-bias-job-definition/example-job-def",
    "JobDefinitionName": "example-job-def",
    "ModelBiasAppSpecification": {
        "ImageUri": "377024640650.dkr.ecr.ap-northeast-1.amazonaws.com/sagemaker-clarify-processing:1.0",
        "ConfigUri": "s3://example-bucket/config/analysis_config.json"
    },
    "ModelBiasJobInput": {
        "BatchTransformInput": {
            "DataCapturedDestinationS3Uri": "s3://example-bucket/input/",
            "DatasetFormat": { "Csv": { "Header": true } },
            "LocalPath": "/opt/ml/processing/input",
            "S3InputMode": "File",
            "S3DataDistributionType": "FullyReplicated"
        },
        "GroundTruthS3Input": {
            "S3Uri": "s3://example-bucket/ground-truth/"
        }
    },
    "ModelBiasJobOutputConfig": {
        "MonitoringOutputs": [
            {
                "S3Output": {
                    "S3Uri": "s3://example-bucket/output/",
                    "LocalPath": "/opt/ml/processing/output",
                    "S3UploadMode": "EndOfJob"
                }
            }
        ]
    },
    "JobResources": {
        "ClusterConfig": {
            "InstanceCount": 1,
            "InstanceType": "ml.m5.large",
            "VolumeSizeInGB": 10
        }
    },
    "NetworkConfig": {
        "EnableInterContainerTrafficEncryption": false,
        "EnableNetworkIsolation": false
    },
    "RoleArn": "arn:aws:iam::123456789012:role/example-role",
    "StoppingCondition": {
        "MaxRuntimeInSeconds": 3600
    }
}

NetworkConfig.EnableNetworkIsolationfalseになっていることが、コントロール違反の原因です。

あわせて、以下の設定値を確認しておきます(新しいジョブ定義の作成時に必要です)。

  • ジョブ定義名
  • コンテナイメージURI
  • 設定ファイルのS3 URI
  • ジョブ入力(エンドポイント名またはバッチ変換入力)
  • ジョブ出力のS3 URI
  • インスタンスタイプ・インスタンス数
  • ボリュームサイズ
  • IAMロールARN
  • VPC設定(設定されている場合)
  • タグ(設定されている場合)

2. ネットワーク分離を有効にしたジョブ定義を作成する

モデルバイアスジョブ定義はマネジメントコンソールから作成できないため、AWS CLIで作成します。
1で確認した設定を引き継ぎつつ、EnableNetworkIsolationtrueに設定します。

aws sagemaker create-model-bias-job-definition \
  --job-definition-name <新しいジョブ定義> \
  --model-bias-app-specification '{
    "ImageUri": "<コンテナイメージURI>",
    "ConfigUri": "<設定ファイルのS3 URI>"
  }' \
  --model-bias-job-input '{
    "EndpointInput": {
      "EndpointName": "<エンドポイント名>",
      "LocalPath": "/opt/ml/processing/input",
      "S3InputMode": "File",
      "S3DataDistributionType": "FullyReplicated"
    },
    "GroundTruthS3Input": {
      "S3Uri": "<グラウンドトゥルースのS3 URI>"
    }
  }' \
  --model-bias-job-output-config '{
    "MonitoringOutputs": [
      {
        "S3Output": {
          "S3Uri": "<出力先S3 URI>",
          "LocalPath": "/opt/ml/processing/output",
          "S3UploadMode": "EndOfJob"
        }
      }
    ]
  }' \
  --job-resources '{
    "ClusterConfig": {
      "InstanceCount": 1,
      "InstanceType": "ml.m5.large",
      "VolumeSizeInGB": 10
    }
  }' \
  --network-config '{
    "EnableNetworkIsolation": true
  }' \
  --role-arn <IAMロールARN> \
  --region ap-northeast-1

作成後、describe-model-bias-job-definitionEnableNetworkIsolationtrueになっていることを確認します。

aws sagemaker describe-model-bias-job-definition \
  --job-definition-name <新しいジョブ定義> \
  --region ap-northeast-1 \
  --query 'NetworkConfig'
{
    "EnableInterContainerTrafficEncryption": false,
    "EnableNetworkIsolation": true
}

最後に

今回は、SageMaker.12の修復手順をご紹介しました。

ネットワーク分離の設定はジョブ定義の作成後に変更できないため、修復にはジョブ定義の再作成が必要です。
既存の設定をDescribeModelBiasJobDefinitionで事前に取得しておくと、再作成時の設定漏れを防げるのでおすすめです。

ご覧いただきありがとうございました。


AWS Security Hub 「基礎セキュリティのベストプラクティス」シリーズをご覧のあなたに特報!

本シリーズで紹介している各チェック項目(コントロール)について、推奨される対応方法や見解のまとめは、クラスメソッド経由でAWSをご活用されているお客様向けに特別公開しております。この機会にぜひ併せてご検討ください。

クラスメソッドのAWS総合支援を見る

何が提供されるの?

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事