導入
VPC内の通信を誰に許可し誰を拒否するか。この境界線の設計にはセキュリティグループとネットワークACLという2つの仕組みがあり、似ているようで根本的に違うという点がSAA頻出のひっかけです。
説明
| 項目 | セキュリティグループ(SG) | ネットワークACL(NACL) |
|---|---|---|
| 適用単位 | インスタンス(ENI)単位 | サブネット単位 |
| 状態管理 | ステートフル(戻りの通信は自動許可) | ステートレス(戻りの通信も明示的に許可が必要) |
| ルール | 許可のみ設定できる | 許可・拒否の両方を設定できる |
| ルール評価 | すべてのルールを評価してAND的に判定 | 番号の若い順に評価し、最初に一致したルールを適用 |
セキュリティグループはインスタンスの前に立つ「ドア」で、許可した通信の戻りは自動的に通します(例:80番ポートへのインバウンドを許可すれば、その応答のアウトバウンドは自動許可)。NACLはサブネットの前に立つ「壁」で、インバウンド・アウトバウンドを個別に、しかも拒否ルールを含めて明示的に設定する必要があります。
flowchart LR
Internet(("インターネット")) --> NACL["NACL<br/>(サブネット境界・ステートレス)"]
NACL --> SG["セキュリティグループ<br/>(インスタンス境界・ステートフル)"]
SG --> EC2["EC2インスタンス"]
特定のIPアドレスからの通信だけを明示的に拒否したい場合、SGでは拒否ルールを書けないため、NACLを使う必要があります(例:不審なIPからのアクセスをブロックしたい)。
ネットワーク全体の可視化・監査には VPCフローログ を使います。ENIを通過する通信の送信元・送信先・ポート・許可/拒否結果を記録し、異常な通信の調査やコンプライアンス対応に利用します。
より高度な脅威対策には AWS Network Firewall を使います。VPCの境界にステートフルなファイアウォールを配置し、ドメインベースのフィルタリングや侵入防御(IPS)ルールなど、SGやNACLではできない詳細な検査を行えます。
読んでみよう
「特定のIPだけを拒否したい」=NACL(SGは拒否不可)、「戻りの通信を都度許可するのが面倒」=SGはステートフルだから不要、という2点がSAAの典型的なひっかけです。VPCフローログは「通信の記録」、Network Firewallは「詳細な検査・防御」という役割の違いも合わせて整理しておきましょう。