セキュリティグループ と ネットワークACL の違い
セキュリティグループは「インスタンス単位で設定するファイアウォール機能」で、
ネットワークACLは「サブネット単位で全インスタンスに適用するファイアウォール機能」です。
どちらもVPC内のネットワーク転送を細かく制御するために使われます。
セキュリティグループ
EC2インスタンスなどに適用するファイアウォール機能で、主にVPCリソースのトラフィックを制御するのに使われます。
複数インスタンスにも適用でき、送信元にはIPアドレスの範囲やセキュリティグループIDを指定することも可能です。
※設定は即時に反映されます。
デフォルトの通信設定
インバウンド :すべて拒否
アウトバウンド:すべて許可
※インバウンドは(EC2インスタンスから出る)内向きの通信で、アウトバウンドは(外部からEC2インスタンスへ向かう)外向きの通信です。
セキュリティグループは定義した通信のみを許可する「ホワイトリスト形式」です。
[例] DBに接続できるIPアドレスやEC2インスタンスを個別に指定。プロトコル(TCPやUDP), ポート番号なども指定可。
ルール
すべてのルールが適用されます。
EC2インスタンスに複数のセキュリティグループ(複数ルールの集合)を適用することも可能です。
ステータス
ステートフル。
(1つの通信で受信側を設定すれば送信も制御可能で、戻りの設定は不要)
ネットワークACL
サブネット単位で設定するファイアウォール機能で、主にサブネット間の制御に使われます。
[例] パブリックサブネットからDBが配置されたプライベートサブネットへの通信を制限。
ネットワークACLはサブネット新規作成時にデフォルトで1つ用意されます。
デフォルトの通信設定
インバウンド :すべて許可
アウトバウンド:すべて許可
※インバウンドは(EC2インスタンスから出る)内向きの通信で、アウトバウンドは(外部からEC2インスタンスへ向かう)外向きの通信です。
ネットワークACLは定義した通信のみを拒否する「ブラックリスト形式」です。
[例] 特定IPアドレスからのアクセスを制限。
個別にカスタムネットワークACLを作成した場合は、インバウンド / アウトバウンドの両方が拒否されるので注意が必要です。
ルール
各ルールに割り当てられた番号順に適用されます。
ステータス
ステートレス。
(1つの通信で受信と送信を制御する場合、それぞれの設定が必要です)
セキュリティグループ vs ネットワークACL
VPC内でセキュリティグループとネットワークACLを両方とも適用している場合「どちらのルールでも許可されないと拒否になる」ので注意が必要です。
[例] セキュリティグループで許可, ネットワークACLで拒否の場合、拒否になります。