AWSのVPC構成を触っていると必ず登場するのが「Network ACL(ネットワークACL)」です。しかし、セキュリティグループとの違いや設定の意図を正確に理解していない人も多いのではないでしょうか?
この記事では、Network ACLの基本概念から特徴、実践的な活用方法までを整理して解説します。
🧩 Network ACLとは
Network ACL(Access Control List)は、Amazon VPC(Virtual Private Cloud)内で、サブネット単位でトラフィックを許可・拒否できるファイアウォール機能です。
- サブネットに関連付けて設定する(サブネットごとに異なるACLを設定可能)
- インバウンド(受信)・アウトバウンド(送信)をそれぞれ制御
- 無料で利用可能(VPCの基本機能の一部)
- ステートレス(stateless)な仕組みであることが最大の特徴
ステートレスとは、通信の“返り(レスポンス)”を自動で許可しないという意味です。
⚙️ 主な特徴まとめ
| 項目 | 内容 |
|---|---|
| 適用範囲 | サブネット単位で適用。サブネット内の全インスタンスに影響します。 |
| 方向制御 | インバウンド/アウトバウンドを別々に設定可能。 |
| ステートレス | 応答トラフィックを自動で許可しないため、双方向のルールが必要。 |
| ルール構造 | 許可(ALLOW)・拒否(DENY)の両方を設定可能。 |
| 評価順序 | ルール番号の小さい順に評価し、最初に一致したものを適用。 |
| デフォルトACL | すべて許可の設定。カスタムACLは明示的な許可がない限り全拒否。 |
🔐 セキュリティグループとの違い
AWSでは「セキュリティグループ」も通信制御に使われますが、Network ACLとは性質が異なります。
| 比較項目 | Network ACL | セキュリティグループ |
|---|---|---|
| 適用範囲 | サブネット単位 | インスタンス単位 |
| ステート性 | ステートレス(戻り通信は明示的に許可が必要) | ステートフル(戻り通信は自動許可) |
| ルールタイプ | 許可・拒否の両方可能 | 許可のみ(拒否ルールは不可) |
| デフォルト動作 | カスタムは明示許可がない限り拒否 | インバウンドは全拒否、アウトバウンドは全許可 |
👉 一般的に、セキュリティグループが「細かなアクセス制御」、NetworkACLが「サブネット全体の大まかな制御を担当します。
🧱 利用シーンの例
Network ACLは、VPC内のサブネットごとに異なるセキュリティポリシーを適用したい場合に有効です。
✅ 典型的な活用パターン
- DMZ(公開サブネット):特定IPアドレスからのHTTP/HTTPSのみ許可
- プライベートサブネット:外部アクセスを完全に遮断
- 拒否ルールの利用:特定の国・リージョンのIPレンジを明示的にブロック
実務では、次のような構成が多いです:
- セキュリティグループ:アプリケーション層の通信制御
- Network ACL:ネットワーク層の基礎的なトラフィック制御(防御の“外壁”)
⚠️ 注意点
Network ACLを運用する際には、以下のポイントに注意しましょう。
-
応答トラフィックを忘れず許可する
ステートレスなので、リクエストを許可しただけでは通信が成立しません。戻りのポート(例:Ephemeralポート範囲)も許可する必要があります。 -
ルール番号設計を意識する
ルール番号は1~32766まで。10刻み・100刻みなどにしておくと後でルール追加が容易です。 -
デフォルトACLのまま運用しない
すべて許可の状態なので、セキュリティリスクがあります。カスタムACLを設定しましょう。
🧭 まとめ
- Network ACLはサブネットレベルでの通信制御機能。
- ステートレスで許可・拒否ルールを両方設定できる。
- セキュリティグループと併用して多層防御を構築するのがAWS設計の基本です。