
AWSのVPCガイドのシナリオ2(ここ) では、パブリック サブネットとプライベート サブネットを設定する方法を示しています。引用すると、次のようになります。
パブリックにアクセスできないバックエンド サーバーを維持しながら、パブリック向けの Web アプリケーションを実行する場合は、このシナリオをお勧めします。一般的な例としては、Web サーバーがパブリック サブネットにあり、データベース サーバーがプライベート サブネットにある多層 Web サイトがあります。Web サーバーがデータベース サーバーと通信できるように、セキュリティとルーティングを設定できます。
私の理解では、ルーティング テーブルの設定方法により、VPC 内のすべてのサブネットが相互に通信できるということです。したがって、セキュリティが目的であれば、データベースなどのバックエンド サーバーに外部トラフィックを許可しないようにするには、サーバーをパブリック サブネットに配置し、パブリック IP を割り当てないのはなぜでしょうか。そのようにすれば、同じ機能が保証されます。つまり、外部からはアクセスできませんが、他のすべてのサーバーと通信できます。違いは何ですか。
答え1
パブリック サブネットにサーバーを配置してもパブリック IP がない場合、そのノードは外部と通信できなくなります。パブリック IP がなく、NAT ゲートウェイへのルートもありません。これには、VPC エンドポイントのない AWS サービスや API が含まれます。通常、すべてのノードに何らかの外部アクセスが必要になるため、ノードをプライベート サブネットに配置すると、そのことが実現します。
また、誰かが誤って(または意図的に)ノードに EIP またはセキュリティ グループを追加して、プライベート ノードをパブリック ノードにしてしまうことも防ぎます。