初めに
ネットワークの基礎も分からない弱弱エンジニアがAWSを触り始めて、最近やっとVPCの概念が少し理解できてきたので、同じ悩みを抱える同士向けにまとめます。
※ 初心者が初心者向けに噛み砕いて書いているので厳密には表現が間違っている箇所があるかもしれません。その場合はご指摘いただけるとありがたいです。
VPC
まず、VPCはVirtual Private Cloudの略で、その名の通り、あなた専用の仮想ネットワークです。このVPC上にEC2などのインスタンスを設置することができます。VPCは、他のVPCとは論理的に切り離されているので、他の人があなたのVPC上のリソースに直接アクセスすることはできませんので、安全に利用することができます。(あまりこう言う解説は見かけないですが、仮想的なLANのようなものだと私は理解しています)。
2013年以降に作成されたアカウントには、各リージョン毎にデフォルトでVPCが作成されていますが、VPCを自分で新たに作成することもできます。
VPCの作成時には、そのVPCのIPを自分で設定することができます。
サブネット
サブネットとは、VPC内で更に分割されたネットワークのことです。VPCで使用可能なIPのうち、ここからここまではこのサブネット、ここからここまではこのサブネット、と言うのをCIDR表記を用いて設定します。
何故プライベートなネットワークなのに更に分けるのかですが、いくつかメリットがあります。
1つ目は、VPC内にホストが多くなってきた時にサブネットが無いと、ホスト間通信の時に余計なコストがかかってしまうと言うのを解決できる点です。各サブネットは仮想ルータを持っており、同一サブネットに所属するホスト間の通信はこのルータを用いるので、外側のサブネットを見に行く必要がなく、通信のコストが抑えられます。また、この仮想ルータはサブネットに置かれたEC2インスタンスなどのデフォルトゲートウェイになります。
2つ目は、業務上通信する必要があるホストと通信する必要が無いホストをサブネットで分けることでセキュリティを向上させることができる点です。例えば、社員の個人情報などを持っている部署を他の部署と同一のネットワークに置くのは好ましく無いです。そんな時にサブネットを使ってネットワークを分けることができます。
セキュリティグループ
サブネットがネットワーク単位で通信を制御するのに対して、セキュリティグループはEC2などのインスタンス単位で通信を制御するものです(仮想的なファイアウォールのような物と私は理解しています)。
具体的には、そのインスタンスにアクセスできるIP、ポート、IPアドレスレンジや、セキュリティグループなどをホワイトリスト形式で記述します。
例えば、WEBサーバーを動かしているインスタンスでは次のようなセキュリティグループを設定することになると思います。
Source | Protocol | Port range | Description |
---|---|---|---|
0.0.0.0/0 | TCP | 80 | 任意の IPv4 アドレスからのインバウンド HTTP アクセスを許可します。 |
インスタンスへの入力を制御するルールなのでこれをインバウンドルールといいます。
また、同様にそのインスタンスがアクセスできるルールも指定でき、これをアウトバウンドルールと言います。
参考文献
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/what-is-amazon-vpc.html
https://qiita.com/YuasaJunki/items/145dd8763883cb922400
http://www.runsurunet.com/2017/01/20/%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3%83%88%E5%8C%96%E3%81%AE%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/