VPC とサブネットへのパブリックアクセスをブロックする - Amazon Virtual Private Cloud

VPC とサブネットへのパブリックアクセスをブロックする

VPC ブロックパブリックアクセス (BPA) は、AWS アカウント全体で VPC リソースに対するパブリックインターネットアクセスを厳然と防止できるようにする一元的なセキュリティ機能です。これにより、特定の例外や監査機能については柔軟に対応しながら、セキュリティ要件を確実に遵守できます。

VPC BPA 機能には次のモードがあります:

  • [双方向]: このリージョンのインターネットゲートウェイとエグレスのみのインターネットゲートウェイとの間のすべてのトラフィック (除外された VPC とサブネットを除く) がブロックされます。

  • [イングレスのみ]: このリージョンの VPC に対するすべてのインターネットトラフィック (除外される VPC またはサブネットを除く) がブロックされます。NAT ゲートウェイとエグレスのみのインターネットゲートウェイとの間のトラフィックのみが許可されます。なぜなら、これらのゲートウェイはアウトバウンド接続の確立のみを許可するからです。

また、ブロックしないトラフィックのために、この機能で「除外」を作成することもできます。除外は、アカウントの BPA モードから除外し、双方向またはエグレスのみのアクセスを許可する単一の VPC またはサブネットに適用できるモードです。

除外では、次のいずれかのモードを使用できます:

  • [双方向]: 除外された VPC とサブネットとの間のすべてのインターネットトラフィックが許可されます。

  • [エグレスのみ]: 除外された VPCとサブネットからのアウトバウンドインターネットトラフィックが許可されます。除外された VPC とサブネットに対するインバウンドインターネットトラフィックはブロックされます。これは、BPA が [双方向] に設定されている場合にのみ適用されます。

BPA の基礎知識

このセクションでは、VPC BPA をサポートするサービスや、VPC BPA の使用方法など、VPC BPA に関する重要な詳細について説明します。

リージョナルな可用性

VPC BPA は、GovCloud および中国リージョンを含むすべての商用 AWS リージョンで利用できます。

また、このガイドでは、Network Access Analyzer および Reachability Analyzer と VPC BPA の併用についても説明します。Network Access Analyzer と Reachability Analyzer は、すべての商用リージョンで利用できるわけではありません。Network Access Analyzer と Reachability Analyzer を利用できるリージョンについては、「Network Access Analyzer ガイド」の「Limitations」と「Reachability Analyzer ガイド」の「Considerations」を参照してください。

AWS サービスへの影響とサポート

次のリソースとサービスは VPC BPA をサポートし、これらのサービスとリソースに対するトラフィックは VPC BPA の影響を受けます。

  • [インターネットゲートウェイ]: すべてのインバウンドトラフィックとアウトバウンドトラフィックがブロックされます。

  • [エグレスのみのインターネットゲートウェイ]: すべてのアウトバウンドトラフィックがブロックされます。エグレスのみのインターネットゲートウェイは、インバウンドトラフィックを許可しません。

  • [NAT ゲートウェイ]: すべてのインバウンドトラフィックとアウトバウンドトラフィックがブロックされます。NAT ゲートウェイには、インターネット接続のためのインターネットゲートウェイが必要です。

  • [インターネット向け Network Load Balancer]: すべてのインバウンドトラフィックとアウトバウンドトラフィックがブロックされます。インターネット向け Network Load Balancer には、インターネット接続のためのインターネットゲートウェイが必要です。

  • [インターネット向け Application Load Balancer]: すべてのインバウンドトラフィックとアウトバウンドトラフィックがブロックされます。インターネット向け Application Load Balancer には、インターネット接続のためのインターネットゲートウェイが必要です。

  • [AWS Global Accelerator]: VPC に対するインバウンドトラフィックはブロックされます。

次のサービスやリソースについてのトラフィックなど、プライベート接続に関連するトラフィックは、VPC BPA によってブロックされず、影響も受けません。

  • AWS Client VPN

  • Amazon CloudFront VPC オリジン

  • AWS CloudWAN

  • AWS Outposts ローカルゲートウェイ

  • AWS Site-to-Site VPN

  • トランジットゲートウェイ

  • AWS Verified Access

  • AWS Wavelength キャリアゲートウェイ

重要

VPC 内のリソースから EC2 DNS Resolver など、VPC で実行されている他のサービスにプライベートに送信されるトラフィックは、VPC 内のインターネットゲートウェイを通過しないため、BPA がオンになっている場合でも許可されます。これらのサービスは、DNS クエリを解決するためなど、ユーザーに代わって VPC 外のリソースに対してリクエストを実行し、VPC 内のリソースのアクティビティに関する情報を公開する可能性があります (他のセキュリティコントロールを通じて緩和されない場合)。

BPA の制限事項

VPC BPA のイングレスのみのモードは、NAT ゲートウェイとエグレスのみのインターネットゲートウェイが許可されていないローカルゾーン (LZ) ではサポートされていません。

IAM ポリシーを使用して VPA BPA に対するアクセスを制御する

VPC BPA 機能に対するアクセスを許可/拒否する IAM ポリシーの例については、「VPC とサブネットへのパブリックアクセスをブロックする」を参照してください。

アカウントのために BPA 双方向モードを有効にする

VPC BPA 双方向モードは、このリージョンのインターネットゲートウェイとエグレスのみのインターネットゲートウェイとの間のすべてのトラフィックをブロックします (除外された VPC とサブネットを除く)。除外の詳細については、「除外を作成および削除する」を参照してください。

重要

本番アカウントで VPC BPA を有効にする前に、インターネットアクセスを必要とするワークロードを徹底的に確認することを強くお勧めします。

注記
  • アカウントの VPC とサブネットで VPC BPA を有効にするには、その VPC とサブネットを所有している必要があります。

  • 現在 VPC サブネットを他のアカウントと共有している場合、サブネット所有者によって強制適用される VPC BPA モードも参加者のトラフィックに適用されますが、参加者は共有サブネットに影響を及ぼす VPC BPA の設定を制御することはできません。

AWS Management Console
  1. https://console.aws.amazon.com/vpc/ で Amazon VPC コンソールを開きます。

  2. 左のナビゲーションペインで、[設定] を選択します。

  3. [パブリックアクセスの設定を編集] を選択します。

  4. [ブロックパブリックアクセスをオンにする][双方向] を選択し、[変更を保存] を選択します。

  5. [ステータス][オン] に変わるまで待ちます。BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。

VPC BPA の [双方向] モードがオンになりました。

AWS CLI
  1. VPC BPA をオンにします。

    aws ec2 --region us-east-2 modify-vpc-block-public-access-options --internet-gateway-block-mode block-bidirectional

    BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。

  2. VPC BPA のステータスを表示します。

    aws ec2 --region us-east-2 describe-vpc-block-public-access-options

VPC BPA モードをイングレスのみに変更する

VPC BPA のイングレスのみのモードは、このリージョンの VPC に対するすべてのインターネットトラフィックをブロックします (除外される VPC またはサブネットを除く)。NAT ゲートウェイとエグレスのみのインターネットゲートウェイとの間のトラフィックのみが許可されます。なぜなら、これらのゲートウェイはアウトバウンド接続の確立のみを許可するからです。

AWS Management Console
  1. VPC コンソールでパブリックアクセスの設定を変更し、方向を [イングレスのみ] に変更します。

  2. 変更を保存し、ステータスが更新されるまで待ちます。BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。

AWS CLI
  1. VPC BPA ブロックの方向を変更します:

    aws ec2 --region us-east-2 modify-vpc-block-public-access-options --internet-gateway-block-mode block-ingress

    BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。

  2. VPC BPA のステータスを表示します。

    aws ec2 --region us-east-2 describe-vpc-block-public-access-options

除外を作成および削除する

VPC BPA の除外は、アカウントの BPA モードから除外し、双方向またはエグレスのみのアクセスを許可する単一の VPC またはサブネットに適用できるモードです。アカウントで BPA が有効になっていない場合でも VPC とサブネットのために BPA の除外を作成して、VPC BPA がオンになっているときに除外に対するトラフィックの中断が発生しないようにできます。

最大 50 個の除外を作成できます。制限の引き上げをリクエストする方法については、「Amazon VPC クォータ」の「VPC BPA exclusions per account」を参照してください。

AWS Management Console
  1. [ブロックパブリックアクセス] タブの [除外] で、[除外を作成] を選択します。

  2. VPC またはサブネットを選択し、ブロックの方向を選択します:

    • [双方向]: 除外された VPC とサブネットとの間のすべてのインターネットトラフィックを許可します。

    • [エグレスのみ]: 除外された VPCとサブネットからのアウトバウンドインターネットトラフィックを許可します。除外された VPC とサブネットに対するインバウンドインターネットトラフィックをブロックします。この設定は、BPA が [双方向] に設定されている場合に適用されます。

  3. [除外を作成] を選択します。

  4. [除外ステータス][アクティブ] に変わるまで待ちます。変更を確認するには、除外テーブルを更新する必要がある場合があります。

