[SageMaker.12] SageMaker モデルバイアスジョブ定義では、ネットワーク分離を有効にする必要があります
かつまたです。
本記事では、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。
本記事の対象コントロール
[SageMaker.12] SageMaker モデルバイアスジョブ定義では、ネットワーク分離を有効にする必要があります
[SageMaker.12] SageMaker model bias job definitions should have network isolation enabled
前提条件
本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。
AWS Security Hubの詳細についてはこちらのブログをご覧ください。
対象コントロールの説明
このコントロールは、SageMakerモデルバイアスジョブ定義でネットワーク分離が有効になっているかチェックします。
ジョブ定義のNetworkConfigでEnableNetworkIsolationパラメータを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.EnableNetworkIsolationがfalseになっていることが、コントロール違反の原因です。
あわせて、以下の設定値を確認しておきます(新しいジョブ定義の作成時に必要です)。
- ジョブ定義名
- コンテナイメージURI
- 設定ファイルのS3 URI
- ジョブ入力(エンドポイント名またはバッチ変換入力)
- ジョブ出力のS3 URI
- インスタンスタイプ・インスタンス数
- ボリュームサイズ
- IAMロールARN
- VPC設定(設定されている場合)
- タグ(設定されている場合)
2. ネットワーク分離を有効にしたジョブ定義を作成する
モデルバイアスジョブ定義はマネジメントコンソールから作成できないため、AWS CLIで作成します。
1で確認した設定を引き継ぎつつ、EnableNetworkIsolationをtrueに設定します。
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-definitionでEnableNetworkIsolationがtrueになっていることを確認します。
aws sagemaker describe-model-bias-job-definition \
--job-definition-name <新しいジョブ定義名> \
--region ap-northeast-1 \
--query 'NetworkConfig'
{
"EnableInterContainerTrafficEncryption": false,
"EnableNetworkIsolation": true
}
最後に
今回は、SageMaker.12の修復手順をご紹介しました。
ネットワーク分離の設定はジョブ定義の作成後に変更できないため、修復にはジョブ定義の再作成が必要です。
既存の設定をDescribeModelBiasJobDefinitionで事前に取得しておくと、再作成時の設定漏れを防げるのでおすすめです。
ご覧いただきありがとうございました。







