避けては通れないネットワークの知識
アプリ開発者がAWSでつまづく最初のポイントが、ネットワークの知識不足だと思います。
特にこのVPCというもの。AWSを利用する上では避けては通れないサービスですが、もろにネットワークの知識が必要となるため、苦手な人が多いのではないでしょうか。
Amazon VPC
VPC内のパブリックサブネット、プライベートサブネット
VPC内には複数のサブネットを設置できる。
サブネットとは、IPアドレスのブロックのこと。
サブネットには、パブリックサブネットとプライベートサブネットがある。
・インターネットに到達できるサブネットをパブリックサブネット
・インターネットに到達できないサブネットをプライベートサブネット
と言う。
サブネットをインターネットに到達できるようにするには、
・VPCにインターネットゲートウェイを設置する。
・サブネットにルートテーブルを関連付ける。
・ルートテーブルにインターネットゲートウェイへのルートを設定する。
ようにする。
つまり、インターネットゲートウェイへのルートがあるルートテーブルが関連つけられたサブネットが、パブリックサブネットである。
Amazon VPC > ユーザーガイド > サブネットタイプを参照のこと。
VPCのセキュリティ
VPCへの通信トラフィックの制御方法として、ネットワークACLとセキュリティグループがあります。
ネットワークACLはトラフィック全許可にしておいて、セキュリティグループで細かい制御を行うケースが多いそうです。
ネットワークACL
- サブネット単位で設定する。
- 1つのサブネットは 1つのネットワークACLと紐づける必要がある。
- 指定しない場合はデフォルトのネットワークACLと紐づく。
- 許可ルール/拒否ルールの両方を設定する。
セキュリティグループ
- デフォルトでは全拒否担っている。
- 許可ルールのみ設定する。(ホワイトリスト方式)
ネットワークACLとセキュリティグループの使い分け
ネットワークACLはサブネット単位である。よって、サブネット内のインスタンス全て影響を受ける。
つまり、サブネット内のインスタンス間のトラフィック制御には適用できない。