除外が作成されました。

AWS CLI
  1. 除外の許可の方向を変更します:

    aws ec2 --region us-east-2 create-vpc-block-public-access-exclusion --subnet-id subnet-id --internet-gateway-exclusion-mode allow-bidirectional
  2. 除外ステータスが更新されるまでに時間がかかる場合があります。除外のステータスを表示するには:

    aws ec2 --region us-east-2 describe-vpc-block-public-access-exclusions --exclusion-ids exclusion-id

BPA の影響を評価し、BPA をモニタリングする

このセクションには、VPC BPA をオンにする前に VPC BPA の影響を評価する方法に関する情報と、VPC BPA をオンにした後にトラフィックがブロックされるかどうかをモニタリングする方法に関する情報が含まれています。

ネットワークアクセスアナライザー で BPA の影響を評価する

このセクションでは、VPC BPA を有効にしてアクセスをブロックする前に、ネットワークアクセスアナライザー を使用して、インターネットゲートウェイを使用するアカウントのリソースを表示します。この分析を使用して、アカウントで VPC BPA をオンにし、トラフィックをブロックした場合の影響を理解します。

注記
  • Network Access Analyzer は IPv6 をサポートしていないため、エグレスのみのインターネットゲートウェイのアウトバウンド IPv6 トラフィックに対する BPA の潜在的な影響を表示するために使用することはできません。

  • Network Access Analyzer で実行する分析には料金がかかります。詳細については、「ネットワークアクセスアナライザー ガイド」の「料金」を参照してください。

  • Network Access Analyzer が利用できるリージョンについては、「Network Access Analyzer ガイド」の「Limitations」を参照してください。

AWS Management Console
  1. https://console.aws.amazon.com/networkinsights/ で AWS Network Insights コンソールを開きます。

  2. [Network Access Analyzer] を選択します。

  3. [ネットワークアクセススコープを作成] を選択します。

  4. [インターネットゲートウェイとの間でアクセスを識別] を選択し、[次へ] を選択します。

  5. テンプレートは、アカウントのインターネットゲートウェイとの間のトラフィックを分析するように既に設定されています。これは、[ソース][宛先] で確認できます。

  6. [Next] を選択します。

  7. [ネットワークアクセススコープを作成] を選択します。

  8. 先ほど作成したスコープを選択し、[分析] を選択します。

  9. 分析が完了するまで待ちます。

  10. 分析の検出結果を表示します。[検出結果] の各行には、アカウントのインターネットゲートウェイとの間のネットワーク内でパケットが沿うことができるネットワークパスが表示されます。この場合、VPC BPA をオンにし、これらの検出結果に表示される VPC やサブネットのいずれも BPA の除外として設定されていない場合、それらの VPC やサブネットに対するトラフィックは制限されます。

  11. 各検出結果を分析して、VPC 内のリソースに対する BPA の影響を理解します。

影響分析が完了しました。

AWS CLI
  1. ネットワークアクセススコープを作成します:

    aws ec2 create-network-insights-access-scope --region us-east-2 --match-paths "Source={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}" "Destination={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}"
  2. スコープ分析を開始します:

    aws ec2 start-network-insights-access-scope-analysis --region us-east-2 --network-insights-access-scope-id nis-id
  3. 分析の結果を取得します:

    aws ec2 get-network-insights-access-scope-analysis-findings --region us-east-2 --network-insights-access-scope-analysis-id nisa-0aa383a1938f94cd1 --max-items 1

    その結果、アカウント内のすべての VPC のインターネットゲートウェイとの間のトラフィックが表示されます。結果は「検出結果」として整理されます。"FindingId": "AnalysisFinding-1" は、これが分析の最初の結果であることを示します。複数の検出結果があり、それぞれが VPC BPA をオンにすることで影響を受けるトラフィックフローを示しています。最初の検出結果は、トラフィックがインターネットゲートウェイ ("SequenceNumber": 1) で開始され、NACL ("SequenceNumber": 2)、セキュリティグループ ("SequenceNumber": 3) の順に渡され、インスタンス ("SequenceNumber": 4) で終了したことを示しています。

  4. 検出結果を分析して、VPC 内のリソースに対する BPA の影響を理解します。

影響分析が完了しました。

フローログを使用して BPA の影響をモニタリングする

VPC フローログは、VPC の Elastic Network Interface との間で行き来する IP トラフィックに関する情報をキャプチャできるようにする機能です。この機能を使用して、インスタンスのネットワークインターフェイスに到達しないように VPC BPA によってブロックされたトラフィックをモニタリングできます。

フローログの使用 のステップを使用して、VPC のフローログを作成します。

フローログを作成する際には、フィールド reject-reason を含むカスタム形式を使用してください。

フローログを表示する際に、BPA が原因で ENI に対するトラフィックが拒否された場合、フローログエントリに BPAreject-reason が表示されます。

VPC フローログについての標準の制限に加えて、VPC BPA に固有の次の制限に留意してください。

  • VPC BPA のフローログには、スキップされたレコードは含まれません。

  • VPC BPA のフローログには、フローログに bytes フィールドを含めた場合であっても、bytes は含まれません。

CloudTrail を使用して除外の削除を追跡する

このセクションでは、AWS CloudTrail を使用して VPC BPA の除外の削除をモニタリングおよび追跡する方法について説明します。

AWS Management Console

https://console.aws.amazon.com/cloudtrailv2/ の AWS CloudTrail コンソールの [リソースタイプ] > AWS::EC2::VPCBlockPublicAccessExclusion にアクセスして、[CloudTrail イベント履歴] で、削除された除外を確認できます。

AWS CLI

除外の削除に関連するイベントを表示するには、lookup-events コマンドを使用します:

aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::EC2::VPCBlockPublicAccessExclusion

Reachability Analyzer を使用して接続がブロックされていることを検証する

VPC Reachability Analyzer を使用して、VPC BPA の設定を含むネットワーク設定を踏まえて、特定のネットワークパスに到達できるかどうかを評価できます。

Reachability Analyzer を利用できるリージョンについては、「Reachability Analyzer ガイド」の「Considerations」を参照してください。

AWS Management Console
  1. https://console.aws.amazon.com/networkinsights/home#ReachabilityAnalyzer で Network Insights コンソールを開きます。

  2. [パスを作成および分析] をクリックします。

  3. [ソースタイプ] で、[インターネットゲートウェイ] を選択し、[ソースドロップダウン] からトラフィックをブロックするインターネットゲートウェイを選択します。

  4. [宛先タイプ] で、[インスタンス] を選択し、[宛先] ドロップダウンからトラフィックをブロックするインスタンスを選択します。

  5. [パスを作成および分析] をクリックします。

  6. 分析が完了するまで待ちます。数分かかる場合があります。

  7. 完了すると、[到達可能性ステータス][到達不可] となり、[パスの詳細]VPC_BLOCK_PUBLIC_ACCESS_ENABLED がこの到達可能性に関する問題の原因であることが示されます。

AWS CLI
  1. トラフィックをブロックするインターネットゲートウェイの ID (ソース) と、トラフィックをブロックするインスタンスの ID (宛先) を使用してネットワークパスを作成します。

    aws ec2 --region us-east-2 create-network-insights-path --source igw-id --destination instance-id --protocol TCP
  2. ネットワークパスで分析を開始します:

    aws ec2 --region us-east-2 start-network-insights-analysis --network-insights-path-id nip-id
  3. 分析の結果を取得します:

    aws ec2 --region us-east-2 describe-network-insights-analyses --network-insights-analysis-ids nia-id
  4. 到達可能性の欠如について、VPC_BLOCK_PUBLIC_ACCESS_ENABLEDExplanationCode であることを確認します。

高度な例

このセクションでは、VPC ブロックパブリックアクセス機能がさまざまなシナリオでどのように機能するかを理解するのに役立つ高度な例を示します。各シナリオはその前のシナリオに依拠するため、ステップを順番に完了することが重要です。

重要

本番アカウントでは、この例を実行しないでください。本番アカウントで VPC BPA を有効にする前に、インターネットアクセスを必要とするワークロードを徹底的に確認することを強くお勧めします。

注記

VPC BPA の機能を完全に理解するには、アカウントに特定のリソースが必要です。このセクションでは、この機能の仕組みを完全に理解するために必要なリソースをプロビジョニングするために使用できる AWS CloudFormation テンプレートを提供します。CloudFormation テンプレートを使用してプロビジョニングするリソースと、Network Access Analyzer と Reachability Analyzer を使用して実行する分析にはコストがかかります。このセクションのテンプレートを使用する場合は、この例を完了したら、クリーンアップのステップを完了してください。

