目的
ネットワークACLとセキュリティグループについて、どのような共通点があり、どのような点が異なるかを整理する。
想定読者
ネットワークACLとセキュリティグループの共通点、違いを整理したい方。
共通点
-
ネットワークACLとセキュリティグループ、どちらもファイアーウォールとなる。
具体的には、通信経路のポート番号を「許可」することが可能。 -
予めデフォルト用に用意されているフォーマットでは、全ての通信が許可されている。
異なる点
ネットワークACL
- サブネット単位でポート番号を制御することが可能。
- 新規作成する際、デフォルト設定は、全ての通信が許可されている。
- ステートレスのため、戻りの通信で使用するポート番号を考慮する必要がある。
- 通信経路のポート番号を「拒否」することが可能。
- 最も低い番号のルールから順にルールを処理される。
セキュリティグループ
- EC2インスタンス単位で制御することが可能。
- 新規作成する際、デフォルト設定は、全ての通信が許可されていない。
- ステートフルのため、戻りの通信で使用するポート番号を考慮する必要がない。
- 通信経路のポート番号を「拒否」することが出来ない。
- 設定したルールは全て適用される。
優先度について
どちらが優先されるということはない。
なぜなら、ネットワークACLはサブネット単位で動作し、セキュリティグループはインスタンス単位で動作しているため、通信を制御する場所が異なるためである。使用したい通信に応じてどちらも許可する必要がある。
どのように設定すれば良いか?
結論としては、基本的にはセキュリティグループにて通信制御を細かく設定し、ネットワークACLは全開放(デフォルト設定)でも良いと考える。厳しいトラフィック要件が存在する場合は、ネットワークACLの設定を行う方針で問題ないと想定する。
どちらも出来ることは「ポート番号の制御」となるため、どちらかを設定することで「ポート番号の制御」に関してのセキュリティは担保出来る。では、どちらを使用するかを検討した時に、セキュリティグループは、送信元や送信先にセキュリティグループを設定することが出来、細かい通信制御が可能となる。また、戻りの通信で使用する際のポート番号を考慮しなくて済むため、基本的には、セキュリティグループで通信制御を細かく行う方針が良いと考える。
参考情報
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Security.html
https://dev.classmethod.jp/articles/why-i-prefer-sg-to-nacl/