封鎖對 VPCs 和子網路的公開存取 - Amazon Virtual Private Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

封鎖對 VPCs 和子網路的公開存取

VPC Block Public Access (BPA) 是一種集中式安全功能,可讓您在整個帳戶中以授權方式防止公開網際網路存取 VPC 資源 AWS ,確保符合安全要求,同時為特定例外狀況和稽核功能提供彈性。

VPC BPA具有下列模式:

  • 雙向:此區域中往返網際網路閘道和輸出限定網際網路閘道 (排除的 VPCs 和子網路除外) 的所有流量都會遭到封鎖。

  • 僅限輸入:此區域中 VPCs 的所有網際網路流量 (排除的 VPCs 或子網路除外) 都會遭到封鎖。僅允許進出 NAT 閘道和輸出限定網際網路閘道的流量,因為這些閘道僅允許建立傳出連線。

您也可以針對您不想封鎖的流量,為此功能建立「排除」。排除是可套用至單一 VPC 或子網路的模式,該模式會將其從帳戶的 BPA 模式中排除,並允許雙向或僅限輸出的存取。

排除項目可以有下列其中一種模式:

  • 雙向:允許進出排除 VPCs 和子網路的所有網際網路流量。

  • 僅限輸出:允許來自排除 VPCs 和子網路的傳出網際網路流量。已封鎖對排除 VPCs 和子網路的傳入網際網路流量。這僅適用於將 BPA 設定為雙向時。

BPA基本概念

本節涵蓋有關 VPC 的重要詳細資訊BPA,包括哪些服務支援它,以及您可以如何使用它。

區域可用性

VPC BPA 適用於所有商業AWS 區域,包括 GovCloud 和中國區域。

在本指南中,您還可以找到有關將 Network Access Analyzer 和 Reachability Analyzer 與 VPC 搭配使用的資訊BPA。請注意,並非所有商業區域都提供 Network Access Analyzer 和 Reachability Analyzer。如需有關 Network Access Analyzer 和 Reachability Analyzer 區域可用性的資訊,請參閱 Network Access Analyzer 指南中的限制Reachability Analyzer 指南中的考量

AWS 服務影響和支援

下列資源和服務支援 VPC BPA,而這些服務和資源的流量受到 VPC 的影響BPA:

  • 網際網路閘道:會封鎖所有傳入和傳出流量。

  • 僅限輸出網際網路閘道:封鎖所有傳出流量。僅限輸出的網際網路閘道不允許傳入流量。

  • NAT 閘道:會封鎖所有傳入和傳出流量。NAT 閘道需要網際網路閘道才能進行網際網路連線。

  • 面向網際網路的網路Load Balancer:會封鎖所有傳入和傳出流量。面向網際網路的 Network Load Balancer 需要網際網路閘道才能進行網際網路連線。

  • 面向網際網路的 Application Load Balancer:會封鎖所有傳入和傳出流量。面向網際網路的 Application Load Balancer 需要網際網路閘道才能進行網際網路連線。

  • AWS 全域加速器:封鎖 VPCs 的傳入流量。

與私有連線相關的流量,例如下列服務和資源的流量,不會受到 VPC 封鎖或影響BPA:

  • AWS Client VPN

  • Amazon CloudFront VPC來源

  • AWS CloudWAN

  • AWS Outposts 本機閘道

  • AWS Site-to-Site VPN

  • Transit Gateway

  • AWS Verified Access

  • AWS Wavelength 電信業者閘道

重要

即使在開啟 BPA 時,也允許從 VPC 中的資源私下傳送到 VPC 中執行的其他服務,例如 EC2 DNS 解析程式,因為它不會通過 VPC 中的網際網路閘道。這些服務可能會代表您向 VPC 外部的資源提出請求,例如為了解決 DNS 查詢,如果未透過其他安全控制緩解,可能會公開 VPC 中資源活動的相關資訊。

BPA限制

在不允許使用 BPA VPC 閘道和輸出限定網際網路閘道的 Local Zones (LZs) 中,不支援僅限 NAT 輸入模式。

BPA 使用 VPA 政策控制對 IAM 的存取

如需允許/拒絕存取 IAM BPA功能的 VPC 政策範例,請參閱 封鎖對 VPCs 和子網路的公開存取

