【Security Hub修復手順】[SageMaker.19] SageMaker モデルは、マルチコンテナ推論パイプラインにVPCのプライベートレジストリを使用する必要があります

【Security Hub修復手順】[SageMaker.19] SageMaker モデルは、マルチコンテナ推論パイプラインにVPCのプライベートレジストリを使用する必要があります

AWS Security HubのSageMaker.19コントロール違反を修復するため、マルチコンテナ推論パイプラインをVPC内のプライベートレジストリに対応させる手順をご紹介します。
2026.07.23

かつまたです。

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

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

[SageMaker.19] SageMaker モデルは、マルチコンテナ推論パイプラインにVPCのプライベートレジストリを使用する必要があります

[SageMaker.19] SageMaker models should use private registry in VPC for multi-container inference pipelines

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

前提条件

本記事は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モデルが、VPCのプライベートDockerレジストリからコンテナイメージをプルする設定になっているかチェックします。
各コンテナ定義のImageConfigRepositoryAccessModeVpcに設定すると、このコントロールは成功します。

マルチコンテナ推論パイプラインは、複数のコンテナを連結して推論処理を行うSageMaker AIの機能です。前処理、モデル推論、後処理を個別のコンテナに分離し、シリアル実行またはダイレクト呼び出しで連携します。

RepositoryAccessModePlatform(デフォルト)の場合、コンテナイメージのプル元が制限されないため、パブリックインターネットを経由する可能性があります。この状態ではサプライチェーン攻撃やイメージ改ざんのリスクがあります。

RepositoryAccessModeVpcに設定すると、コンテナイメージはVPC内のプライベートDockerレジストリからプルされます。ここでいう「プライベートDockerレジストリ」とは、VPC内に構築した自前のDockerレジストリ(Docker Registry等)のことです。Amazon ECR(Elastic Container Registry)はVpcモードに対応していないため、ECRとは別にプライベートレジストリの構築が必要です。

セキュリティ基本要件として、環境を問わず対応が必須です。

修復手順

モデルの設定は作成後に変更できないため、新しいモデルを作成する必要があります。

1. 既存のモデル設定を確認する

SageMakerコンソールからもモデルの確認は可能ですが、このコントロールがチェックするImageConfigの設定値は表示されません。

スクリーンショット 2026-07-15 15.22.35.png

そのため、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が存在しない、またはRepositoryAccessModePlatformになっていることが、コントロール違反の原因です。

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

  • モデル名
  • 各コンテナのイメージURI
  • 各コンテナの環境変数
  • InferenceExecutionConfig(SerialまたはDirect)
  • ExecutionRoleArn
  • VpcConfig(設定されている場合)
  • タグ(設定されている場合)

2. プライベートDockerレジストリを構築する

RepositoryAccessMode: Vpcを使用するには、VPC内にプライベートDockerレジストリを構築する必要があります。Amazon ECRはVpcモードに対応していないため、Docker Registry等の自前のレジストリをVPC内に構築します。

プライベートDockerレジストリの構築手順は、公式ドキュメントを参照してください。

https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-containers-inference-private.html

構築にあたっては、以下の要件を満たす必要があります。

  • Docker Registry HTTP API V2に準拠したレジストリをVPC内にホストする
  • レジストリを既知の認証局(CA)が発行したTLS証明書で保護する
  • プライベートレジストリへの認証を行うLambda関数を作成する
  • SageMakerモデルの実行ロールに、VPCリソースへのアクセス権限を付与する

3. ImageConfigを設定したモデルを作成する

プライベートレジストリにイメージを格納したら、各コンテナのImageConfigRepositoryAccessMode: 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. エンドポイントの更新(該当する場合)

旧モデルを使用しているエンドポイントがある場合は、新しいモデルを参照するようにエンドポイント設定を更新します。

  1. 新しいモデルを参照するエンドポイント設定を作成する
  2. エンドポイントを新しいエンドポイント設定で更新する
  3. 旧モデルを削除する(任意)

エンドポイント設定の更新方法は、公式ドキュメントを参照してください。

https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-update.html

最後に

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

このコントロールへの対応には、VPC内にプライベートDockerレジストリを構築し、コンテナイメージをそのレジストリから取得する設定が必要です。Amazon ECRはRepositoryAccessMode: Vpcに対応していないため、ECRとは別にレジストリを用意する必要がある点にご注意ください。

また、SageMakerモデルのImageConfig設定はモデル作成後に変更できないため、修復にはモデルの再作成が必要です。
既存の設定をDescribeModelで事前に取得しておくと、再作成時の設定漏れを防げるのでおすすめです。

なお、類似コントロールの[SageMaker.16]は、プライマリコンテナ(単一コンテナ構成)に対する同様のチェックです。マルチコンテナ構成と単一コンテナ構成の両方を使用している場合は、あわせて対応をご検討ください。

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


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

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

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

何が提供されるの?

この記事をシェアする

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

関連記事