SGとNACLの違い・使い分けまとめ【AWS初心者向け】
AWSのセキュリティ設定をしていると、必ず出てくるのが「Security Group(セキュリティグループ)」と「NACL(Network ACL)」。
「え、これ何が違うの?」「どっちをどう設定すればいいの?」
僕も最初はめちゃくちゃ混乱しました。しかも、間違った設定で通信が通らず、何時間もデバッグに費やした経験があります(涙)
今回は、そんな悩める初心者向けに「SGとNACLの違い・使い分け」をわかりやすくまとめました!
Contents
✅ ざっくり結論:NACLとSGの違い
| 項目 | NACL | Security Group |
|---|---|---|
| 適用範囲 | サブネット単位 | インスタンス単位 |
| ステート | ステートレス | ステートフル |
| ルール数制限 | 20ルール/方向 | 60ルール/SG(緩和可能) |
| デフォルト動作 | 明示的に許可/拒否 | 明示的に許可のみ |
| ログ機能 | VPC Flow Logs | なし(CloudWatch連携可) |
🔍 Security Group(SG)とは?
SGは、EC2インスタンスに対する“ファイアウォール”のようなもの。インバウンド・アウトバウンドの通信を許可するルールを定義します。
- ステートフル(戻りの通信は自動許可)
- インスタンス単位で設定
- 拒否ルールは設定できない(許可のみ)
使いどころ: EC2やRDSなど個別リソースへの細かいアクセス制御に最適!
🛡 NACL(Network ACL)とは?
NACLは、VPCのサブネット単位で設定するアクセス制御リストです。
- ステートレス(戻りの通信も明示的に許可が必要)
- サブネット単位で適用
- 許可と拒否の両方が設定可能
- ルールに番号があり、評価は昇順で行われる
使いどころ: サブネット全体に対してセキュリティ制御したい場合や、IPブロックを行いたい場合に便利!
💡 SGとNACLの使い分け方
| シーン | 適切な選択 |
|---|---|
| 特定のEC2にだけSSH許可したい | SG |
| 特定のIPレンジを完全にブロックしたい | NACL |
| 大量のルールを一括管理したい | NACL(ただし制限あり) |
| AWSサービス間の通信制御 | SG(細かく制御しやすい) |
僕の失敗談ですが、NACLでSSH許可だけしたつもりが、戻り通信を許可し忘れて「なんでつながらないの!?」と3時間悩んだことがあります…(ほんとに初心者泣かせ)
⚠ よくある設定ミスと対処法
| ミス内容 | 原因 | 対処法 |
|---|---|---|
| SGで許可しているのに通信できない | NACLで拒否している | 両方のルールを確認する |
| NACLで許可しても通信できない | 戻りのルールがない | インバウンド・アウトバウンド両方を設定 |
| NACLの評価順により意図しない拒否 | 低い番号に拒否ルールがある | ルールの順番を見直す |
🗺 活用パターン:AWS構成図で見るセキュリティ設計
インターネット
↓
[Internet Gateway]
↓
[NACL – サブネット全体制御]
↓
[EC2 – SGで個別制御]
- NACLは外部からのアクセスをフィルタリング
- SGは個別のインスタンスに対する制御
- 両者を組み合わせて多層防御(Defense in Depth)を実現
📝 まとめ:こんなときに読んで!
- AWS初心者でセキュリティ設定に迷ってるとき
- EC2にアクセスできない原因を探しているとき
- VPC設計時にセキュリティ層を意識したいとき
このブログ記事を参考に、「SGで個別制御、NACLで全体制御」という基本を意識すれば、トラブルも激減します!
AWSのセキュリティは慣れるまで本当に難しいですが、正しい理解で安心・安全な設計ができるようになりますよ!
ぜひブックマークして、何度も見返して使ってくださいね!