為您的帳戶啟用 BPA 雙向模式

VPC BPA 雙向模式會封鎖此區域中往返網際網路閘道和輸出限定網際網路閘道的所有流量 (排除的 VPCs 和子網路除外)。如需排除項目的詳細資訊,請參閱 建立和刪除排除項目

重要

強烈建議您在BPA生產帳戶中啟用 VPC 之前,先徹底檢閱需要網際網路存取的工作負載。

注意
  • 若要在帳戶中的 VPC 和子網路上啟用 VPCs BPA,您必須擁有 VPCs 和子網路。

  • 如果您目前與其他帳戶共用 VPC 子網路,子網路擁有者強制執行的 BPA VPC BPA 模式也適用於參與者流量,但參與者無法控制影響共用子網路的 VPC 設定。

AWS Management Console
  1. 在 開啟 Amazon VPC 主控台https://console.aws.amazon.com/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 模式變更為僅限輸入

僅限 BPAVPC 輸入模式會封鎖此區域中 VPCs 的所有網際網路流量 (不包括 VPCs 或子網路)。僅允許進出 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 排除是可套用至單一 VPC 或子網路的模式,該模式會將其從帳戶的 BPA 模式排除,並允許雙向或僅輸出存取。即使 帳戶未啟用 BPA,您也可以為 VPCs 和子網路建立 BPA BPA排除項目,以確保開啟 VPC 時,排除項目不會發生流量中斷。

您最多可以建立 50 個排除項目。如需有關請求提高限制的資訊,請參閱 中的每個帳戶的 BPAVPC 排除項目Amazon VPC 配額

AWS Management Console
  1. 封鎖公有存取索引標籤的排除項目下,選擇建立排除項目。

  2. 選擇 VPC 或子網路,選擇區塊方向:

    • 雙向:允許所有往返排除 VPCs 和子網路的網際網路流量。

    • 僅限輸出:允許來自排除 VPCs 和子網路的傳出網際網路流量。封鎖對排除 VPCs 和子網路的傳入網際網路流量。此設定適用於將 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 的影響的資訊,以及如何監控流量是否在開啟後遭到封鎖。

使用 評估 BPA 的影響 網路存取分析器

在本節中,您將使用 網路存取分析器 檢視帳戶中使用網際網路閘道的資源,然後再啟用 VPC BPA和封鎖存取。使用此分析來了解BPA在帳戶中開啟 VPC 並封鎖流量的影響。

注意
  • Network Access Analyzer 不支援 IPv6;因此您將無法使用它來檢視 BPA 對輸出限定網際網路閘道傳出 IPv6 流量的潛在影響。

  • 您需要為使用 Network Access Analyzer 執行的分析付費。如需詳細資訊,請參閱 網路存取分析器 指南中的定價

  • 如需有關 Network Access Analyzer 區域可用性的資訊,請參閱 Network Access Analyzer 指南中的限制

AWS Management Console
  1. 在 開啟 AWS Network Insights 主控台https://console.aws.amazon.com/networkinsights/

  2. 選擇 Network Access Analyzer

  3. 選擇建立網路存取範圍

  4. 選擇識別網際網路閘道的存取,然後選擇下一步

  5. 範本已設定為分析您帳戶中網際網路閘道的往返流量。您可以在來源目的地下檢視此項目

  6. 選擇 Next (下一步)

  7. 選擇建立網路存取範圍

  8. 選擇您剛建立的範圍,然後選擇分析

  9. 等待分析完成。

  10. 檢視分析的調查結果。調查結果下的每一列會顯示一個網路路徑,封包可以在網路中往返您帳戶中的網際網路閘道。在此情況下,如果您開啟 VPC BPA且這些調查結果中出現的任何 VPCs 和/或子網路都未設定為 BPA 排除,則對這些 VPCs 和子網路的流量將受到限制。

  11. 分析每個調查結果,以了解 BPA 對 VPCs 資源的影響。

