【Security Hub修復手順】[SageMaker.19] SageMaker モデルは、マルチコンテナ推論パイプラインにVPCのプライベートレジストリを使用する必要があります
かつまたです。
本記事では、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。
本記事の対象コントロール
[SageMaker.19] SageMaker モデルは、マルチコンテナ推論パイプラインにVPCのプライベートレジストリを使用する必要があります
[SageMaker.19] SageMaker models should use private registry in VPC for multi-container inference pipelines
前提条件
本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。
AWS Security Hubの詳細についてはこちらのブログをご覧ください。
対象コントロールの説明
このコントロールは、マルチコンテナ推論パイプラインを持つSageMakerモデルが、VPCのプライベートDockerレジストリからコンテナイメージをプルする設定になっているかチェックします。
各コンテナ定義のImageConfigでRepositoryAccessModeをVpcに設定すると、このコントロールは成功します。
マルチコンテナ推論パイプラインは、複数のコンテナを連結して推論処理を行うSageMaker AIの機能です。前処理、モデル推論、後処理を個別のコンテナに分離し、シリアル実行またはダイレクト呼び出しで連携します。
RepositoryAccessModeがPlatform(デフォルト)の場合、コンテナイメージのプル元が制限されないため、パブリックインターネットを経由する可能性があります。この状態ではサプライチェーン攻撃やイメージ改ざんのリスクがあります。
RepositoryAccessModeをVpcに設定すると、コンテナイメージはVPC内のプライベートDockerレジストリからプルされます。ここでいう「プライベートDockerレジストリ」とは、VPC内に構築した自前のDockerレジストリ(Docker Registry等)のことです。Amazon ECR(Elastic Container Registry)はVpcモードに対応していないため、ECRとは別にプライベートレジストリの構築が必要です。
セキュリティ基本要件として、環境を問わず対応が必須です。
修復手順
モデルの設定は作成後に変更できないため、新しいモデルを作成する必要があります。
1. 既存のモデル設定を確認する
SageMakerコンソールからもモデルの確認は可能ですが、このコントロールがチェックするImageConfigの設定値は表示されません。

そのため、AWS CLIで確認します。
aws sagemaker describe-model \
--model-name <モデル名> \
--region ap-northeast-1
出力例は以下の通りです。
{
"ModelName": "example-multi-container-model",
"Containers": [
{
"ContainerHostname": "container-1",
"Image": "123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/my-preprocessing:latest",
"Environment": {}
},
{
"ContainerHostname": "container-2",
"Image": "123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/my-inference:latest",
"Environment": {}
}
],
"InferenceExecutionConfig": {
"Mode": "Serial"
},
"ExecutionRoleArn": "arn:aws:iam::123456789012:role/SageMakerRole",
"CreationTime": "2026-01-01T00:00:00.000Z"
}
Containers配列内の各コンテナにImageConfigが存在しない、またはRepositoryAccessModeがPlatformになっていることが、コントロール違反の原因です。
あわせて、以下の設定値を確認しておきます(新しいモデルの作成時に必要です)。
- モデル名
- 各コンテナのイメージURI
- 各コンテナの環境変数
- InferenceExecutionConfig(SerialまたはDirect)
- ExecutionRoleArn
- VpcConfig(設定されている場合)
- タグ(設定されている場合)
2. プライベートDockerレジストリを構築する
RepositoryAccessMode: Vpcを使用するには、VPC内にプライベートDockerレジストリを構築する必要があります。Amazon ECRはVpcモードに対応していないため、Docker Registry等の自前のレジストリをVPC内に構築します。
プライベートDockerレジストリの構築手順は、公式ドキュメントを参照してください。
構築にあたっては、以下の要件を満たす必要があります。
- Docker Registry HTTP API V2に準拠したレジストリをVPC内にホストする
- レジストリを既知の認証局(CA)が発行したTLS証明書で保護する
- プライベートレジストリへの認証を行うLambda関数を作成する
- SageMakerモデルの実行ロールに、VPCリソースへのアクセス権限を付与する
3. ImageConfigを設定したモデルを作成する
プライベートレジストリにイメージを格納したら、各コンテナのImageConfigにRepositoryAccessMode: Vpcを設定して、新しいモデルを作成します。
--vpc-configでVPCのサブネットとセキュリティグループを指定します。--containersでは、各コンテナのイメージURIにプライベートレジストリのアドレスを指定し、RepositoryAuthConfigで認証用のLambda関数ARNを指定します。
aws sagemaker create-model \
--model-name <新しいモデル名> \
--vpc-config '{"SecurityGroupIds": ["<セキュリティグループID>"], "Subnets": ["<サブネットID>"]}' \
--containers '[
{
"ContainerHostname": "container-1",
"Image": "<プライベートレジストリのイメージURI-1>",
"ImageConfig": {
"RepositoryAccessMode": "Vpc",
"RepositoryAuthConfig": {
"RepositoryCredentialsProviderArn": "<認証用Lambda関数ARN>"
}
}
},
{
"ContainerHostname": "container-2",
"Image": "<プライベートレジストリのイメージURI-2>",
"ImageConfig": {
"RepositoryAccessMode": "Vpc",
"RepositoryAuthConfig": {
"RepositoryCredentialsProviderArn": "<認証用Lambda関数ARN>"
}
}
}
]' \
--inference-execution-config '{"Mode": "Serial"}' \
--execution-role-arn <IAMロールARN> \
--region ap-northeast-1
作成後、describe-modelで各コンテナのImageConfigを確認します。
aws sagemaker describe-model \
--model-name <新しいモデル名> \
--region ap-northeast-1 \
--query 'Containers[].ImageConfig'
[
{
"RepositoryAccessMode": "Vpc",
"RepositoryAuthConfig": {
"RepositoryCredentialsProviderArn": "arn:aws:lambda:ap-northeast-1:123456789012:function:my-auth-function"
}
},
{
"RepositoryAccessMode": "Vpc",
"RepositoryAuthConfig": {
"RepositoryCredentialsProviderArn": "arn:aws:lambda:ap-northeast-1:123456789012:function:my-auth-function"
}
}
]
4. エンドポイントの更新(該当する場合)
旧モデルを使用しているエンドポイントがある場合は、新しいモデルを参照するようにエンドポイント設定を更新します。
- 新しいモデルを参照するエンドポイント設定を作成する
- エンドポイントを新しいエンドポイント設定で更新する
- 旧モデルを削除する(任意)
エンドポイント設定の更新方法は、公式ドキュメントを参照してください。
最後に
今回は、SageMaker.19の修復手順をご紹介しました。
このコントロールへの対応には、VPC内にプライベートDockerレジストリを構築し、コンテナイメージをそのレジストリから取得する設定が必要です。Amazon ECRはRepositoryAccessMode: Vpcに対応していないため、ECRとは別にレジストリを用意する必要がある点にご注意ください。
また、SageMakerモデルのImageConfig設定はモデル作成後に変更できないため、修復にはモデルの再作成が必要です。
既存の設定をDescribeModelで事前に取得しておくと、再作成時の設定漏れを防げるのでおすすめです。
なお、類似コントロールの[SageMaker.16]は、プライマリコンテナ(単一コンテナ構成)に対する同様のチェックです。マルチコンテナ構成と単一コンテナ構成の両方を使用している場合は、あわせて対応をご検討ください。
ご覧いただきありがとうございました。







