サブネット経由での EC2 パブリックインスタンスの公開

EC2 の公開アドレス、ルーティング、アクセスルールをまとめて確認し、不要なインターネット公開を減らしてください。

説明

パブリック IPv4 アドレスを持つ EC2 インスタンスは、インターネットゲートウェイへの経路とアクセスルールが許可すると、インターネットから直接到達できます。公開アドレスやデフォルトルートだけで到達性が決まるわけではありません。NAT ゲートウェイへ向かうデフォルトルートとも区別が必要です。

内部用ワークロードは、インターネットからの直接受信を必要としない構成にしてください。必要な外向き通信には、NAT やサービス別の VPC エンドポイントなど、用途に合う経路を用意できます。

想定される影響

  • 公開経路と広い受信許可が組み合わさると、脆弱なサービスが外部攻撃の対象になる可能性があります。
  • 管理用や依存サービス用の経路を準備せずに変更すると、必要な接続が途絶えることがあります。

対処方法

  • 自動的なパブリック IPv4 割り当てが不要な新しいインスタンスには、AssociatePublicIpAddress: false を設定してください。既存のアドレス、Elastic IP、IPv6 のアクセスは別途確認してください。
  • 内部用インスタンスにはインターネットからの直接受信経路を設けず、必要な外向き通信と管理経路を準備してください。
  • 公開サービスでもセキュリティグループと NACL で必要な通信だけを許可し、アプリケーションの認証・権限確認を維持してください。

例

AMI とサブネットの参照先は実際の環境に合わせて用意してください。経路とセキュリティグループは省略しています。異なるインスタンス構成の比較であり、既存インスタンスをそのまま切り替える手順ではありません。

変更前

yaml
Resources:
  PublicInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0ff8a91507f77f867
      NetworkInterfaces:
        - AssociatePublicIpAddress: true
          DeviceIndex: "0"
          SubnetId: !Ref PublicSubnet

パブリック IPv4 の割り当てを要求します。サブネット名だけでは公開経路は分からないため、実際の経路とアクセスルールを確認してください。

変更後

yaml
Resources:
  PrivateInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0ff8a91507f77f867
      NetworkInterfaces:
        - AssociatePublicIpAddress: false
          DeviceIndex: "0"
          SubnetId: !Ref PrivateSubnet

パブリック IPv4 の自動割り当てを無効にします。実際のプライベート経路と、必要な外向き通信・管理接続も構成してください。

参考資料