【初心者向け】AWSのNACLとSecurity Groupの違いとは?使い分け完全ガイド

SGとNACLの違い・使い分けまとめ【AWS初心者向け】

AWSのセキュリティ設定をしていると、必ず出てくるのが「Security Group(セキュリティグループ)」と「NACL(Network ACL)」。

「え、これ何が違うの?」「どっちをどう設定すればいいの?」

僕も最初はめちゃくちゃ混乱しました。しかも、間違った設定で通信が通らず、何時間もデバッグに費やした経験があります(涙)

今回は、そんな悩める初心者向けに「SGとNACLの違い・使い分け」をわかりやすくまとめました!


✅ ざっくり結論:NACLとSGの違い

項目NACLSecurity 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のセキュリティは慣れるまで本当に難しいですが、正しい理解で安心・安全な設計ができるようになりますよ!

ぜひブックマークして、何度も見返して使ってくださいね!