CloudFormation テンプレートをデプロイする

この機能の仕組みのデモには、VPC、サブネット、インスタンス、および他のリソースが必要です。このデモをより簡単に完了できるように、このデモのシナリオのために必要なリソースを迅速にスピンアップするために使用できる AWS CloudFormation テンプレートを以下で提供しています。

注記

NAT ゲートウェイやパブリック IPv4 アドレスのコストなど、CloudFormation テンプレートを使用してこのセクションで作成するリソースに関連するコストがかかります。余分なコストがかからないよう、クリーンアップのステップを完了して、この例のために作成されたすべてのリソースを削除してください。

このテンプレートによって以下のリソースがアカウントに作成されます。

  • Egress-only インターネットゲートウェイ

  • インターネットゲートウェイ

  • NAT ゲートウェイ

  • 2 つのパブリックサブネット

  • 1 つのプライベートサブネット

  • パブリックおよびプライベート IPv4 アドレスを持つ 2 つの EC2 インスタンス

  • IPv6 アドレスとプライベート IPv4 アドレスを持つ 1 つの EC2 インスタンス

  • プライベート IPv4 アドレスのみを持つ 1 つの EC2 インスタンス

  • SSH および ICMP インバウンドトラフィックが許可され、すべてのアウトバウンドトラフィックが許可されているセキュリティグループ

  • VPC フローログ

  • サブネット B の 1 つの EC2 Instance Connect エンドポイント

以下のテンプレートをコピーし、.yaml ファイルに保存します。

AWSTemplateFormatVersion: '2010-09-09' Description: Creates a VPC with public and private subnets, NAT gateway, and EC2 instances for VPC BPA. Parameters: InstanceAMI: Description: ID of the Amazone Machine Image (AMI) to use with the instances launched by this template Type: AWS::EC2::Image::Id InstanceType: Description: EC2 Instance type to use with the instances launched by this template Type: String Default: t2.micro Resources: # VPC VPCBPA: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 EnableDnsHostnames: true EnableDnsSupport: true InstanceTenancy: default Tags: - Key: Name Value: VPC BPA # VPC IPv6 CIDR VPCBPAIpv6CidrBlock: Type: AWS::EC2::VPCCidrBlock Properties: VpcId: !Ref VPCBPA AmazonProvidedIpv6CidrBlock: true # EC2 Key Pair VPCBPAKeyPair: Type: AWS::EC2::KeyPair Properties: KeyName: vpc-bpa-key # Internet Gateway VPCBPAInternetGateway: Type: AWS::EC2::InternetGateway Properties: Tags: - Key: Name Value: VPC BPA Internet Gateway VPCBPAInternetGatewayAttachment: Type: AWS::EC2::VPCGatewayAttachment Properties: VpcId: !Ref VPCBPA InternetGatewayId: !Ref VPCBPAInternetGateway # Egress-Only Internet Gateway VPCBPAEgressOnlyInternetGateway: Type: AWS::EC2::EgressOnlyInternetGateway Properties: VpcId: !Ref VPCBPA # Subnets VPCBPAPublicSubnetA: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPCBPA CidrBlock: 10.0.1.0/24 MapPublicIpOnLaunch: true Tags: - Key: Name Value: VPC BPA Public Subnet A VPCBPAPublicSubnetB: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPCBPA CidrBlock: 10.0.2.0/24 MapPublicIpOnLaunch: true Tags: - Key: Name Value: VPC BPA Public Subnet B VPCBPAPrivateSubnetC: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPCBPA CidrBlock: 10.0.3.0/24 MapPublicIpOnLaunch: false Ipv6CidrBlock: !Select [0, !GetAtt VPCBPA.Ipv6CidrBlocks] AssignIpv6AddressOnCreation: true Tags: - Key: Name Value: VPC BPA Private Subnet C # NAT Gateway VPCBPANATGateway: Type: AWS::EC2::NatGateway Properties: AllocationId: !GetAtt VPCBPANATGatewayEIP.AllocationId SubnetId: !Ref VPCBPAPublicSubnetB Tags: - Key: Name Value: VPC BPA NAT Gateway VPCBPANATGatewayEIP: Type: AWS::EC2::EIP Properties: Domain: vpc Tags: - Key: Name Value: VPC BPA NAT Gateway EIP # Route Tables VPCBPAPublicRouteTable: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPCBPA Tags: - Key: Name Value: VPC BPA Public Route Table VPCBPAPublicRoute: Type: AWS::EC2::Route DependsOn: VPCBPAInternetGatewayAttachment Properties: RouteTableId: !Ref VPCBPAPublicRouteTable DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref VPCBPAInternetGateway VPCBPAPublicSubnetARouteTableAssoc: Type: AWS::EC2::SubnetRouteTableAssociation Properties: SubnetId: !Ref VPCBPAPublicSubnetA RouteTableId: !Ref VPCBPAPublicRouteTable VPCBPAPublicSubnetBRouteTableAssoc: Type: AWS::EC2::SubnetRouteTableAssociation Properties: SubnetId: !Ref VPCBPAPublicSubnetB RouteTableId: !Ref VPCBPAPublicRouteTable VPCBPAPrivateRouteTable: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPCBPA Tags: - Key: Name Value: VPC BPA Private Route Table VPCBPAPrivateRoute: Type: AWS::EC2::Route Properties: RouteTableId: !Ref VPCBPAPrivateRouteTable DestinationCidrBlock: 0.0.0.0/0 NatGatewayId: !Ref VPCBPANATGateway VPCBPAPrivateSubnetCRoute: Type: AWS::EC2::Route Properties: RouteTableId: !Ref VPCBPAPrivateRouteTable DestinationIpv6CidrBlock: ::/0 EgressOnlyInternetGatewayId: !Ref VPCBPAEgressOnlyInternetGateway VPCBPAPrivateSubnetCRouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: SubnetId: !Ref VPCBPAPrivateSubnetC RouteTableId: !Ref VPCBPAPrivateRouteTable # EC2 Instances Security Group VPCBPAInstancesSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupName: VPC BPA Instances Security Group GroupDescription: Allow SSH and ICMP access SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0 - IpProtocol: icmp FromPort: -1 ToPort: -1 CidrIp: 0.0.0.0/0 VpcId: !Ref VPCBPA Tags: - Key: Name Value: VPC BPA Instances Security Group # EC2 Instances VPCBPAInstanceA: Type: AWS::EC2::Instance Properties: ImageId: !Ref InstanceAMI InstanceType: t2.micro KeyName: !Ref VPCBPAKeyPair SubnetId: !Ref VPCBPAPublicSubnetA SecurityGroupIds: - !Ref VPCBPAInstancesSecurityGroup Tags: - Key: Name Value: VPC BPA Instance A VPCBPAInstanceB: Type: AWS::EC2::Instance Properties: ImageId: !Ref InstanceAMI InstanceType: !Ref InstanceType KeyName: !Ref VPCBPAKeyPair SubnetId: !Ref VPCBPAPublicSubnetB SecurityGroupIds: - !Ref VPCBPAInstancesSecurityGroup Tags: - Key: Name Value: VPC BPA Instance B VPCBPAInstanceC: Type: AWS::EC2::Instance Properties: ImageId: !Ref InstanceAMI InstanceType: !Ref InstanceType KeyName: !Ref VPCBPAKeyPair SubnetId: !Ref VPCBPAPrivateSubnetC SecurityGroupIds: - !Ref VPCBPAInstancesSecurityGroup Tags: - Key: Name Value: VPC BPA Instance C VPCBPAInstanceD: Type: AWS::EC2::Instance Properties: ImageId: !Ref InstanceAMI InstanceType: !Ref InstanceType KeyName: !Ref VPCBPAKeyPair NetworkInterfaces: - DeviceIndex: '0' GroupSet: - !Ref VPCBPAInstancesSecurityGroup SubnetId: !Ref VPCBPAPrivateSubnetC Ipv6AddressCount: 1 Tags: - Key: Name Value: VPC BPA Instance D # Flow Logs IAM Role VPCBPAFlowLogRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: vpc-flow-logs.amazonaws.com Action: 'sts:AssumeRole' Tags: - Key: Name Value: VPC BPA Flow Logs Role VPCBPAFlowLogPolicy: Type: AWS::IAM::Policy Properties: PolicyName: VPC-BPA-FlowLogsPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - 'logs:CreateLogGroup' - 'logs:CreateLogStream' - 'logs:PutLogEvents' - 'logs:DescribeLogGroups' - 'logs:DescribeLogStreams' Resource: '*' Roles: - !Ref VPCBPAFlowLogRole # Flow Logs VPCBPAFlowLog: Type: AWS::EC2::FlowLog Properties: ResourceId: !Ref VPCBPA ResourceType: VPC TrafficType: ALL LogDestinationType: cloud-watch-logs LogGroupName: /aws/vpc-flow-logs/VPC-BPA DeliverLogsPermissionArn: !GetAtt VPCBPAFlowLogRole.Arn LogFormat: '${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status} ${vpc-id} ${subnet-id} ${instance-id} ${tcp-flags} ${type} ${pkt-srcaddr} ${pkt-dstaddr} ${region} ${az-id} ${sublocation-type} ${sublocation-id} ${pkt-src-aws-service} ${pkt-dst-aws-service} ${flow-direction} ${traffic-path} ${reject-reason}' Tags: - Key: Name Value: VPC BPA Flow Logs # EC2 Instance Connect Endpoint VPCBPAEC2InstanceConnectEndpoint: Type: AWS::EC2::InstanceConnectEndpoint Properties: SecurityGroupIds: - !Ref VPCBPAInstancesSecurityGroup SubnetId: !Ref VPCBPAPublicSubnetB Outputs: VPCBPAVPCId: Description: A reference to the created VPC Value: !Ref VPCBPA Export: Name: vpc-id VPCBPAPublicSubnetAId: Description: The ID of the public subnet A Value: !Ref VPCBPAPublicSubnetA VPCBPAPublicSubnetAName: Description: The name of the public subnet A Value: VPC BPA Public Subnet A VPCBPAPublicSubnetBId: Description: The ID of the public subnet B Value: !Ref VPCBPAPublicSubnetB VPCBPAPublicSubnetBName: Description: The name of the public subnet B Value: VPC BPA Public Subnet B VPCBPAPrivateSubnetCId: Description: The ID of the private subnet C Value: !Ref VPCBPAPrivateSubnetC VPCBPAPrivateSubnetCName: Description: The name of the private subnet C Value: VPC BPA Private Subnet C VPCBPAInstanceAId: Description: The ID of instance A Value: !Ref VPCBPAInstanceA VPCBPAInstanceBId: Description: The ID of instance B Value: !Ref VPCBPAInstanceB VPCBPAInstanceCId: Description: The ID of instance C Value: !Ref VPCBPAInstanceC VPCBPAInstanceDId: Description: The ID of instance D Value: !Ref VPCBPAInstanceD
AWS Management Console
  1. https://console.aws.amazon.com/cloudformation/ で AWS CloudFormation コンソールを開きます。

  2. [スタックを作成] を選択し、.yaml テンプレートファイルをアップロードします。

  3. テンプレートを起動するステップを実行します。[イメージ ID][インスタンスタイプ] (t2.micro など) を入力する必要があります。また、フローログの作成と Amazon CloudWatch へのログ記録の許可のために、CloudFormation が IAM ロールを作成することを許可する必要があります。

  4. スタックを起動したら、[イベント] タブで進行状況を表示し、続行する前にスタックが完了していることを確認します。

