CloudFormationで3層アーキテクチャ用VPCを作る[③VPCコンポーネント編]

前回に引き続き、今回もVPC周り。
以下のVPCコンポーネントまとめて作って、VPCへアタッチしていく。
– InternetGateway
– NatGatway
– ルートテーブル(メイン/カスタム)
– NWACL

※長くなったので、ルートテーブル/ACLはひとまず空のままにする。。

VPCコンポーネント設計

InternetGateway

作ってVPCアタッチするだけだけど、一応Name付けて情報整理しとく。

Name(logical-id) アタッチするVPC
igwmainVPC mainVPC

NatGateway

NatGatewayでは、配置するサブネット、EIPの設定も一緒に指定する。

今回EIPはAWSから払い出されるものを指定するだけなんだけれど、設定項目として整理しとく。
EIPは任意のものを取得し、それをNatGatewayに割り当てるように記述する。

Name(logical-id) 配置サブネット EIP
ngwpubWEB1 pubWEB1 AWSから払い出し
ngwpubWEB2 pubWEB2 AWSから払い出し

ルートテーブル

デフォルトのルートテーブルはCloudFormationでは扱えないらしいので未使用にする。
プライベートサブネット用、パブリックサブネット用のルートテーブルをカスタムで新規作成して、 各サブネットに明示的にアタッチする。
プライベートサブネット用テーブルはNatGatewayをデフォルトの通信先。
パブリックサブネット用テーブルはInternetGatewayをデフォルトの通信先にする。

種別 Name(logical-id) 種別 サブネットの関連付け デフォルト通信先
カスタム rtpub pub pubWEB1,pubWEB2 igwmainVPC
カスタム rtprv1,2 prv prvAP1,prvAP2 ngwpubWEB1,2
カスタム rtdb1,2 prv prvDB1,prvDB2 ngwpubWEB1,2

NW ACL

ありがたーいことにAWS公式でNWACLのベストプラクティスがある。
基本的なところは参考にしつつ、今回の要件に沿うように設計する。
ルールの中身はVPC内に配置するリソースに応じて定義するとして、まずは各箇所で使うACLを定義。
デフォルトのNWACLはCloudFormationでの触り方が分からなかったので扱わないことにしておき、 カスタムのNWACLを各層ごとに定義しておく。

以下のベストプラクティスは一般的なガイドラインであり、完全なセキュリティソリューションに相当するものではありません。これらのベストプラクティスはお客様の環境に適切ではないか、十分ではない場合があるため、これらは処方箋ではなく、有用な考慮事項と見なしてください。
種別 Name アタッチ対象 制御
default vpcdefault mainVPC デフォルト(全通信許可)
custom naclpubWEB pubWEB1/2 ※今後検討
custom naclprvAP prvAP1/2 ※今後検討
custom aclprvDB prvDB1/2 ※今後検討

CloudFormationテンプレート

完成したテンプレートはこちら。

長くなってきたので一旦ここまで。。
気が向いたらスタック分割やってみる。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする