コンテンツにスキップ

インターネット到達性

VPC 内のリソースがインターネットから到達可能な状態にないかをチェックするコントロール群。パブリック IP の付与、パブリックサブネットへの配置、サービス固有のインターネットアクセス設定、セキュリティグループのポート開放など、インターネットからの到達経路に関わる設定を対象とする。

対象コントロール(15 件)

関連する宣言型ポリシー属性: VPC Block Public Access

デフォルト保護は API のデフォルト値(CLI でオプションを省略した場合の値)に基づく。マネジメントコンソールではより安全な値がプリセットされている場合がある。15 件のうち、デフォルトで保護されているのは ECS.2 / ECS.16 / EC2.19 の 3 件のみで、残り 12 件はデフォルトで未保護(明示的にプライベートな設定を行わない限り、インターネットから到達可能な状態でリソースが作成される可能性がある)。

コントロール重大度タイトルデフォルト保護記事
EC2.9HIGHEC2 インスタンスがパブリック IPv4 アドレスを持っていないこと未保護: デフォルト VPC のサブネットは MapPublicIpOnLaunch=true のため、明示的に --no-associate-public-ip-address を指定しない限り起動時にパブリック IP が付与される検証済み
EC2.25HIGHEC2 起動テンプレートがパブリック IP を割り当てていないこと未保護: 起動テンプレートで NetworkInterfaces.AssociatePublicIpAddress=true を明示的に設定可能であり、CSPM はテンプレート自体の設定値をチェックする検証済み
Autoscaling.5HIGHAuto Scaling 起動設定でパブリック IP を持っていないこと未保護: 起動設定で --associate-public-ip-address を指定可能(2024 年 10 月以降に作成されたアカウントでは起動設定の新規作成自体ができない)検証済み(一部)
ECS.2HIGHECS サービスにパブリック IP が自動割り当てされていないこと保護済み: サービスの awsvpcConfiguration.assignPublicIp の API デフォルトは DISABLED。明示的に ENABLED を指定しない限りパブリック IP は付与されない検証済み
ECS.16HIGHECS タスクセットにパブリック IP が自動割り当てされていないこと保護済み: タスクセットの awsvpcConfiguration.assignPublicIp の API デフォルトは DISABLED。明示的に ENABLED を指定しない限りパブリック IP は付与されない検証済み
EMR.1HIGHEMR クラスタープライマリノードがパブリック IP を持っていないこと未保護: パブリックサブネットに起動するとプライマリノードに自動でパブリック IP が付与される検証済み
RDS.2CRITICALRDS DB インスタンスが PubliclyAccessible でないこと未保護: --publicly-accessible を省略した場合のデフォルトは VPC 種別に依存し、デフォルト VPC では true(カスタム VPC では false検証済み
RDS.46HIGHRDS DB インスタンスがパブリックサブネットにデプロイされていないこと未保護: デフォルトの DB サブネットグループにはデフォルト VPC のパブリックサブネットが含まれる検証済み
DMS.1CRITICALDMS レプリケーションインスタンスがパブリックでないこと未保護: create-replication-instance--publicly-accessible の API デフォルトは true検証済み
Redshift.1CRITICALRedshift クラスターがパブリックアクセスを許可していないこと未保護: create-cluster--publicly-accessible を指定可能。マネジメントコンソールでは false がプリセットされる検証済み
RedshiftServerless.3HIGHRedshift Serverless ワークグループがパブリックアクセスを許可していないこと未保護: create-workgroup--publicly-accessible を指定可能。マネジメントコンソールでは false がプリセットされる検証済み
SageMaker.1HIGHSageMaker ノートブックインスタンスがインターネットに直接アクセスできないこと未保護: create-notebook-instance--direct-internet-access の API デフォルトは Enabled検証済み
ES.2CRITICALElasticsearch ドメインがパブリックにアクセス可能でないこと未保護: create-elasticsearch-domain--vpc-options を省略するとパブリックアクセス方式のドメインが作成される検証済み
Opensearch.2CRITICALOpenSearch ドメインがパブリックにアクセス可能でないこと未保護: create-domain--vpc-options を省略するとパブリックアクセス方式のドメインが作成される検証済み
EC2.19CRITICALSG がハイリスクポートへの無制限インバウンドアクセスを許可していないこと保護済み: 新規セキュリティグループはデフォルトでインバウンドルールを持たない。明示的に 0.0.0.0/0 のルールを追加しない限り FAILED にならない検証済み

コントロールの性質による分類

15 件のコントロールは、チェックしている設定の種類によって以下のように分類できる。

パブリック IP 付与(6 件)

EC2 インスタンスや Fargate タスクの ENI にパブリック IPv4 アドレスが割り当てられるかどうかを、インスタンスの実態や起動テンプレート・起動設定のパラメータからチェックする。

該当コントロール: EC2.9, EC2.25, Autoscaling.5, ECS.2, ECS.16, EMR.1

PubliclyAccessible フラグ(4 件)

RDS・DMS・Redshift 等のマネージドデータベースが持つ PubliclyAccessible パラメータをチェックする。true の場合、エンドポイントの DNS 名がパブリック IP に解決され、パブリックサブネットに配置されていればインターネットからアクセス可能になる。

該当コントロール: RDS.2, DMS.1, Redshift.1, RedshiftServerless.3

サブネット配置(1 件)

RDS インスタンスが配置されているサブネットのルートテーブルに IGW へのルートがあるかをチェックする。PubliclyAccessible フラグ(RDS.2)とは独立した評価であり、両方が FAILED の場合にインターネットからアクセス可能になる。

該当コントロール: RDS.46

サービス固有のインターネットアクセス設定(3 件)

サービスごとに固有の「インターネットへの公開/非公開」を制御するパラメータをチェックする。パブリック IP の付与やサブネットのルートテーブルではなく、各サービス独自の設定を評価する。

  • SageMaker.1: ノートブックインスタンスの DirectInternetAccess パラメータ。Enabled の場合 FAILED。SageMaker 管理 VPC 経由でインターネットアクセスが提供されるため、ユーザー VPC の ENI にパブリック IP は付与されない(VPC BPA 検証で確認済み)。
  • ES.2 / Opensearch.2: Elasticsearch / OpenSearch ドメインが VPC アクセス方式で作成されているかをチェックする。パブリックアクセス方式の場合、ドメインのエンドポイントは AWS 管理側のネットワークに配置される。

これら 3 件はいずれもインターネットアクセス経路がユーザー VPC の IGW を経由しないため、後述する VPC BPA を有効化しても実際のインターネットアクセスを遮断できない点で共通する。

該当コントロール: SageMaker.1, ES.2, Opensearch.2

セキュリティグループ(1 件)

セキュリティグループのインバウンドルールで、SSH(22)や RDP(3389)等のハイリスクポートが 0.0.0.0/0(全 IP)に開放されていないかをチェックする。セキュリティグループがどのリソースにもアタッチされていなくても FAILED になる。

該当コントロール: EC2.19

EC2.9 / EC2.25 / Autoscaling.5 の関係性

3 件はいずれも「パブリック IPv4 アドレスの付与を禁止する」という共通目的を持つが、チェック対象と評価タイミングが異なる。

EC2.9EC2.25Autoscaling.5
チェック対象起動中のインスタンス起動テンプレートのデフォルトバージョンAuto Scaling 起動設定
評価タイミングインスタンス起動後起動テンプレート作成・更新後起動設定作成後
実害の有無あり(既にパブリック IP が付与済み)なし(設定のみ、まだ起動されていない)なし(設定のみ)
Config ルールEC2_INSTANCE_NO_PUBLIC_IPEC2_LAUNCH_TEMPLATE_PUBLIC_IP_DISABLEDAUTOSCALING_LAUNCH_CONFIG_PUBLIC_IP_DISABLED

EC2.25 と Autoscaling.5 は「将来パブリック IP が付与される設定」を検出するものであり、実際のパブリック IP 付与は EC2.9 が検出する。3 件を組み合わせることで、インスタンス起動前(設定段階)と起動後(実態)の両面をカバーできる。

予防手段との対応

VPC BPA と CT.EC2.PV.8 について

VPC BPA に関連する予防手段には次の 2 種類がある。両者は実体としては同じ宣言型ポリシー(vpc_block_public_access)を使用するため、Security Hub finding への影響も同じである。

予防手段種別mode の選択
VPC BPA宣言型ポリシー(Organizations 直接適用)block_ingress または block_bidirectional から選択可能
CT.EC2.PV.8宣言型ポリシー(Control Tower 経由)block_bidirectional 固定

block_ingress は IGW 経由のインバウンドのみをブロックし、NAT Gateway / Egress-only IGW 経由のアウトバウンドは許可する(戻りトラフィックはステートフルに自動許可)。

block_bidirectional は IGW / Egress-only IGW 経由の全トラフィックに加えて、NAT Gateway 経由のアウトバウンドもブロックする(NAT Gateway 経由のアウトバウンドブロックは VPC BPA 検証の補足 2 で確認済み)。

両モードはアウトバウンドの挙動が異なるが、インターネットからリソースへのインバウンド方向のパブリックアクセスはいずれのモードでも遮断される。本セクションでは、Security Hub finding への影響(インバウンドのパブリックアクセス禁止)の観点で、両者を同一の予防手段として扱う。詳細は VPC BPA の検証 を参照。

各コントロールへの影響

VPC BPA はインターネット通信を実行時にブロックするが、パブリック IP の付与自体や各サービスの設定値は変更しない。そのため、VPC BPA を有効化しても各コントロールの finding はいずれも FAILED のまま変化しない。

ただし、実際のインターネットアクセスへの影響は、対象リソースの通信経路によって異なる:

  • ユーザー VPC の IGW を経由するリソース(11 件): VPC BPA により実際のインターネットアクセスはブロックされる。finding が FAILED であっても実害はない。EC2.9 / EC2.25 / ECS.2 / ECS.16 / EMR.1 / RDS.2 / RDS.46 / DMS.1 / Redshift.1 / RedshiftServerless.3 / EC2.19。
  • ユーザー VPC の IGW を経由しないリソース(3 件): SageMaker.1 / ES.2 / Opensearch.2。インターネットアクセスのパスがユーザー VPC の IGW を経由しないため、VPC BPA を有効化しても実際のアクセスは遮断されない。VPC BPA による実害低減効果は得られず、これらは個別に VPC アクセス方式(ES.2 / Opensearch.2)や DirectInternetAccess=Disabled(SageMaker.1)への変更で対処する必要がある。
  • 検証不可(1 件): Autoscaling.5。2024 年 10 月以降のアカウントで起動設定の新規作成ができないため、検証できない。
コントロールVPC BPA / CT.EC2.PV.8 の影響備考
EC2.9FAILED のまま変化しない(検証済み)
EC2.25FAILED のまま変化しない(検証済み)
Autoscaling.5検証不可起動設定の作成が不可(2024 年 10 月以降のアカウント)
ECS.2FAILED のまま変化しない(検証済み)
ECS.16FAILED のまま変化しない(検証済み)
EMR.1FAILED のまま変化しない(検証済み)VPC BPA 有効状態では EMR クラスターのブートストラップが完了しないため、先に起動してから VPC BPA を有効化する手順で検証
RDS.2FAILED のまま変化しない(検証済み)
RDS.46FAILED のまま変化しない(検証済み)
DMS.1FAILED のまま変化しない(検証済み)
Redshift.1FAILED のまま変化しない(検証済み)VPC BPA 有効状態では PubliclyAccessible=true での起動がブロックされるため、先に起動してから VPC BPA を有効化する手順で検証
RedshiftServerless.3FAILED のまま変化しない(検証済み)同上
SageMaker.1FAILED のまま変化しない(検証済み)ノートブックインスタンスのインターネットアクセスは SageMaker の管理 VPC 経由で提供され、ユーザー VPC の IGW を経由しないため、ユーザー側で VPC BPA を有効化しても実際のインターネット通信は遮断されない
ES.2FAILED のまま変化しない(VPC BPA 記事では検証なし)パブリックアクセス方式のドメインのエンドポイントは AWS 管理側のネットワークに配置され、ユーザー VPC の IGW を経由しないため、ユーザー側で VPC BPA を有効化しても実際のインターネットアクセスは遮断されない(SageMaker.1 と同じ構造的理由)
Opensearch.2FAILED のまま変化しない(VPC BPA 記事では検証なし)同上
EC2.19FAILED のまま変化しない(検証済み)

SageMaker.1 / ES.2 / Opensearch.2 の予防手段(調査結論)

前述の通り、SageMaker.1 / ES.2 / Opensearch.2 の 3 件は VPC BPA の実害低減効果を受けられないため、別途の予防手段が必要となる。これらのサービスには、EBS Snapshot BPA や VPC BPA のような「アカウント・リージョン単位で公開を一括ブロックする」設定は提供されていない(2026 年 5 月時点)。

Control Tower にはプロアクティブコントロール(CloudFormation Hooks)として CT.SAGEMAKER.PR.1(SageMaker)、CT.OPENSEARCH.PR.2 / CT.OPENSEARCH.PR.10(ES / OpenSearch)が存在するが、これらは CloudFormation 経由のデプロイのみを対象とし、CLI / SDK からの直接 API 呼び出しはブロックしない。予防コントロール(SCP / RCP / 宣言型ポリシー)は提供されていない(2026 年 5 月時点)。

調査結果:

  • カスタム SCP: ES.2 / Opensearch.2 の API(es:CreateElasticsearchDomain / es:CreateDomain)には VPC アクセスを制御する条件キーが存在しないため、SCP では予防不可(条件キー調査 参照)
  • Config + 自動修復: AWS 公式ドキュメント Launching your Amazon OpenSearch Service domains within a VPC に「If you create a domain with a public endpoint, you can’t later place it within a VPC. You must instead create a new domain and migrate your data.」と明記されており、パブリックエンドポイントから VPC 内への移行は不可。ドメインを削除して再作成しない限り COMPLIANT に戻せないため、自動修復は実質的に成立しない

そのため ES.2 / Opensearch.2 の現実解は VPC BPA による実害ブロック(ただし前述の通り構造的に効果は限定的)か、リソースポリシーでの IP 制限(finding は FAILED のまま残る)となる。本サイトでは自動修復の検証対象外として扱う(Config / 自動修復 参照)。