AWS CLI
  1. CloudFormation スタックを作成するには、次のコマンドを実行します:

    aws cloudformation create-stack --stack-name VPC-BPA-stack --template-body file://sampletemplate.yaml --capabilities CAPABILITY_IAM --region us-east-2

    出力:

    { "StackId": "arn:aws:cloudformation:us-east-2:470889052923:stack/VPC-BPA-stack/8a7a2cc0-8001-11ef-b196-06386a84b72f" }
  2. 進行状況を表示し、続行する前にスタックが完了しているようにします:

    aws cloudformation describe-stack-events --stack-name VPC-BPA-stack --region us-east-2

Network Access Analyzer を使用して VPC BPA の影響を表示する

このセクションでは、Network Access Analyzer を使用して、インターネットゲートウェイを使用するアカウントのリソースを表示します。この分析を使用して、アカウントで VPC BPA をオンにし、トラフィックをブロックした場合の影響を理解します。

Network Access Analyzer が利用できるリージョンについては、「Network Access Analyzer ガイド」の「Limitations」を参照してください。

AWS Management Console
  1. https://console.aws.amazon.com/networkinsights/ で AWS Network Insights コンソールを開きます。

  2. [Network Access Analyzer] を選択します。

  3. [ネットワークアクセススコープを作成] を選択します。

  4. [インターネットゲートウェイとの間でアクセスを識別] を選択し、[次へ] を選択します。

  5. テンプレートは、アカウントのインターネットゲートウェイとの間のトラフィックを分析するように既に設定されています。これは、[ソース][宛先] で確認できます。

  6. [Next] を選択します。

  7. [ネットワークアクセススコープを作成] を選択します。

  8. 先ほど作成したスコープを選択し、[分析] を選択します。

  9. 分析が完了するまで待ちます。

  10. 分析の検出結果を表示します。[検出結果] の各行には、アカウントのインターネットゲートウェイとの間のネットワーク内でパケットが沿うことができるネットワークパスが表示されます。この場合、VPC BPA をオンにし、これらの検出結果に表示される VPC やサブネットのいずれも BPA の除外として設定されていない場合、それらの VPC やサブネットに対するトラフィックは制限されます。

  11. 各検出結果を分析して、VPC 内のリソースに対する BPA の影響を理解します。

影響分析が完了しました。

AWS CLI
  1. ネットワークアクセススコープを作成します:

    aws ec2 create-network-insights-access-scope --match-paths "Source={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}" "Destination={ResourceStatement={ResourceTypes=["AWS::EC2::InternetGateway"]}}" --region us-east-2

    出力:

    { "NetworkInsightsAccessScope": { "NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e", "NetworkInsightsAccessScopeArn": "arn:aws:ec2:us-east-2:470889052923:network-insights-access-scope/nis-04cad3c4b3a1d5e3e", "CreatedDate": "2024-09-30T15:55:53.171000+00:00", "UpdatedDate": "2024-09-30T15:55:53.171000+00:00" }, "NetworkInsightsAccessScopeContent": { "NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e", "MatchPaths": [ { "Source": { "ResourceStatement": { "ResourceTypes": [ "AWS::EC2::InternetGateway" ] } } }, { "Destination": { "ResourceStatement": { "ResourceTypes": [ "AWS::EC2::InternetGateway" ] } } } ] } }
  2. スコープ分析を開始します:

    aws ec2 start-network-insights-access-scope-analysis --network-insights-access-scope-id nis-04cad3c4b3a1d5e3e --region us-east-2

    出力:

    { "NetworkInsightsAccessScopeAnalysis": { "NetworkInsightsAccessScopeAnalysisId": "nisa-0aa383a1938f94cd1", "NetworkInsightsAccessScopeAnalysisArn": "arn:aws:ec2:us-east-2:470889052923:network-insights-access-scope-analysis/nisa-0aa383a1938f94cd", "NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e", "Status": "running", "StartDate": "2024-09-30T15:56:59.109000+00:00", "AnalyzedEniCount": 0 } }
  3. 分析の結果を取得します:

    aws ec2 get-network-insights-access-scope-analysis-findings --network-insights-access-scope-analysis-id nisa-0aa383a1938f94cd1 --region us-east-2 --max-items 1

    出力:

    { "AnalysisFindings": [ { "NetworkInsightsAccessScopeAnalysisId": "nisa-0aa383a1938f94cd1", "NetworkInsightsAccessScopeId": "nis-04cad3c4b3a1d5e3e", "FindingId": "AnalysisFinding-1", "FindingComponents": [ { "SequenceNumber": 1, "Component": { "Id": "igw-04a5344b4e30486f1", "Arn": "arn:aws:ec2:us-east-2:470889052923:internet-gateway/igw-04a5344b4e30486f1", "Name": "VPC BPA Internet Gateway" }, "OutboundHeader": { "DestinationAddresses": [ "10.0.1.85/32" ] }, "InboundHeader": { "DestinationAddresses": [ "10.0.1.85/32" ], "DestinationPortRanges": [ { "From": 22, "To": 22 } ], "Protocol": "6", "SourceAddresses": [ "0.0.0.0/5", "100.0.0.0/10", "96.0.0.0/6" ], "SourcePortRanges": [ { "From": 0, "To": 65535 } ] }, "Vpc": { "Id": "vpc-0762547ec48b6888d", "Arn": "arn:aws:ec2:us-east-2:470889052923:vpc/vpc-0762547ec48b6888d", "Name": "VPC BPA" } }, { "SequenceNumber": 2, "AclRule": { "Cidr": "0.0.0.0/0", "Egress": false, "Protocol": "all", "RuleAction": "allow", "RuleNumber": 100 }, "Component": { "Id": "acl-06194fc3a4a03040b", "Arn": "arn:aws:ec2:us-east-2:470889052923:network-acl/acl-06194fc3a4a03040b" } }, { "SequenceNumber": 3, "Component": { "Id": "sg-093dde06415d03924", "Arn": "arn:aws:ec2:us-east-2:470889052923:security-group/sg-093dde06415d03924", "Name": "VPC BPA Instances Security Group" }, "SecurityGroupRule": { "Cidr": "0.0.0.0/0", "Direction": "ingress", "PortRange": { "From": 22, "To": 22 }, "Protocol": "tcp" } }, { "SequenceNumber": 4, "AttachedTo": { "Id": "i-058db34f9a0997895", "Arn": "arn:aws:ec2:us-east-2:470889052923:instance/i-058db34f9a0997895", "Name": "VPC BPA Instance A" }, "Component": { "Id": "eni-0fa23f2766f03b286", "Arn": "arn:aws:ec2:us-east-2:470889052923:network-interface/eni-0fa23f2766f03b286" }, "InboundHeader": { "DestinationAddresses": [ "10.0.1.85/32" ], "DestinationPortRanges": [ { "From": 22, "To": 22 } ], "Protocol": "6", "SourceAddresses": [ "0.0.0.0/5", "100.0.0.0/10", "96.0.0.0/6" ], "SourcePortRanges": [ { "From": 0, "To": 65535 } ] }, "Subnet": { "Id": "subnet-035d235a762eeed04", "Arn": "arn:aws:ec2:us-east-2:470889052923:subnet/subnet-035d235a762eeed04", "Name": "VPC BPA Public Subnet A" }, "Vpc": { "Id": "vpc-0762547ec48b6888d", "Arn": "arn:aws:ec2:us-east-2:470889052923:vpc/vpc-0762547ec48b6888d", "Name": "VPC BPA" } } ] } ], "AnalysisStatus": "succeeded", "NetworkInsightsAccessScopeAnalysisId": "nisa-0aa383a1938f94cd1", "NextToken": "eyJOZXh0VG9rZW4iOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==" }

    その結果、アカウント内のすべての VPC のインターネットゲートウェイとの間のトラフィックが表示されます。結果は「検出結果」として整理されます。"FindingId": "AnalysisFinding-1" は、これが分析の最初の結果であることを示します。複数の検出結果があり、それぞれが VPC BPA をオンにすることで影響を受けるトラフィックフローを示しています。最初の検出結果は、トラフィックがインターネットゲートウェイ ("SequenceNumber": 1) で開始され、NACL ("SequenceNumber": 2)、セキュリティグループ ("SequenceNumber": 3) の順に渡され、インスタンス ("SequenceNumber": 4) で終了したことを示しています。

  4. 検出結果を分析して、VPC 内のリソースに対する BPA の影響を理解します。

