【Security Hub修復手順】[SageMaker.13] SageMaker モデル品質ジョブ定義では、コンテナ間のトラフィック暗号化を有効にする必要があります
こんにちは!コンサルティング部のヒスです。
皆さん、お使いのAWS環境のセキュリティチェックはしていますか?
本記事では、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。
本記事の対象コントロール
[SageMaker.13] SageMaker モデル品質ジョブ定義では、コンテナ間のトラフィック暗号化を有効にする必要があります
[SageMaker.13] SageMaker model quality job definitions should have inter-container traffic encryption enabled
前提条件
本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。
AWS Security Hubの詳細についてはこちらのブログをご覧ください。
対象コントロールの説明
このコントロールは、Amazon SageMakerのモデル品質ジョブ定義で、コンテナ間トラフィックの暗号化が有効になっているかどうかをチェックします。ジョブ定義の NetworkConfig で EnableInterContainerTrafficEncryption が true になっていれば、このコントロールは成功(PASSED)します。false または未設定の場合は失敗(FAILED)となります。
モデル品質ジョブは、デプロイ済みモデルの推論品質やドリフトを継続的に監視するジョブです。複数のコンピューティングインスタンスで分散処理を行う場合、コンテナ間でモデルデータや監視対象のデータがやり取りされます。デフォルトではこのコンテナ間トラフィックは暗号化されません。
暗号化が無効の場合、分散処理中に転送されるモデルデータや監視対象データが傍受されるリスクが残ります。特に医療データなど規制対象のデータを扱う場合、転送中のデータ保護に関するコンプライアンス要件を満たせず、監査で指摘を受ける可能性があります。そのため、本番環境では対応を必須とすることを推奨します。
一方で、本番環境以外については必須とはしていません。機密性の高い実データを扱わない検証環境などでは、クラスター内部通信の傍受リスクが限定的なためです。ただし、本番環境との設定の乖離を防ぐためにも、本番環境以外でも暗号化を有効にすることを推奨します。
なお、モデル品質ジョブ定義はマネジメントコンソールに作成画面がなく、API・AWS CLI・SDK・AWS CloudFormationで管理するリソースです。また、コンテナ間トラフィックの暗号化設定は作成後に変更できないため、修復にはジョブ定義の再作成が必要になります。本記事ではAWS CLIを用いた手順をご紹介します。
修復手順
コントロールの確認方法
まず、Security Hubコンソールで対象の検出結果を確認します。
- Security Hubコンソールを開く
- 左メニューから「検出結果」を選択
- フィルターで対象のコントロールID「SageMaker.13」を検索

検出結果のリソースIDから、暗号化が有効になっていないモデル品質ジョブ定義を特定します。
ステークホルダーに確認
修復を行う前に、以下の点をステークホルダーに確認してください。本コントロールの修復はジョブ定義の再作成を伴うため、影響範囲の確認が特に重要です。
- 対象のモデル品質ジョブ定義が、既存のモニタリングスケジュールから参照されていないか(参照されている場合、スケジュールの再作成も必要になります)
- ジョブ定義を再作成する際のメンテナンスウィンドウ(モニタリングの一時的な停止が許容できるか)
- 再作成時に元の設定(入力・出力・リソース構成など)を漏れなく引き継げるか
修復手順
モデル品質ジョブ定義はコンソールから編集できないため、AWS CLIで既存定義の設定を確認し、暗号化を有効にした新しいジョブ定義を作成します。
- 対象のジョブ定義の現在の設定を確認します。再作成時に設定を引き継ぐため、内容を控えておきます。
aws sagemaker describe-model-quality-job-definition \
--job-definition-name <対象のジョブ定義名> \
--region ap-northeast-1
- 上記で確認した設定を引き継ぎつつ、
NetworkConfigにEnableInterContainerTrafficEncryption=trueを指定した新しいジョブ定義を作成します。ネットワーク分離やVPC設定を利用している場合は、あわせて指定します。
aws sagemaker create-model-quality-job-definition \
--job-definition-name <新しいジョブ定義名> \
--model-quality-app-specification <元の設定> \
--model-quality-job-input <元の設定> \
--model-quality-job-output-config <元の設定> \
--job-resources <元の設定> \
--role-arn <元のロールARN> \
--network-config '{"EnableInterContainerTrafficEncryption": true}' \
--region ap-northeast-1
-
対象のジョブ定義を参照しているモニタリングスケジュールがある場合は、新しいジョブ定義を参照するようにスケジュールを再作成します。
-
新しいジョブ定義が正しく作成され、暗号化が有効になっていることを確認します。
EnableInterContainerTrafficEncryptionがtrueになっていれば問題ありません。
aws sagemaker describe-model-quality-job-definition \
--job-definition-name <新しいジョブ定義名> \
--query 'NetworkConfig.EnableInterContainerTrafficEncryption' \
--region ap-northeast-1

5. 不要になった古いジョブ定義を削除します。
aws sagemaker delete-model-quality-job-definition \
--job-definition-name <古いジョブ定義名> \
--region ap-northeast-1
修復確認
修復後、Security Hubで検出結果が「PASSED」になることを確認します。

最後に
今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介しました。
コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう!
最後までお読みいただきありがとうございました!どなたかのお役に立てれば幸いです。







