SubnetのCIDRの設計方針はVPCのSubnetのCIDRの設計方針(一例として)の記事の内容が最新になります。
(本記事のものは少し古い考え方になります)
これまでにVPCの設計に関して色々と経験し、社内で議論し、cloudpackとして一つのパターンができつつあるので、
この機会に形式知にしてみました。(CDPになります)
まずは構成図となりますが、わかる方はこの図だけで全てが分かると思います。
余談ですが、IaaSで最先端をゆくAWSの隠れた要因は下記だと思っています。
(1)のプレミアムサポートの素晴らしさは、いろいろなところで話されている為、ここで詳しくは書きませんが、
cloudpackのお客様へのサポートは、AWSのプレミアムサポートを、お手本にしています。
(2)のシンプルアイコンの凄さは、恥ずかしながら最近まで気が付きませんでした。
今どのようなことが起きているかというと、下記のような図を用いることで(初めての)お客様との設計のやり取りが、
とてもスムーズにできています。
また、お互いにアイコン(プロダクト)に対する認識の共有ができている為、話が非常に早く、また我々もアイコンの
説明等の付帯資料を作成する必要がありません。
この事で、案件が円滑に進むようになったと思います。
シンプルアイコン(とCacoo)がなければ、CDPが生まれなかったかもしれません。
話を戻して、上図の設計方針を説明します。
○サブネット
下記の3つの視点でサブネットを設計しています。
- Availability Zone
- インターネットアクセスに対するルーティング
- 配置するコンポーネント(ELB/EC2/RDS)のIPアドレス(任意/固定)
- Availability Zoneごとに同じ種類のサブネットを配置し、例えば下記のように
CIDRで各AZを区別できるようにします。- A Zone: 10.0.0.0/18
- B Zone: 10.0.64.0/18
- C Zone: 10.0.128.0/18
- (D Zone: 10.0.192.0/18)
当然、CIDR(ネットワークアドレスやサブネットマスク)はシステム規模によって変更するべきです。
- インターネットアクセス(IGW)に対するルーティングは下記の3種類とし、例としては下記のようにCIDRで
各ルーティングの種類を区別できるようにします。- Public: 10.0.0.0/23
インターネット(IGW)へのInbound/Outboundの両アクセスが可能 - Protected: 10.0.2.0/23
インターネット(IGW)へのOutboundのみNAT経由でアクセス可能 - Private: 10.0.4.0/23
インターネット(IGW)へのアクセスは不可能
Privateサブネットに配置しているEC2で、インターネットへのOutboundアクセスが必要になった場合、
そのEC2はProtectedサブネットに再配置することで対応します。 - Public: 10.0.0.0/23
- IPアドレスを固定にするコンポーネント(EC2)と、任意のIPアドレスが
付与されてしまうコンポーネント(ELB/RDS/AS)は、別のサブネットに配置します。
これは、両コンポーネントを同居させてしまうと、固定で使いたいIPアドレスが、
任意に付与されるIPアドレスに、先に使われてしまう可能性があるからです。- 任意: 10.0.0.0/24
- 固定: 10.0.1.0/24
ACT/STBなサーバは3つのAZを利用せずに、IPアドレス固定のEC2を配置するサブネットで、
2つのAZのみで構成(EC2を配置)することになります。
○ルーティング
上述(サブネット)の通り、Public/Protected/Privateの3種類を用意します。
Virtual Private Gateway(VPG)へのVPN接続は、上記の必要なサブネットに追加するようにし、
それ用にサブネットを作成することは行いません。
基本的は、PrivateサブネットにVPGをアタッチして、踏み台(Temp)経由で他のサブネット(Protected/Public)に
アクセスする形になると思います。
○セキュリティ
アクセス制限方法は、おおまかに下記の5種類方法があると思いますが、基本的にセキュリティグループで
アクセス制限を行うことにします。
- Network ACL: サブネットに対するアクセス制限
- セキュリティーグループ: EC2/ELB/RDSに対するアクセス制限
- OS: iptablesやtcp wrapperなどで制限
- サーバ: apacheやpostgresqlなどで制限
- アプリケーション: アプリケーションプログラム内で制限
ただし、PublicサブネットとProtected/Privateサブネットに対してはそれぞれ下記のように、必要最低限の
アクセス許可を実施しておきます。
- External Network ACL: 10.0.0.0/23
Publicサブネットに設定。
デフォルト設定(Inbound/Outboundがすべて許可)だが、拒否リストで指定IPからのアクセス制限も
必要に応じて実施。- Internal Network ACL: 10.0.2.0/22
Protected/Privateサブネットに設定。
InboundはVPC内のみアクセス可能。
Outboundはすべて許可。
当然ですが、VPG経由の他拠点からのアクセスがある場合は、Netowrk ACLにしかるべき設定を
実施する必要があります。