影響分析已完成。

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

    結果會顯示您帳戶中所有 VPCs 中往返網際網路閘道的流量。結果會組織為「尋找」。"FindingId": "AnalysisFinding-1" 表示這是分析中的第一個調查結果。請注意,有多個調查結果,每個調查結果都會指出開啟 VPC 將影響的流量流程BPA。第一項調查結果會顯示從網際網路閘道 ("SequenceNumber":1) 開始的流量,傳遞至 NACL ("SequenceNumber":2) 至安全群組 ("SequenceNumber":3),並在執行個體 ("SequenceNumber":4) 結束。

  4. 分析調查結果,以了解 BPA 對 VPCs 資源的影響。

影響分析已完成。

使用流程日誌監控 BPA 影響

VPC Flow Logs 是一種功能,可讓您擷取往返 VPC 中彈性網路介面的 IP 流量相關資訊。您可以使用此功能來監控 VPC BPA封鎖到達執行個體網路介面的流量。

使用 中的步驟為您的 VPC 建立流程日誌使用流量日誌工作

當您建立流程日誌時,請務必使用包含 欄位 的自訂格式reject-reason

當您檢視流程日誌時,如果流量因 ENI 而被拒絕BPA,您會在流程日誌項目BPA中看到 reject-reason 的 。

除了 VPC 流程日誌的標準限制之外,請注意下列 VPC 特有的限制BPA:

  • VPC BPA 的流程日誌不包含略過的記錄

  • bytes 即使您在流程日誌中包含 bytes 欄位,VPC BPA 的流程日誌也不會包含 。

使用 CloudTrail 追蹤排除刪除

本節說明如何使用 AWS CloudTrail 來監控和追蹤 VPC BPA項目的刪除。

AWS Management Console

您可以在 主控台中查詢資源類型 >, AWS CloudTrail 以檢視 CloudTrail 事件歷史記錄AWS::EC2::VPCBlockPublicAccessExclusion中任何已刪除的排除項目https://console.aws.amazon.com/cloudtrailv2/

AWS CLI

您可以使用 lookup-events命令來檢視與刪除排除項目相關的事件:

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

使用 Reachability Analyzer 確認已封鎖連線

VPC Reachability Analyzer 可用來評估是否可以根據您的網路組態達到特定網路路徑,包括 VPC BPA。

如需可連線性分析工具區域可用性的相關資訊,請參閱可連線性分析工具指南中的考量事項。

AWS Management Console
  1. 在 開啟 Network Insights 主控台https://console.aws.amazon.com/networkinsights/home#ReachabilityAnalyzer

  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_ENABLED是 ,ExplanationCode因為 無法連線。

進階範例

本節包含進階範例,可協助您了解 VPC Block Public Access 功能在不同案例的運作方式。每個案例都是在案例之前建立的,因此依序完成步驟很重要。

重要

請勿在生產帳戶中瀏覽此範例。強烈建議您在BPA生產帳戶中啟用 VPC 之前,先徹底檢閱需要網際網路存取的工作負載。

注意

若要完全了解 BPA VPC 功能,您需要帳戶中的特定資源。在本節中,我們提供範本,您可以使用該 AWS CloudFormation 範本來佈建您需要的資源,以充分了解此功能的運作方式。您使用 CloudFormation 範本佈建的資源,以及您使用 Network Access Analyzer 和 Reachability Analyzer 執行的分析,會有一些相關的成本。如果您使用本節中的範本,請務必在完成此範例時完成清除步驟。

Deploy CloudFormation 範本

若要示範此功能的運作方式,您需要 VPC、子網路、執行個體和其他資源。為了更輕鬆地完成此示範,我們在下方提供了範本,您可以使用該 AWS CloudFormation 範本快速分割此示範中案例所需的資源。

注意

您在本區段中以 CloudFormation 範本建立的資源有相關聯的成本,例如 NAT 閘道和公有 IPv4 地址的成本。為了避免成本過高,請務必完成清除步驟,以移除為本範例建立的所有資源。

