【Security Hub修復手順】[SageMaker.15] SageMaker モデルバイアスジョブ定義ではコンテナ間トラフィックの暗号化を有効にする必要があります
こんにちは!クラスメソッドオペレーションズの菊池です。
皆さん、お使いのAWS環境のセキュリティチェックはしていますか?
本記事では、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。
本記事の対象コントロール
[SageMaker.15] SageMaker モデルバイアスジョブ定義ではコンテナ間トラフィックの暗号化を有効にする必要があります
[SageMaker.15] SageMaker model bias job definitions should have inter-container traffic encryption enabled
前提条件
本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。
AWS Security Hubの詳細についてはこちらのブログをご覧ください。
対象コントロールの説明
このコントロールは、SageMakerのモデルバイアスジョブ定義で、コンテナ間トラフィックの暗号化が有効になっているかをチェックします。インスタンス数が2以上のモデルバイアスジョブ定義で、EnableInterContainerTrafficEncryptionパラメータがfalseまたは未設定の場合、FAILEDと判定されます。インスタンス数が1のジョブ定義は評価対象外です。
モデルバイアスジョブは、SageMaker Model Monitorの機能の1つで、デプロイしたモデルの予測に偏り(バイアス)がないかを定期的に監視するジョブです。複数のコンピューティングインスタンスで分散処理を行う場合、インスタンス間ではモデルの重みや学習データ、中間処理結果などが送受信されます。このコントロールが対象とするのは、SageMakerが管理する分散処理クラスター内部でのインスタンス(コンテナ)間通信です。
コンテナ間トラフィックはデフォルトでは暗号化されません。暗号化しない場合、インスタンス間を流れるモデルの重みなどの機微な情報が、盗聴や中間者攻撃により第三者に読み取られるリスクがあります。転送中のデータを暗号化することでこれらのリスクを防止できるため、本番環境では対応が必須です。
一方、対象の通信はSageMakerの管理する内部ネットワーク上に閉じており、インターネットなどのパブリックネットワークは通過しません。そのため、本番以外の環境で扱うデータの機微性が低い場合は、対応は任意です。ただし、本番環境との設定の乖離を防ぐためにも、本番以外の環境でも有効化することを推奨します。
なお、コンテナ間トラフィックの暗号化を有効にすると、インスタンス間通信に暗号化処理のオーバーヘッドが加わるため、ジョブの処理時間が増加する可能性がある点には留意してください。
修復手順
モデルバイアスジョブ定義は作成後に設定を変更できないため、コンテナ間トラフィックの暗号化を有効にした新しいジョブ定義を作成して置き換えます。ジョブ定義の操作はマネジメントコンソールに対応する画面がないため、AWS CLIで実施します。
コントロールの確認方法
- Security Hubコンソールを開く
- 左メニューから「検出結果」を選択
- フィルターで対象のコントロールID「SageMaker.15」を検索

検出結果から、対象となっているモデルバイアスジョブ定義の名前を確認します。
ステークホルダーに確認
修復を行う前に、以下の点をステークホルダーに確認してください。
- コンテナ間トラフィックの暗号化を有効にすると、暗号化処理のオーバーヘッドによりモニタリングジョブの処理時間が増加する可能性があります。処理時間の増加が許容できるか確認してください。
- ジョブ定義は設定変更ができないため、新しいジョブ定義を作成して置き換える必要があります。ジョブ定義の名前が変わるため、ジョブ定義名を参照している運用スクリプトやIaCコードへの影響を確認してください。
- 対象のジョブ定義がモニタリングスケジュールから参照されている場合、スケジュールを新しいジョブ定義に切り替える必要があります。切り替えのタイミングと監視の空白期間が発生しないよう、作業手順を確認してください。
修復手順
1. 事前確認
まず、対象のジョブ定義の現在の設定を確認します。
aws sagemaker describe-model-bias-job-definition \
--job-definition-name <対象のジョブ定義名>
出力のNetworkConfigを確認します。EnableInterContainerTrafficEncryptionがfalseまたはNetworkConfig自体が存在しない場合が修復対象です。
このコマンドの出力(コンテナイメージURI、分析設定ファイルのS3 URI、入出力設定、インスタンス構成、IAMロールなど)は、次の手順で新しいジョブ定義を作成する際にそのまま引き継ぎます。
2. 暗号化を有効にした新しいジョブ定義の作成
事前確認で取得した設定を引き継ぎ、NetworkConfigのEnableInterContainerTrafficEncryptionをtrueに設定して新しいジョブ定義を作成します。
aws sagemaker create-model-bias-job-definition \
--job-definition-name <新しいジョブ定義名> \
--model-bias-app-specification '{
"ImageUri": "<事前確認で取得したコンテナイメージURI>",
"ConfigUri": "<事前確認で取得した分析設定ファイルのS3 URI>"
}' \
--model-bias-job-input '<事前確認で取得したModelBiasJobInputの内容>' \
--model-bias-job-output-config '<事前確認で取得したModelBiasJobOutputConfigの内容>' \
--job-resources '<事前確認で取得したJobResourcesの内容>' \
--network-config '{"EnableInterContainerTrafficEncryption": true}' \
--role-arn <事前確認で取得したIAMロールARN>
既存のジョブ定義でEnableNetworkIsolationやVpcConfigを設定している場合は、--network-configにあわせて指定してください。
作成後、暗号化が有効になっていることを確認します。
aws sagemaker describe-model-bias-job-definition \
--job-definition-name <新しいジョブ定義名> \
--query 'NetworkConfig'
EnableInterContainerTrafficEncryptionがtrueになっていれば設定完了です。
表示例)
aws sagemaker describe-model-bias-job-definition \
--job-definition-name sh-test-sagemaker-15-bias-job-2 \
--query 'NetworkConfig'
{
"EnableInterContainerTrafficEncryption": true,
"EnableNetworkIsolation": false
}
3. モニタリングスケジュールの切り替え
対象のジョブ定義がモニタリングスケジュールから参照されている場合は、スケジュールを新しいジョブ定義に切り替えます。
参照しているモニタリングスケジュールは以下のコマンドで確認できます。
aws sagemaker list-monitoring-schedules \
--monitoring-job-definition-name <対象のジョブ定義名>
該当するスケジュールがある場合は、新しいジョブ定義を参照するよう更新します。
aws sagemaker update-monitoring-schedule \
--monitoring-schedule-name <モニタリングスケジュール名> \
--monitoring-schedule-config '{
"ScheduleConfig": {"ScheduleExpression": "<既存のスケジュール式>"},
"MonitoringJobDefinitionName": "<新しいジョブ定義名>",
"MonitoringType": "ModelBias"
}'
4. 古いジョブ定義の削除
切り替えが完了したら、古いジョブ定義を削除します。FAILEDの検出結果は、対象リソースが削除されることで解消されます。
aws sagemaker delete-model-bias-job-definition \
--job-definition-name <対象のジョブ定義名>
修復確認
修復後、Security Hubで検出結果が「PASSED」になることを確認します。

なお、Security Hubの検出結果が更新されるまで時間がかかる場合があります。また、古いジョブ定義を削除した場合、削除済みリソースの検出結果はアーカイブされるまでFAILEDのまま残ることがあります。
最後に
今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介しました。
コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう!
最後までお読みいただきありがとうございました!どなたかのお役に立てれば幸いです。
以上、菊池でした!






