本文へスキップ
BecomeCoder

AWS SAA(ソリューションアーキテクト)コース · 第7章 ネットワークの設計 · レッスン43

ネットワークのセキュリティ設計 ― SGとNACL

導入

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は「詳細な検査・防御」という役割の違いも合わせて整理しておきましょう。