範本會在您的帳戶中建立下列資源:

  • 出口限定網際網路閘道

  • 網際網路閘道

  • NAT 閘道

  • 兩個公有子網路

  • 一個私有子網路

  • 具有公有和私有 EC2 地址的兩個 IPv4 執行個體

  • 一個具有 EC2 IPv6地址和私有 Word 地址的 IPv4 執行個體

  • 一個僅具有私有 EC2 地址的 IPv4 執行個體

  • 允許 SSH 和 ICMP 傳入流量的安全群組,以及允許 ALL 傳出流量

  • VPC 流程日誌

  • 子網路 B 中的一個 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. 在 開啟 AWS CloudFormation 主控台https://console.aws.amazon.com/cloudformation/

  2. 選擇建立堆疊並上傳 .yaml 範本檔案。

  3. 完成啟動範本的步驟。您需要輸入映像 ID執行個體類型 (例如 t2.micro)。您還需要允許 CloudFormation 為您建立 IAM 角色,以建立流程日誌和登入許可 Amazon CloudWatch。

  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

BPA 使用 Network Access Analyzer 檢視 VPC 的影響

在本節中,您將使用 Network Access Analyzer 檢視帳戶中使用網際網路閘道的資源。使用此分析來了解BPA在帳戶中開啟 VPC 並封鎖流量的影響。

如需有關 Network Access Analyzer 區域可用性的資訊,請參閱 Network Access Analyzer 指南中的限制

AWS Management Console
  1. 在 開啟 AWS Network Insights 主控台https://console.aws.amazon.com/networkinsights/

  2. 選擇 Network Access Analyzer

  3. 選擇建立網路存取範圍

  4. 選擇識別網際網路閘道的存取,然後選擇下一步

  5. 範本已設定為分析您帳戶中網際網路閘道的往返流量。您可以在來源目的地下檢視此項目

  6. 選擇 Next (下一步)

  7. 選擇建立網路存取範圍

  8. 選擇您剛建立的範圍,然後選擇分析

  9. 等待分析完成。

  10. 檢視分析的調查結果。調查結果下的每一列會顯示一個網路路徑,封包可以在網路中進出您帳戶中的網際網路閘道。在此情況下,如果您開啟 VPC BPA且這些調查結果中出現的任何 VPCs 和/或子網路都未設定為 BPA 排除,則對這些 VPCs 和子網路的流量將受到限制。

  11. 分析每個調查結果,以了解 BPA 對 VPCs 資源的影響。

影響分析已完成。

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==" }

    結果會顯示您帳戶中所有 VPCs 中往返網際網路閘道的流量。結果會組織為「尋找」。"FindingId": "AnalysisFinding-1" 表示這是分析中的第一個調查結果。請注意,有多個調查結果,每個調查結果都會指出開啟 VPC 將影響的流量流程BPA。第一項調查結果會顯示從網際網路閘道 ("SequenceNumber":1) 開始的流量,傳遞至 NACL ("SequenceNumber":2) 至安全群組 ("SequenceNumber":3),並在執行個體 ("SequenceNumber":4) 結束。

  4. 分析調查結果,以了解 BPA 對 VPCs 資源的影響。

影響分析已完成。

案例 1

在本節中,若要設定基準,並確保在啟用 BPA 之前,您可以連線所有執行個體,並 ping 公有 IP 地址。

未開啟 VPC 的 BPA VPC 圖表:

顯示未啟用 VPC 的 BPA 圖表。

1.1 連線至執行個體

完成本節,在 VPC BPA 關閉的情況下連線至執行個體,以確保您可以順利連線。此範例使用 CloudFormation 建立的所有執行個體名稱為「VPC BPA執行個體 A」。

AWS Management Console
  1. 在 開啟 Amazon EC2 主控台https://console.aws.amazon.com/ec2/

  2. 開啟執行個體 A 詳細資訊。

  3. 使用 EC2 Instance Connect > Connect 使用 EC2 Instance Connect 選項連線至執行個體 A。

  4. 選擇連線。成功連線至執行個體後,請 ping www.amazon.com 以確認您可以將傳出請求傳送至網際網路。

  5. 使用您用來連線至執行個體 A 的相同方法連線至執行個體 B,並測試您可以 ping 將傳出請求傳送至網際網路。

  6. 使用 EC2 Instance Connect > Connect with EC2 Instance Connect Endpoint 選項連線至執行個體 C。您必須使用端點選項,因為執行個體 C 和 D 位於私有子網路中,而且沒有公有 IP 地址:

  7. 使用與執行個體 C 相同的方法來連線至執行個體 D,並測試您可以 ping 將傳出請求傳送至網際網路。

