セキュリティ

セキュリティグループの連鎖設計|ALB→EC2→RDSを最小許可でつなぐ

セキュリティグループ(SG)は、EC2 や RDS などのリソースに付ける仮想ファイアウォールです。3層構成では、IPアドレスではなく「前の層のSG」を許可元に指定することで、必要な通信だけを通す設計にできます。

セキュリティグループの連鎖の構成図
図:セキュリティグループの連鎖(タップで拡大)
▶ この構成をサンドボックスで開く 動かして・CloudFormation に書き出せます

連鎖のさせ方

SGインバウンドで許可するもの
ALB 用 SGHTTP(80) / HTTPS(443):0.0.0.0/0(インターネット全体)
EC2 用 SGHTTP(80):ALB 用 SG から
RDS 用 SGMySQL(3306):EC2 用 SG から

許可元に SG を指定すると、「その SG が付いたリソースからの通信」を許可する意味になります。Auto Scaling で EC2 が増えても、新しいインスタンスに同じ SG が付いていれば自動的に通信できるので、IPアドレスを管理する必要がありません。

実際に組んでみよう:ArchiCraft の実践編(セキュリティグループ設計)では、このルールを自分で設定して採点できます。また、サンドボックスで ALB → EC2 → RDS をつないで CloudFormation に書き出すと、この SG の連鎖がそのまま生成されます。

SG と ネットワークACL の違い

セキュリティグループネットワークACL
適用単位リソース(ENI)サブネット
状態ステートフル(戻りの通信は自動で許可)ステートレス(戻りの通信も明示的に許可が必要)
ルール許可のみ許可と拒否
評価すべてのルールを評価番号の小さい順に評価し、最初に一致したもので決定
よくあるひっかけ:「特定のIPアドレスからのアクセスを拒否したい」は SG ではできません(SG は許可しか書けない)。ネットワークACL の拒否ルール、または WAF の IP セットを使います。

よくある設定ミス

理解度チェック:EC2 から RDS につながらない。RDS の SG は「EC2 の SG から 3306」を許可している。次に確認すべきは?

EC2 に本当にその SG が付いているか、RDS と EC2 が同じ VPC にあるか(別 VPC なら SG 参照に制約がある)、ネットワークACLでエフェメラルポートの戻り通信が塞がれていないか、の順に確認します。

まとめ

読んだら、手を動かして覚えよう

ArchiCraft は、AWS サービスをドラッグ&ドロップで組み立てて解く資格対策アプリです。SAA・SAP の問題を構成図で解いて、採点と解説で理解を固められます。