AWS セキュリティグループとネットワークACL(NACL)の違い

目次

セキュリティグループとネットワークACL(NACL)の違いのまとめ

赤の線がセキュリティグループで、オレンジの線がネットワークACLです。

適用単位 ルールの種類 デフォルト動作
セキュリティグループ ENI(インスタンス)単位 許可のみ(デフォルト拒否) 全拒否(ルールを作らないと通らない)
ネットワークACL サブネット単位 許可・拒否の両方を設定可能 すべて許可(デフォルトNACLの場合)

ACLは、Access Control Listの略です。

セキュリティグループ(Security Group)は、SGとも呼ばれます。

セキュリティグループとは

AWSの 仮想ファイアウォールです。

EC2インスタンス、RDS、Lambda(VPC内)、ENIなどのリソースにアタッチでます。

通信のインバウンド(受信)とアウトバウンド(送信)を制御します。

特徴

「拒否ルール」は書けません。(デフォルトは全拒否 → 指定したものだけ許可)。

TCP22番でInboundを許可すると、Outboundで戻りの通信は自動で通ります

セキュリティグループはインスタンスやENIごとに紐づきます。

複数のセキュリティグループを1つのリソースに割り当て可能です。

注意点

セキュリティグループはVPCごとに分かれます。 他VPCへは直接使えません。

許可リスト方式なので、必要最小限のルールにすることが重要です。

0.0.0.0/0で22番や3389番を開けっぱなしにしておくことは、セキュリティリスクです。

ネットワークACL(NACL)とは

VPCのサブネット単位で適用されるファイアウォールです。

サブネットに入ってくるトラフィックと、出ていくトラフィックを制御できます。

許可ルールと拒否ルールの両方を設定可能です。

特徴

サブネットにあるすべてのリソース(EC2, RDSなど)に影響します。

デフォルトNACLとカスタムNACLがあります。

デフォルトNACL 作成時に各VPCに自動で1つある
最初は「全トラフィック許可」になっている
カスタムNACL カスタムNACLを作ると「全トラフィック拒否」が初期状態

Inboundで80番を許可しても、Outboundで応答ポート(Ephemeral Port, 1024–65535)を許可しないと通信不可です。

ルール番号は、1〜32766まであり、小さい番号から評価されマッチしたら処理終了です。

ルールの例(インバウンド)

ルール番号 タイプ プロトコル ポート範囲 ソース 許可/拒否
100 HTTP TCP 80 0.0.0.0/0 ALLOW
110 SSH TCP 22 203.0.113.0/24 DENY
*(デフォ) すべて ALL ALL 0.0.0.0/0 DENY

注意点

戻り通信も必ず設定が必要で管理が複雑です。

まとめ

ネットワークACLは、拒否ルールが必要な場合や、サブネット単位で一括ブロック制御したい場合に有効です。

関連の記事

AWS EC2を作成/削除する手順

△上に戻る