AWS CLI
  1. Ping 執行個體 A 使用公有 IPv4 地址檢查傳入流量:

    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. Ping 執行個體 B 使用公有 IPv4 地址檢查傳入流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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 雙向模式圖表:

顯示啟用 VPC 雙向的 BPA 圖表。

2.1 啟用 VPC BPA區塊雙向模式

完成本節以啟用 VPC BPA。

AWS Management Console
  1. 在 開啟 Amazon VPC 主控台https://console.aws.amazon.com/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 中所執行的 Ping 執行個體 A 和執行個體 B 的公有 IPv4 地址。請注意,流量遭到封鎖。

  2. 使用 EC2 執行個體連線至每個執行個體,就像您在案例 1 中所執行的一樣,並從中 ping www.amazon.com。請注意,所有傳出流量都會遭到封鎖。

AWS CLI
  1. Ping 執行個體 A 使用公有 IPv4 地址檢查傳入流量:

    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. Ping 執行個體 B 使用公有 IPv4 地址檢查傳入流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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. 前往 Network Insights 主控台,網址為 https://console.aws.amazon.com/networkinsights/home#ReachabilityAnalyzer

  2. 按一下建立並分析路徑

  3. 針對來源類型,選擇網際網路閘道,然後從來源下拉式清單中選取已標記 VPC BPA 網際網路閘道的網際網路閘道。

  4. 針對目的地類型,選擇執行個體,然後從目的地下拉式清單中選取以 VPC BPA A 標記的執行個體

  5. 按一下建立並分析路徑

  6. 等待分析完成。可能需要幾分鐘的時間。

  7. 完成後,您應該會看到連線能力狀態無法連線,且路徑詳細資訊顯示 VPC_BLOCK_PUBLIC_ACCESS_ENABLED 是原因。

AWS CLI
  1. 使用標記為 VPC BPA網際網路閘道 ID 和標記為 BPA 執行個體 A 的執行個體 ID VPC 建立網路路徑:

    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_ENABLED是 ,ExplanationCode因為 無法連線。

案例 3

在本節中,您將變更 VPC BPA流量方向,並只允許使用 NAT 閘道或輸出限定網際網路閘道的流量。

開啟的VPC單BPA輸入專用模式圖表:

顯示已啟用 VPC 輸入限定的 BPA 圖表。

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 中所執行的 Ping 執行個體 A 和執行個體 B 的公有 IPv4 地址。請注意,流量遭到封鎖。

  2. 使用 EC2 執行個體連線連線至執行個體 A 和 B,如同您在案例 1 中所做的,並從中 ping www.amazon.com。請注意,您無法從執行個體 A 或 B ping 網際網路上的公有網站,且流量會遭到封鎖。

  3. 使用 EC2 執行個體連線至執行個體 C 和 D,就像您在案例 1 中所做的一樣,並從中 ping www.amazon.com。請注意,您可以從執行個體 C 或 D 對網際網路上的公有網站進行 ping,並允許流量。

AWS CLI
  1. Ping 執行個體 A 使用公有 IPv4 地址檢查傳入流量:

    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. Ping 執行個體 B 使用公有 IPv4 地址檢查傳入流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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 排除是可套用至單一 VPC 或子網路的模式,該模式會將其從帳戶的 BPA 模式排除,並允許雙向或僅輸出存取。即使 帳戶未啟用 BPA,您也可以為 VPCs 和子網路建立 BPA BPA排除項目,以確保開啟 VPC 時,排除項目不會發生流量中斷。

在此範例中,我們將建立子網路 A 的排除項目,以顯示 VPC 如何影響到排除項目的流量BPA。

開啟 VPC BPA Ingress 限定模式和開啟雙向模式的子網路 A 排除的圖表:

顯示 VPC 搭配 BPA 進入模式並具有排除項目的圖表。

4.1 建立子網路 A 的排除

完成本節以建立排除項目。VPC BPA 排除是可套用至單一 VPC 或子網路的模式,該模式會將其從帳戶的 BPA 模式排除,並允許雙向或僅輸出存取。即使 帳戶未啟用 BPA,您也可以為 VPCs 和子網路建立 BPA BPA排除,以確保開啟 VPC 時,排除項目不會發生流量中斷。

