説明
EC2 インスタンスにパブリック IPv4 アドレスがあり、インターネットゲートウェイへの経路やセキュリティグループなどが通信を許可していると、インターネットから接続できる場合があります。パブリック IP だけでアクセスや認証が許可されるわけではありませんが、内部用サーバーでは不要な公開経路を減らしてください。
外部向けサービスは必要な入口だけを公開し、管理接続には VPN、適切に構成した踏み台、Systems Manager などの管理された経路を使用してください。NAT ゲートウェイはプライベートインスタンスからの外向き通信を支えるもので、インターネットからの管理接続を受け付ける経路ではありません。
想定される影響
- ルーティングとポートのルールが許可していれば、サービスが外部からのスキャンや接続試行にさらされる可能性があります。
- サービスの脆弱性や弱い認証と組み合わさると、不正アクセスや情報漏えいにつながる可能性があります。
対処方法
- 直接公開する必要がない新規インスタンスは、
network.assign_public_ipをfalseに設定し、適切なプライベートサブネットに配置してください。 - 必要なロードバランサー、管理接続、外向き通信の経路を先に整え、セキュリティグループとネットワーク ACL を必要な範囲に制限してください。
- 既存インスタンスのアドレス、ネットワークインターフェイス、Elastic IP、IPv6 の経路も確認してください。変更後は実際の接続とアプリケーションの動作を確認してください。
例
イメージやセキュリティグループなどを省略した作成設定の抜粋です。導入済みコレクションが対応するモジュール名と、実際のサブネットを使用してください。
変更前
yaml
- name: start an instance with a public IP address
community.aws.ec2_instance:
name: public-compute-instance
vpc_subnet_id: subnet-5ca1ab1e
instance_type: c5.large
network:
assign_public_ip: true
パブリック IP の割り当てを要求します。実際のインターネットアクセスは、ルーティング、セキュリティグループ、サービスの設定によって決まります。
変更後
yaml
- name: start an instance without a public IP address
community.aws.ec2_instance:
name: private-compute-instance
vpc_subnet_id: subnet-5ca1ab1e
instance_type: c5.large
network:
assign_public_ip: false
新規インスタンスへのパブリック IP の割り当てを無効にします。インスタンス名も異なるため、この例で既存インスタンスのアドレスが削除されたり、プライベートサブネットに移動したりするわけではありません。