影響分析が完了しました。

シナリオ 1

このセクションでは、ベースラインを設定し、BPA を有効にする前に、すべてのインスタンスが到達可能になっているようにするため、すべてのインスタンスに接続してパブリック IP アドレスに対して ping を実行します。

VPC BPA がオンになっていない VPC の図

BPA が有効になっていない VPC を示す図。

1.1 インスタンスに接続する

VPC BPA をオフにした状態でインスタンスに接続し、問題なく接続できるようにするには、このセクションを完了します。この例のために CloudFormation を使用して作成されたすべてのインスタンスには、「VVPC BPA Instance A」のような名前が付けられています。

AWS Management Console
  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. インスタンス A の詳細を開きます。

  3. [EC2 Instance Connect] > [EC2 Instance Connect を使用して接続] オプションを使用して、インスタンス A に接続します。

  4. [接続]を選択します。インスタンスに正常に接続したら、www.amazon.com に対して ping を実行して、アウトバウンドリクエストをインターネットに送信できることを検証します。

  5. インスタンス A への接続に使用したのと同じ方法を使用してインスタンス B に接続し、ping を実行してアウトバウンドリクエストをインターネットに送信できるかどうかをテストします。

  6. [EC2 Instance Connect] > [EC2 Instance Connect エンドポイントを使用して接続] オプションを使用して、インスタンス C に接続します。インスタンス C と D はプライベートサブネットにあり、パブリック IP アドレスを持たないため、エンドポイントオプションを使用する必要があります。

  7. インスタンス C のために使用したのと同じ方法を使用してインスタンス D に接続し、ping を実行してアウトバウンドリクエストをインターネットに送信できるかどうかをテストします。