AWS Management Console
  1. 封鎖公有存取索引標籤的排除項目下,選擇建立排除項目。

  2. 選擇 VPC BPA Public Subnet 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. Ping 執行個體 A 的公有 IPv4 地址。請注意,允許流量。

  2. Ping 執行個體 B 的公有 IPv4 地址。請注意,流量已封鎖。

  3. 使用 EC2 執行個體連線至執行個體 A,如同您在案例 1 和 ping www.amazon.com:// 中所做。請注意,您可以從執行個體 A ping 網際網路上的公有網站。允許流量。

  4. 使用 EC2 執行個體連線至執行個體 B,就像您在案例 1 中所執行的一樣,並從中 ping www.amazon.com。請注意,您無法從執行個體 B ping 網際網路上的公有網站。流量遭到封鎖。

  5. 使用 EC2 執行個體連線至執行個體 C 和 D,就像您在案例 1 中所做的一樣,並從中 ping www.amazon.com。請注意,您可以從執行個體 C 或 D ping 網際網路上的公有網站。允許流量。

AWS CLI
  1. Ping 執行個體 A 使用公有 IPv4 地址檢查傳入流量:

    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. Ping 執行個體 B 使用公有 IPv4 地址檢查傳入流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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 中在可連線性分析工具中建立的相同網路路徑,您現在可以執行新的分析,並確認路徑現在可連線,因為已為公有子網路 A 建立排除項目。

如需可連線性分析工具區域可用性的相關資訊,請參閱可連線性分析工具指南中的考量事項。

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。請注意,在區塊僅限輸入模式下BPA啟用 VPC 時,排除的輸出限定模式並不真正有意義。這與案例 3 的行為相同。

開啟 VPC BPA Ingress-only 模式的圖表,以及開啟輸出限定模式的子網路 A 排除:

顯示 VPC 和 BPA 處於僅輸入模式的圖表,允許透過 NAT 閘道傳出流量。

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. Ping 執行個體 A 和 B 的公有 IPv4 地址。請注意,流量會遭到封鎖。

  2. 使用 EC2 執行個體連線連線至執行個體 A 和 B,如同您在案例 1 和 ping https://www.amazon.com 中所執行的一樣。請注意,您無法從執行個體 A 或 B ping 網際網路上的公有網站。流量遭到封鎖。

  3. 使用 EC2 執行個體連線至執行個體 C 和 D,就像您在案例 1 中所做的一樣,並從中 ping www.amazon.com。請注意,您可以從執行個體 C 或 D ping 網際網路上的公有網站。允許流量。

AWS CLI
  1. Ping 執行個體 A 使用公有 IPv4 地址檢查傳入流量:

    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. Ping 執行個體 B 使用公有 IPv4 地址檢查傳入流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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 排除的圖表,並開啟僅輸出模式:

顯示 VPC 和 BPA 處於僅輸入模式的圖表,允許透過 NAT 閘道傳出流量

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. Ping 執行個體 A 和 B 的公有 IPv4 地址。請注意,流量會遭到封鎖。

  2. 使用 EC2 執行個體連線連線至執行個體 A 和 B,如同您在案例 1 和 ping https://www.amazon.com 中所執行的一樣。請注意,您無法從執行個體 A 或 B ping 網際網路上的公有網站。流量遭到封鎖。

  3. 使用 EC2 執行個體連線至執行個體 C 和 D,就像您在案例 1 中所做的一樣,並從中 ping www.amazon.com。請注意,您無法從執行個體 C 或 D 在網際網路上 ping 公有網站。流量遭到封鎖。

AWS CLI
  1. Ping 執行個體 A 使用公有 IPv4 地址檢查傳入流量:

    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. Ping 執行個體 A 使用公有 IPv4 地址檢查傳入流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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 連線,然後從執行個體 ping 公有 IP 來檢查傳出流量:

    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. 在 開啟 AWS CloudFormation 主控台https://console.aws.amazon.com/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

您可以在 CloudTrail 主控台中查詢資源類型 > AWS::EC2::VPCBlockPublicAccessExclusion,以檢視 AWS CloudTrail 事件歷史記錄中任何已刪除的排除項目https://console.aws.amazon.com/cloudtrailv2/

AWS CLI

您可以使用 lookup-events 命令來檢視與刪除排除項目相關的事件:

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

進階範例已完成。