【AWS VPC】ネットワークACLとセキュリティグループの違い

スキルアップ

はじめに

VPC(Virtual Private Cloud)は、AWSのネットワークサービスの中核をになっています。
そして、VPCでアクセス制御(セキュリティ)の中核を担うのが、ネットワークACLセキュリティグループです。

ネットワークACLセキュリティグループは、初めて勉強すると混乱する人が多いと思います。
特に、仕様の違い使い分け方が整理できないと、理解が進まないでしょう。

そこで、今回はこの2について整理しましたので、その内容を紹介します。
みなさんのAWS理解の参考にしてください。

本記事は、2022年8月時点でのAWS公式情報に基づいて作成しています。
最新情報は、AWSの公式サイトをご確認ください。

ネットワークACLとセキュリティグループの整理

まずは、ネットワークACLセキュリティグループを表にまとめて整理します。

ネットワークACLセキュリティグループ
適用単位サブネット単位インスタンス単位
制御の種類許可 & 拒否許可のみ
状態管理
(戻り通信の扱い)
ステートレス
(戻り通信に対する
設定が必要
)
ステートフル
(戻り通信に対する
設定は不要)
制御の指定方法ポート
CIDR(IPアドレス)
プロトコル
ポート
CIDR(IPアドレス)
セキュリティグループ
デフォルト設定アクセスを許可アクセスを拒否

この表からも分かるように、2つはアクセスを制御する目的は同じでも、その内容には明確な違いがあります。

ネットワークACLとセキュリティグループの主な違い

この中で、アーキテクチャを考える上で重要かつAWS認定試験でもよく出題される、「制御の種類」と「状態管理」を説明ます。

制御の種類

ネットワークACLとセキュリティグループの特徴に、ネットワークACLは明示的にアクセス拒否が設定できる点が挙げられます。

もちろん、セキュリティグループも、アクセス許可を設定しないことで暗黙的にアクセス拒否と同等の設定を行えます。
しかし、不正アクセスが違われる特定IPアドレスをブロックしたい場合、該当IPアドレス以外を許可する設定することは現実的ではありません

例えば、セキュリティグループグローバルIP:ccc.ccc.ccc.cccからのアクセスをブロックしたい場合
 aaa.aaa.aaa.aaa :許可
 bbb.bbb.bbb.bbb:許可
 ddd.ddd.ddd.ddd:許可
   ・・・
 ※「ccc.ccc.ccc.ccc:許可」は設定しない

この点、ネットワークACLでは、特定IPアドレスを拒否できるので設定が楽になります。
(「ccc.ccc.ccc.ccc:拒否」が設定できる!)

状態管理(ステートレス/ステートフル)

状態管理は、通信不可時のトラブルシューティングとして、実務だけでなくAWS認定試験でもよく問われます。

まず、ステートレスとステートフルの違いは、インバンド(入りの通信)を許可した場合、「アウトバウンド(帰りの通信)を自動的に許可するか?」という点です。

・ステートレスは、アウトバウンドの通信は自動的に許可しない(別途設定が必要)
・ステートフルは、アウトバウンドの通信は自動的に許可する

ネットワークACLは「ステートレス」、セキュリティグループは「ステートフル」です。

これを踏まえると、全通信を拒止した上で特定通信を許可する場合は以下となります。

インバウンド
設定
アウトバウンド
設定
ネットワークACL
(ステートレス)
許可許可
セキュリティグループ
(ステートフル)
許可なし
(自動で許可)
AWS認定試験での出題パターン
ネットワークACLとセキュリティグループで、特定通信(ポート22:SSHなど)のインバンドを許可しましたが、接続できませんでした。
どの設定に問題があると考えられるでしょうか?

回答:ネットワークACLのアウトバウンドで許可設定ができていない。

最後に

ネットワークACLセキュリティグループは、整理できないと同じようなモノと勘違いしてしまいます。
しかし、AWSでは、それぞれに違いを付けて役割を与えています。

これを整理しようとしても、AWSは用語も公式解説も独特な言い回しが多いので、理解しにくいと思います。
今回の説明では、AWS独特な言い回しは排除し、細かい説明も大胆に割愛しました。

その代わりに、IAMユーザー、IAMグループ、IAMロール、IAMポリシーの4つの概要と関係性はご理解いただけと思います。

物足りなさもあるかとお思いますが、今回の説明をきっかけにAWSへの苦手意識がなくなり、AWS利用に前向きになってもらえると幸いです。

コメント

タイトルとURLをコピーしました