AWS CLI
  1. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス A に対して Ping を実行します:

    ping 18.225.8.244

    出力:

    Pinging 18.225.8.244 with 32 bytes of data: Reply from 18.225.8.244: bytes=32 time=51ms TTL=110 Reply from 18.225.8.244: bytes=32 time=61ms TTL=110

    ping は成功し、トラフィックはブロックされていません。

  2. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice

    出力:

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~_ ####_ Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ / / /m/' Last login: Fri Sep 27 18:27:57 2024 from 3.16.146.5 [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com PING www-amazon-com.customer.fastly.net (18.65.233.187) 56(84) bytes of data. 64 bytes from 18.65.233.187 (18.65.233.187): icmp_seq=15 ttl=58 time=2.06 ms 64 bytes from 18.65.233.187 (18.65.233.187): icmp_seq=16 ttl=58 time=2.26 ms

    ping は成功し、トラフィックはブロックされていません。

  3. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス B に対して Ping を実行します:

    ping 3.18.106.198

    出力:

    Pinging 3.18.106.198 with 32 bytes of data: Reply from 3.18.106.198: bytes=32 time=83ms TTL=110 Reply from 3.18.106.198: bytes=32 time=54ms TTL=110

    ping は成功し、トラフィックはブロックされていません。

  4. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-08552a0774b5c8f72 --region us-east-2 --connection-type eice

    出力:

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , # ~_ #### Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~.. _/ / / /m/' Last login: Fri Sep 27 18:12:27 2024 from 3.16.146.5 [ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data. 64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=249 time=1.55 ms 64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=249 time=1.67 ms

    ping は成功し、トラフィックはブロックされていません。

  5. インスタンス C に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2

    出力:

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , # ~_ #### Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~.. _/ / / /m/' Last login: Thu Sep 19 20:31:26 2024 from 10.0.2.86 [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data. 64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=248 time=1.75 ms 64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=248 time=1.97 ms 64 bytes from server-3-160-24-26.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=3 ttl=248 time=1.08 ms

    ping は成功し、トラフィックはブロックされていません。

  6. インスタンス D に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2

    出力:

    The authenticity of host '10.0.3.59 can't be established. ECDSA key fingerprint is SHA256:c4naBCqbC61/cExDyccEproNU+1HHSpMSzl2J6cOtIZA8g. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.0.3.59' (ECDSA) to the list of known hosts. A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , # ~_ #### Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~.. _/ _/ _/ _/m/' [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com PING www.amazon.com(2600:9000:25f3:ee00:7:49a5:5fd4:b121 (2600:9000:25f3:ee00:7:49a5:5fd4:b121)) 56 data bytes 64 bytes from 2600:9000:25f3:ee00:7:49a5:5fd4:b121 (2600:9000:25f3:ee00:7:49a5:5fd4:b121): icmp_seq=1 ttl=58 time=1.19 ms 64 bytes from 2600:9000:25f3:ee00:7:49a5:5fd4:b121 (2600:9000:25f3:ee00:7:49a5:5fd4:b121): icmp_seq=2 ttl=58 time=1.38 ms

    ping は成功し、トラフィックはブロックされていません。

シナリオ 2

このセクションでは、VPC BPA をオンにし、アカウントのインターネットゲートウェイとの間のトラフィックをブロックします。

VPC BPA の [双方向] モードがオンになっている図

BPA の双方向が有効になっている VPC を示す図。

2.1 VPC BPA ブロック双方向モードを有効にする

VPC BPA を有効にするには、このセクションを完了します。

AWS Management Console
  1. https://console.aws.amazon.com/vpc/ で Amazon VPC コンソールを開きます。

  2. 左のナビゲーションペインで、[設定] を選択します。

  3. [パブリックアクセスの設定を編集] を選択します:

  4. [ブロックパブリックアクセスをオンにする][双方向] を選択し、[変更を保存] を選択します。

  5. [ステータス][オン] に変わるまで待ちます。BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。

VPC BPA がオンになりました。

AWS CLI
  1. modify-vpc-block-public-access-options コマンドを使用して、VPC BPA をオンにします。

    aws ec2 --region us-east-2 modify-vpc-block-public-access-options --internet-gateway-block-mode block-bidirectional

    BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。

  2. VPC BPA のステータスを表示します。

    aws ec2 --region us-east-2 describe-vpc-block-public-access-options

2.2 インスタンスに接続する

インスタンスに接続するには、このセクションを完了します。

AWS Management Console
  1. シナリオ 1 で実行したように、インスタンス A とインスタンス B のパブリック IPv4 アドレスに対して Ping を実行します。トラフィックがブロックされます。

  2. シナリオ 1 で実行したように、EC2 Instance Connect を使用して各インスタンスに接続し、そこから www.amazon.com に対して ping を実行します。すべてのアウトバウンドトラフィックがブロックされます。

AWS CLI
  1. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス A に対して Ping を実行します:

    ping 18.225.8.244

    出力:

    Pinging 18.225.8.244 with 32 bytes of data: Request timed out.

    ping が失敗し、トラフィックがブロックされます。

  2. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice

    出力:

    The authenticity of host '10.0.1.85' can't be established. ECDSA key fingerprint is SHA256:3zo/gSss+HAZ+7eTyWlOB/Ke04IM+hadjsoLJeRTWBk. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.0.1.85' (ECDSA) to the list of known hosts. A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~_ ####_ Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ / / /m/' Last login: Fri Sep 27 14:16:53 2024 from 3.16.146.5 [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.

    ping が失敗し、トラフィックがブロックされます。

  3. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス B に対して Ping を実行します:

    ping 3.18.106.198

    出力:

    Pinging 3.18.106.198 with 32 bytes of data: Request timed out.

    ping が失敗し、トラフィックがブロックされます。

  4. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-08552a0774b5c8f72 --region us-east-2 --connection-type eice

    出力:

    The authenticity of host '10.0.2.98' can't be established. ECDSA key fingerprint is SHA256:0IjXKKyVlDthcCfI0IPIJMUiItAOLYKRNLGTYURnFXo. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.0.2.98' (ECDSA) to the list of known hosts. A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , # ~_ #### Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~.. _/ / / /m/' Last login: Fri Sep 27 14:18:16 2024 from 3.16.146.5 [ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.

    ping が失敗し、トラフィックがブロックされます。

  5. インスタンス C に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2

    出力:

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , # ~_ #### Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~.. _/ / / /m/' Last login: Tue Sep 24 15:17:56 2024 from 10.0.2.86 [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.

    ping が失敗し、トラフィックがブロックされます。

  6. インスタンス D に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2

    出力:

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , # ~_ #### Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~.. _/ _/ _/ _/m/' Last login: Fri Sep 27 16:42:01 2024 from 3.16.146.5 [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com PING www.amazon.com(2600:9000:25f3:8200:7:49a5:5fd4:b121 (2600:9000:25f3:8200:7:49a5:5fd4:b121)) 56 data bytes

    ping が失敗し、トラフィックがブロックされます。

2.3 オプション: Reachability Analyzer を使用して接続がブロックされていることを確認する

VPC Reachability Analyzer を使用して、VPC BPA の設定を含むネットワーク設定を踏まえて、特定のネットワークパスに到達できるかどうかを把握できます。この例では、以前に試行したのと同じネットワークパスを分析し、VPC BPA が接続に失敗する理由であることを確認します。

AWS Management Console
  1. https://console.aws.amazon.com/networkinsights/home#ReachabilityAnalyzer の Network Insights コンソールに移動します。

  2. [パスを作成および分析] をクリックします。

  3. [ソースタイプ] で、[インターネットゲートウェイ] を選択し、[ソース] ドロップダウンから [VPC BPA インターネットゲートウェイ] のタグが付けられたインターネットゲートウェイを選択します。

  4. [宛先タイプ] で、[インスタンス] を選択し、[宛先] ドロップダウンから [VPC BPA インスタンス A] のタグが付けられたインスタンスを選択します。

  5. [パスを作成および分析] をクリックします。

  6. 分析が完了するまで待ちます。数分かかる場合があります。

  7. 完了すると、[到達可能性ステータス][到達不可] となり、[パスの詳細]VPC_BLOCK_PUBLIC_ACCESS_ENABLED が原因であることが示されます。

AWS CLI
  1. [VPC BPA インターネットゲートウェイ] のタグが付けられたインターネットゲートウェイの ID と、[VPC BPA インスタンス A] のタグが付けられたインスタンスの ID を使用してネットワークパスを作成します。

    aws ec2 --region us-east-2 create-network-insights-path --source igw-id --destination instance-id --protocol TCP
  2. ネットワークパスで分析を開始します:

    aws ec2 --region us-east-2 start-network-insights-analysis --network-insights-path-id nip-id
  3. 分析の結果を取得します:

    aws ec2 --region us-east-2 describe-network-insights-analyses --network-insights-analysis-ids nia-id
  4. 到達可能性の欠如について、VPC_BLOCK_PUBLIC_ACCESS_ENABLEDExplanationCode であることを確認します。

シナリオ 3

このセクションでは、VPC BPA トラフィックの方向を変更し、NAT ゲートウェイまたはエグレスのみのインターネットゲートウェイを使用するトラフィックのみを許可します。

VPC BPA のイングレスのみのモードがオンになっている図

BPA のイングレスのみのモードが有効になっている VPC を示す図。

3.1 モードを「イングレスのみ」に変更する

モードを変更するには、このセクションを完了します。

AWS Management Console
  1. VPC コンソールでパブリックアクセスの設定を変更し、方向を [イングレスのみ] に変更します。

  2. 変更を保存し、ステータスが更新されるまで待ちます。BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。

AWS CLI
  1. VPC BPA モードを変更します:

    aws ec2 --region us-east-2 modify-vpc-block-public-access-options --internet-gateway-block-mode block-ingress

    BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。

  2. VPC BPA のステータスを表示します。

    aws ec2 --region us-east-2 describe-vpc-block-public-access-options

3.2 インスタンスに接続する

インスタンスに接続するには、このセクションを完了します。

AWS Management Console
  1. シナリオ 1 で実行したように、インスタンス A とインスタンス B のパブリック IPv4 アドレスに対して Ping を実行します。トラフィックがブロックされます。

  2. シナリオ 1 で実行したように、EC2 Instance Connect を使用してインスタンス A とインスタンス B に接続し、そこから www.amazon.com に対して ping を実行します。インスタンス A または B からインターネット上のパブリックサイトに対して ping を実行することはできず、トラフィックがブロックされます。

  3. シナリオ 1 で実行したように、EC2 Instance Connect を使用してインスタンス C とインスタンス D に接続し、そこから www.amazon.com に対して ping を実行します。インスタンス C または D からインターネット上のパブリックサイトに対して ping を実行でき、トラフィックが許可されます。

AWS CLI
  1. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス A に対して Ping を実行します:

    ping 18.225.8.244

    出力:

    Pinging 18.225.8.244 with 32 bytes of data: Request timed out.

    ping が失敗し、トラフィックがブロックされます。

  2. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice

    出力:

    The authenticity of host '10.0.1.85' can't be established. ECDSA key fingerprint is SHA256:3zo/gSss+HAZ+7eTyWlOB/Ke04IM+hadjsoLJeRTWBk. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.0.1.85' (ECDSA) to the list of known hosts. A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~_ ####_ Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ / / /m/' Last login: Fri Sep 27 14:16:53 2024 from 3.16.146.5 [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.

    ping が失敗し、トラフィックがブロックされます。

  3. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス B に対して Ping を実行します:

    ping 3.18.106.198

    出力:

    Pinging 3.18.106.198 with 32 bytes of data: Request timed out.

    ping が失敗し、トラフィックがブロックされます。

  4. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-08552a0774b5c8f72 --region us-east-2 --connection-type eice

    出力:

    The authenticity of host '10.0.2.98 ' can't be established. ECDSA key fingerprint is SHA256:0IjXKKyVlDthcCfI0IPIJMUiItAOLYKRNLGTYURnFXo. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.0.2.98' (ECDSA) to the list of known hosts. A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , # ~_ #### Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~.. _/ _/ / /m/' Last login: Fri Sep 27 14:18:16 2024 from 3.16.146.5 [ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.

    ping が失敗し、トラフィックがブロックされます。

  5. インスタンス C に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2 A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Tue Sep 24 15:28:09 2024 from 10.0.2.86 [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data. 64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=248 time=1.84 ms 64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=248 time=1.40 ms

    ping は成功し、トラフィックはブロックされていません。

  6. インスタンス D に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2 A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Fri Sep 27 16:48:38 2024 from 3.16.146.5 [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com PING www.amazon.com(2600:9000:25f3:5800:7:49a5:5fd4:b121 (2600:9000:25f3:5800:7:49a5:5fd4:b121)) 56 data bytes 64 bytes from 2600:9000:25f3:5800:7:49a5:5fd4:b121 (2600:9000:25f3:5800:7:49a5:5fd4:b121): icmp_seq=14 ttl=58 time=1.47 ms 64 bytes from 2600:9000:25f3:5800:7:49a5:5fd4:b121 (2600:9000:25f3:5800:7:49a5:5fd4:b121): icmp_seq=16 ttl=58 time=1.59 ms

    ping は成功し、トラフィックはブロックされていません。

シナリオ 4

このセクションでは、除外を作成し、VPC BPA から除外されていないサブネットとの間のトラフィックのみをブロックします。VPC BPA の除外は、アカウントの BPA モードから除外し、双方向またはエグレスのみのアクセスを許可する単一の VPC またはサブネットに適用できるモードです。アカウントで BPA が有効になっていない場合でも VPC とサブネットのために BPA の除外を作成して、VPC BPA がオンになっているときに除外に対するトラフィックの中断が発生しないようにできます。

この例では、サブネット A の除外を作成して、除外に対するトラフィックが VPC BPA によってどのように影響を受けるかを示します。

VPC BPA のイングレスのみのモードがオンになっており、[双方向] モードがオンになっているサブネット A の除外の図:

BPA がイングレスのみのモードであり、除外が設定されている VPC を示す図。

4.1 サブネット A の除外を作成する

除外を作成するには、このセクションを完了します。VPC BPA の除外は、アカウントの BPA モードから除外し、双方向またはエグレスのみのアクセスを許可する単一の VPC またはサブネットに適用できるモードです。アカウントで BPA が有効になっていない場合でも VPC とサブネットのために BPA の除外を作成して、VPC BPA がオンになっているときに除外に対するトラフィックの中断が発生しないようにできます。

AWS Management Console
  1. [ブロックパブリックアクセス] タブの [除外] で、[除外を作成] を選択します。

  2. [VPC BPA パブリックサブネット A] を選択し、許可の方向として [双方向] が選択されているようにして、[除外を作成] を選択します。

  3. [除外ステータス][アクティブ] に変わるまで待ちます。変更を確認するには、除外テーブルを更新する必要がある場合があります。

除外が作成されました。

AWS CLI
  1. 除外の許可の方向を変更します:

    aws ec2 --region us-east-2 create-vpc-block-public-access-exclusion --subnet-id subnet-id --internet-gateway-exclusion-mode allow-bidirectional
  2. 除外ステータスが更新されるまでに時間がかかる場合があります。除外のステータスを表示するには:

    aws ec2 --region us-east-2 describe-vpc-block-public-access-exclusions --exclusion-ids exclusion-id

4.2 インスタンスに接続する

インスタンスに接続するには、このセクションを完了します。

AWS Management Console
  1. インスタンス A のパブリック IPv4 アドレスに対して Ping を実行します。トラフィックが許可されます。

  2. インスタンス B のパブリック IPv4 アドレスに対して Ping を実行します。トラフィックがブロックされます。

  3. シナリオ 1 で実行したように、EC2 Instance Connect を使用してインスタンス A に接続し、www.amazon.com に対して ping を実行します。インスタンス A からインターネット上のパブリックサイトに対して ping を実行できます。トラフィックは許可されます。

  4. シナリオ 1 で実行したように、EC2 Instance Connect を使用してインスタンス B に接続し、そこから www.amazon.com に対して ping を実行します。インスタンス B からインターネット上のパブリックサイトに対して ping を実行することはできません。トラフィックがブロックされます。

  5. シナリオ 1 で実行したように、EC2 Instance Connect を使用してインスタンス C とインスタンス D に接続し、そこから www.amazon.com に対して ping を実行します。インスタンス C または D からインターネット上のパブリックサイトに対して ping を実行できます。トラフィックは許可されます。

AWS CLI
  1. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス A に対して Ping を実行します:

    ping 18.225.8.244

    出力:

    Pinging 18.225.8.244 with 32 bytes of data: Reply from 18.225.8.244: bytes=32 time=51ms TTL=110 Reply from 18.225.8.244: bytes=32 time=61ms TTL=110

    ping は成功し、トラフィックはブロックされていません。

  2. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice

    出力:

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~_ ####_ Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ / / /m/' Last login: Fri Sep 27 17:58:12 2024 from 3.16.146.5 [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data. 64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=249 time=1.03 ms 64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=249 time=1.72 ms

    ping は成功し、トラフィックはブロックされていません。

  3. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス B に対して Ping を実行します:

    ping 3.18.106.198

    出力:

    Pinging 3.18.106.198 with 32 bytes of data: Request timed out.

    ping が失敗し、トラフィックがブロックされます。

  4. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-08552a0774b5c8f72 --region us-east-2 --connection-type eice

    出力:

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , # ~_ #### Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~.. _/ _/ / /m/' Last login: Fri Sep 27 18:12:03 2024 from 3.16.146.5 [ec2-user@ip-10-0-2-98 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.

    ping が失敗し、トラフィックがブロックされます。

  5. インスタンス C に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2

    出力

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , # ~_ #### Amazon Linux 2023 ~~ _#####\ ~~ ###| ~~ #/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~.. _/ _/ / /m/' Last login: Tue Sep 24 15:28:09 2024 from 10.0.2.86 [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data. 64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=1 ttl=248 time=1.84 ms 64 bytes from server-3-160-24-126.cmh68.r.cloudfront.net (18.65.233.187): icmp_seq=2 ttl=248 time=1.40 ms

    ping は成功し、トラフィックはブロックされていません。

  6. インスタンス D に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2

    出力

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Fri Sep 27 18:00:52 2024 from 3.16.146.5 [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com PING www.amazon.com(g2600-141f-4000-059a-0000-0000-0000-3bd4.deploy.static.akamaitechnologies.com (2600:141f:4000:59a::3bd4)) 56 data bytes 64 bytes from g2600-141f-4000-059a-0000-0000-0000-3bd4.deploy.static.akamaitechnologies.com (2600:141f:4000:59a::3bd4): icmp_seq=1 ttl=48 time=15.9 ms 64 bytes from g2600-141f-4000-059a-0000-0000-0000-3bd4.deploy.static.akamaitechnologies.com (2600:141f:4000:59a::3bd4): icmp_seq=2 ttl=48 time=15.8 ms

    ping は成功し、トラフィックはブロックされていません。

4.3 オプション: Reachability Analyzer との接続を検証する

シナリオ 2 で Reachability Analyzer において作成したのと同じネットワークパスを使用して、新しい分析を実行し、パブリックサブネット A についての除外が作成されたことでパスが到達可能になったことを確認できるようになりました。

Reachability Analyzer を利用できるリージョンについては、「Reachability Analyzer ガイド」の「Considerations」を参照してください。

AWS Management Console
  1. Network Insights コンソールで前に作成したネットワークパスから、[分析を再実行] をクリックします。

  2. 分析が完了するまで待ちます。これには数分間かかる場合があります。

  3. パスが [到達可能] になっていることを確認します。

AWS CLI
  1. 前に作成したネットワークパス ID を使用して、新しい分析を開始します:

    aws ec2 --region us-east-2 start-network-insights-analysis --network-insights-path-id nip-id
  2. 分析の結果を取得します:

    aws ec2 --region us-east-2 describe-network-insights-analyses --network-insights-analysis-ids nia-id
  3. VPC_BLOCK_PUBLIC_ACCESS_ENABLED 説明コードが存在しないことを確認します。

シナリオ 5

このセクションでは、除外における許可トラフィックの方向を変更して、VPC BPA がどのような影響を受けるのかを確認します。除外のエグレスのみのモードは、イングレスのみをブロックするモードで VPC BPA が有効になっている状態ではあまり意味がないことに留意してください。これはシナリオ 3 と同じ動作です。

VPC BPA のイングレスのみのモードがオンになっており、エグレスのみのモードがオンになっているサブネット A の除外の図:

BPA がイングレスのみのモードであり、NAT ゲートウェイ経由のアウトバウンドトラフィックを許可する VPC を示す図。

5.1 除外の許可の方向をエグレスのみに変更する

除外の許可の方向を変更するには、このセクションを完了します。

AWS Management Console
  1. シナリオ 4 で作成した除外を編集し、許可の方向を [エグレスのみ] に変更します。

  2. [Save changes] (変更の保存) をクリックします。

  3. [除外] ステータスが [アクティブ] に変わるまで待ちます。BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。変更を確認するには、除外テーブルを更新する必要がある場合があります。

AWS CLI
  1. 除外の許可の方向を変更します:

    aws ec2 --region us-east-2 modify-vpc-block-public-access-exclusion --exclusion-id exclusion-id --internet-gateway-exclusion-mode allow-egress

    BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。

  2. 除外ステータスが更新されるまでに時間がかかる場合があります。除外のステータスを表示するには:

    aws ec2 --region us-east-2 describe-vpc-block-public-access-exclusion

5.2 インスタンスに接続する

インスタンスに接続するには、このセクションを完了します。

AWS Management Console
  1. インスタンス A およびインスタンス B のパブリック IPv4 アドレスに対して Ping を実行します。トラフィックがブロックされます。

  2. シナリオ 1 で実行したように、EC2 Instance Connect を使用してインスタンス A およびインスタンス B に接続し、www.amazon.com に対して ping を実行します。インスタンス A またはインスタンス B からインターネット上のパブリックサイトに対して ping を実行することはできません。トラフィックがブロックされます。

  3. シナリオ 1 で実行したように、EC2 Instance Connect を使用してインスタンス C とインスタンス D に接続し、そこから www.amazon.com に対して ping を実行します。インスタンス C または D からインターネット上のパブリックサイトに対して ping を実行できます。トラフィックは許可されます。

AWS CLI
  1. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス A に対して Ping を実行します:

    ping 18.225.8.244

    出力:

    Pinging 18.225.8.244 with 32 bytes of data: Request timed out.

    ping が失敗し、トラフィックがブロックされます。

  2. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice

    出力:

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Fri Sep 27 18:09:55 2024 from 3.16.146.5 [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.

    ping が失敗し、トラフィックがブロックされます。

  3. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス B に対して Ping を実行します:

    ping 3.18.106.198

    出力:

    Pinging 3.18.106.198 with 32 bytes of data: Request timed out.

    ping が失敗し、トラフィックがブロックされます。

  4. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice

    出力:

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Fri Sep 27 18:09:55 2024 from 3.16.146.5 [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.

    ping が失敗し、トラフィックがブロックされます。

  5. インスタンス C に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2 A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Fri Sep 27 18:00:31 2024 from 3.16.146.5 [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com PING www.amazon.com(2600:9000:25f3:a600:7:49a5:5fd4:b121 (2600:9000:25f3:a600:7:49a5:5fd4:b121)) 56 data bytes 64 bytes from 2600:9000:25f3:a600:7:49a5:5fd4:b121 (2600:9000:25f3:a600:7:49a5:5fd4:b121): icmp_seq=1 ttl=58 time=1.51 ms 64 bytes from 2600:9000:25f3:a600:7:49a5:5fd4:b121 (2600:9000:25f3:a600:7:49a5:5fd4:b121): icmp_seq=2 ttl=58 time=1.49 ms

    ping は成功し、トラフィックはブロックされていません。

  6. インスタンス D に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2 A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Fri Sep 27 18:13:55 2024 from 3.16.146.5 [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com PING www.amazon.com(2606:2cc0::374 (2606:2cc0::374)) 56 data bytes 64 bytes from 2606:2cc0::374 (2606:2cc0::374): icmp_seq=1 ttl=58 time=1.21 ms 64 bytes from 2606:2cc0::374 (2606:2cc0::374): icmp_seq=2 ttl=58 time=1.51 ms

    ping は成功し、トラフィックはブロックされていません。

シナリオ 6

このセクションでは、トラフィックにどのような影響が及ぶのかを確認するために、VPC BPA のブロックの方向を変更します。このシナリオでは、双方向モードで有効になっている VPC BPA は、シナリオ 1 と同様にすべてのトラフィックをブロックします。除外が NAT ゲートウェイまたはエグレスのみのインターネットゲートウェイにアクセスできる場合を除き、トラフィックはブロックされます。

VPC BPA の [双方向] モードがオンになっており、[エグレスのみ] のモードがオンになっているサブネット A の除外の図:

BPA がイングレスのみのモードであり、NAT ゲートウェイ経由のアウトバウンドトラフィックを許可する VPC を示す図

6.1 VPC BPA を双方向モードに変更する

BPA のモードを変更するには、このセクションを完了します。

AWS Management Console
  1. [パブリックアクセスの設定を編集] を選択します:

  2. ブロックの方向を [双方向] に変更し、[変更を保存] を選択します。

  3. [ステータス][オン] に変わるまで待ちます。BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。

AWS CLI
  1. VPC BPA ブロックの方向を変更します:

    aws ec2 --region us-east-2 modify-vpc-block-public-access-options --internet-gateway-block-mode block-bidirectional

    BPA の設定が有効になり、ステータスが更新されるまでに数分かかる場合があります。

  2. VPC BPA のステータスを表示します。

    aws ec2 --region us-east-2 describe-vpc-block-public-access-options

6.2 インスタンスに接続する

インスタンスに接続するには、このセクションを完了します。

AWS Management Console
  1. インスタンス A およびインスタンス B のパブリック IPv4 アドレスに対して Ping を実行します。トラフィックがブロックされます。

  2. シナリオ 1 で実行したように、EC2 Instance Connect を使用してインスタンス A およびインスタンス B に接続し、www.amazon.com に対して ping を実行します。インスタンス A またはインスタンス B からインターネット上のパブリックサイトに対して ping を実行することはできません。トラフィックがブロックされます。

  3. シナリオ 1 で実行したように、EC2 Instance Connect を使用してインスタンス C とインスタンス D に接続し、そこから www.amazon.com に対して ping を実行します。インスタンス C またはインスタンス D からインターネット上のパブリックサイトに対して ping を実行することはできません。トラフィックがブロックされます。

AWS CLI
  1. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス A に対して Ping を実行します:

    ping 18.225.8.244

    出力:

    Pinging 18.225.8.244 with 32 bytes of data: Request timed out.

    ping が失敗し、トラフィックがブロックされます。

  2. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice

    出力:

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Fri Sep 27 18:17:44 2024 from 3.16.146.5 [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.

    ping が失敗し、トラフィックがブロックされます。

  3. インバウンドトラフィックをチェックするために、パブリック IPv4 アドレスを使用してインスタンス A に対して Ping を実行します:

    ping 3.18.106.198

    出力:

    Pinging 3.18.106.198 with 32 bytes of data: Request timed out.

    ping が失敗し、トラフィックがブロックされます。

  4. プライベート IPv4 アドレスを使用して、アウトバウンドトラフィックに接続してチェックします。

    aws ec2-instance-connect ssh --instance-id i-058db34f9a0997895 --region us-east-2 --connection-type eice

    出力:

    A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Fri Sep 27 18:09:55 2024 from 3.16.146.5 [ec2-user@ip-10-0-1-85 ~]$ ping www.amazon.com PING d3ag4hukkh62yn.cloudfront.net (18.65.233.187) 56(84) bytes of data.

    ping が失敗し、トラフィックがブロックされます。

  5. インスタンス C に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-04eca55f2a482b2c4 --region us-east-2 A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Fri Sep 27 18:19:45 2024 from 3.16.146.5 [ec2-user@ip-10-0-3-180 ~]$ ping www.amazon.com PING www.amazon.com(2600:9000:25f3:6200:7:49a5:5fd4:b121 (2600:9000:25f3:6200:7:49a5:5fd4:b121)) 56 data bytes

    ping が失敗し、トラフィックがブロックされます。

  6. インスタンス D に接続します。ping を実行するためのパブリック IP アドレスがないので、EC2 Instance Connect を使用して接続してから、インスタンスからパブリック IP に対して ping を実行してアウトバウンドトラフィックをチェックします:

    aws ec2-instance-connect ssh --instance-id i-05f9e6a9cfac1dba0 --region us-east-2 A newer release of "Amazon Linux" is available. Version 2023.5.20240916: Run "/usr/bin/dnf check-release-update" for full release and version update info , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Fri Sep 27 18:20:58 2024 from 3.16.146.5 [ec2-user@ip-10-0-3-59 ~]$ ping www.amazon.com PING www.amazon.com(2600:9000:25f3:b400:7:49a5:5fd4:b121 (2600:9000:25f3:b400:7:49a5:5fd4:b121)) 56 data bytes

    ping が失敗し、トラフィックがブロックされます。

クリーンアップ

このセクションでは、この高度な例のために作成したすべてのリソースを削除します。アカウントで作成されたリソースについて余分な追加料金が発生しないように、リソースをクリーンアップすることが重要です。

CloudFormation リソースを削除する

AWS CloudFormation テンプレートを使用して作成したリソースを削除するには、このセクションを完了します。

AWS Management Console
  1. https://console.aws.amazon.com/cloudformation/ で AWS CloudFormation コンソールを開きます。

  2. VPC BPA スタックを選択します。

  3. [削除] を選択します。

  4. スタックの削除を開始したら、[イベント] タブで進行状況を表示し、スタックが削除されていることを確認します。スタックを完全に削除するには、そのスタックを強制削除する必要がある場合があります。

AWS CLI
  1. CloudFormation スタックを削除します。スタックを完全に削除するには、そのスタックを強制削除する必要がある場合があります。

    aws cloudformation delete-stack --stack-name VPC-BPA-stack --region us-east-2
  2. 進行状況を表示し、スタックが削除されていることを確認します。

    aws cloudformation describe-stack-events --stack-name VPC-BPA-stack --region us-east-2

AWS CloudTrail を使用して除外の削除を追跡する

AWS CloudTrail を使用して除外の削除を追跡するには、このセクションを完了します。CloudTrail エントリは、除外を削除すると表示されます。

AWS Management Console

https://console.aws.amazon.com/cloudtrailv2/ で AWS CloudTrail コンソールにおいて [リソースタイプ] > AWS::EC2::VPCBlockPublicAccessExclusion を検索すると、CloudTrail Event の履歴で、削除された除外を表示できます。

AWS CLI

lookup-events コマンドを使用して、除外の削除に関連するイベントを表示できます:

aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::EC2::VPCBlockPublicAccessExclusion

高度な例が完了しました。