本文へスキップ
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ではできない詳細な検査を行えます。

具体例

Webサーバーの通信制御を、2つの要件で見比べます。SGとNACLの役割の違いがはっきりします。

  • 要件:一般ユーザーにHTTPSを開放し、SSHは社内からだけ → セキュリティグループ。「443番は誰でも許可」「22番は社内IPのみ許可」を書く。SGはステートフルなので、行きを許可すれば戻りの通信は自動で通る(戻り用ルールは不要)。SGは「許可」しか書けないが、この用途はそれで足りる。
  • 要件:不審なIP帯 198.51.100.0/24 からの攻撃をまとめて締め出したい → ここでSGは無力。SGは拒否ルールを書けないからだ。→ NACLの出番。サブネット単位で「このIP帯を拒否」を明示的に書ける。ただしNACLはステートレスなので、インバウンドとアウトバウンドを別々に設定する必要がある。

SAAの典型的なひっかけが「特定IPを拒否したい」(SGでは不可→NACL)と「戻りの通信を毎回許可するのが面倒」(SGはステートフルなので不要)。加えて、通信の記録はVPCフローログ、ドメインフィルタや侵入防御など詳細な検査はNetwork Firewall、と役割を分けて覚えます。

読んでみよう

「特定のIPだけを拒否したい」=NACL(SGは拒否不可)、「戻りの通信を都度許可するのが面倒」=SGはステートフルだから不要、という2点がSAAの典型的なひっかけです。VPCフローログは「通信の記録」、Network Firewallは「詳細な検査・防御」という役割の違いも合わせて整理しておきましょう。

次のレッスンへ →