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