セキュリティグループとネットワークACLはAWSを初めて触る人が最初にハマる部分の一つではないでしょうか。
そこでここではセキュリティグループとネットワークACLの違いについて簡単にまとめてみました。
項目 | セキュリティグループ | ネットワークACL |
適用方式 | ステートフル | ステートレス |
デフォルト動作 | IN:全拒否 OUT:全許可 | IN:全許可 OUT:全許可 |
ルール適用動作 | 全ルール | ルール順で適用 |
適用範囲 | インスタンス単位で適用 ※複数適用可能 | サブネット単位 ※1サブネットにつき1つ適用 |
ルール定義数 | IN、OUTで各々60まで。 合計120ルール ※制限数を引上げることは可能だが引上げることにより加わる制限等もある模様。 | 20個まで。 最大40個まで解除可能 |
ステートフル
一般的にあるリクエストに対して返ってくるレスポンスが変わることを指す。
セキュリティグループの場合はOUTで許可された通信に起因するINの通信が許可される挙動となる。AWSのセキュリティグループやネットワークACLに関してのステートフル・ステートレスという表現はTCPセッションの手続き(syn,ack等)に関することを指しているっぽい。
ステートレス
一般的にあるリクエストに対して返ってくるレスポンスが一定であることを指す。
ネットワークACLの場合、INのルールで許可されていてもOUTが拒否であれば問答無用で拒否される。
実際に設定してみるのが一番早いのですが、VPCの作成を行わない限りは日頃ネットワークACLに接する機会がない人が多いかもしれません。普段インスタンス周辺を触る人が覚えておいたほうが良いのはセキュリティグループですが、DirectConnect等を利用していて少し入り組んだ環境で通信できない事態に遭遇したときにネットワークACLの設定も確認してみると、そもそもACLで許可されていなかったりするので頭の片隅くらいには置いておくほうがよいです。