AWSでWebアプリを作る時、
ALB : public subnet(Xと呼ぶ)、EC2 : App用private subnet(Yと呼ぶ)、RDS : DB用private subnet(Zと呼ぶ)
のような構成にするのが王道だと思う。
その場合、それぞれにセキュリティグループをつけると思うが、インバウンドの接続元としてCIDRブロックしか指定できないと、今まで誤解していた。
※DB用セキュリティグループ(sg-db)なら、subnet YのCIDRブロックを指定するイメージ
CIDRブロックだけではなく、セキュリティグループも指定できるらしい。
厳密には、当該セキュリティグループが関連づけられたリソースが対象になるとのこと。
セキュリティグループを指定することで、以下のメリットがありそう。
- サブネット/IPアドレス変更に強い = メンテナンスしやすい
CIDRブロックを使っていると、IP構成が変わった時にルールも同時に変える必要があるが、セキュリティグループなら不要 - 意図しないリソースからのアクセスをブロックできる = セキュリティUP
例えばCIDRブロックを使っていて、subnet Yに適当なEC2インスタンスを立てた時、DBにアクセスできてしまう。ルールのソースにセキュリティグループを使用することで、EC2インスタンスを作成時に明示的にセキュリティグループを関連付けしなければDBにアクセスできない、とすることができセキュアになる。
とはいえ、接続元が社内NW等の場合にはCIDRブロックが必要だと思うので、バランスを見て使っていきたい。