メインコンテンツまでスキップ

VPCのネットワークACLとセキュリティグループ - 2つの仮想ファイアウォールの違いと使い分け

· 約6分
Shinya Kato
DayoneLabs管理人、ソフトウェア開発者、OSS開発者

VPCのネットワークACLとセキュリティグループ - 2つの仮想ファイアウォールの違いと使い分け

どうも、Shinyaです。この記事では、Amazon VPCにおけるセキュリティの要となるネットワークACL(Access Control List)とセキュリティグループについて解説します。どちらもVPCの仮想ファイアウォールですが、動作レベルやステートの扱いが異なります。それぞれの特徴と使い分けを整理します。

この記事はこんな人にオススメ
  • VPCのセキュリティ構成を理解したい人
  • ネットワークACLとセキュリティグループの違いを整理したい人
  • AWSにおけるトラフィック制御の仕組みを学びたい人
  • VPCの仮想ファイアウォールの適切な使い分けを知りたい人
前提となる記事

この記事では、Amazon VPCの基本概念(サブネット、ゲートウェイなど)を理解していることを前提としています。

VPCにおける2つの仮想ファイアウォール

VPCでは、トラフィックを制御するためにネットワークACLセキュリティグループの2つの仮想ファイアウォールが提供されています。この2つは動作するレベルとステートの扱いが異なり、組み合わせて使用することで多層的なセキュリティを実現します。

ネットワークACL

ネットワークACLは、サブネットレベルでインバウンド(受信)とアウトバウンド(送信)のトラフィックを制御する仮想ファイアウォールです。ゲートウェイとサブネットの間で動作し、サブネットに出入りするすべてのトラフィックを検証します。

ネットワークACLの特徴

  • ステートレス: インバウンドとアウトバウンドの双方向で、サブネットの境界でリストの検証が必ず行われる。インバウンドで許可されたトラフィックであっても、アウトバウンドで再度検証される
  • デフォルトの動作: デフォルトのネットワークACLはすべてのインバウンド・アウトバウンドトラフィックを許可する
  • ルールの評価順序: ルール番号の昇順で評価され、最初にマッチしたルールが適用される
  • カスタムルール: 独自のルールを明示的に設定することで、トラフィック制御が可能

セキュリティグループ

セキュリティグループは、リソースレベル(EC2インスタンス、RDS、Lambda等の個々のリソース)でトラフィックを制御する仮想ファイアウォールです。サブネット内の特定のリソースに対して、許可するトラフィックを定義します。

セキュリティグループの特徴

  • ステートフル: インバウンドで許可されたトラフィックのレスポンスは、アウトバウンドルールに関係なく自動的に許可される。一度検証されたパケットは再検証されない
  • デフォルトの動作: すべてのインバウンドトラフィックを拒否し、すべてのアウトバウンドトラフィックを許可する
  • 許可ルールのみ: セキュリティグループでは許可ルールのみ設定可能で、明示的な拒否ルールは設定できない
  • カスタムルール: アクセスを許可するトラフィックのソース、ポート、プロトコルを指定できる

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

項目ネットワークACLセキュリティグループ
動作レベルサブネットレベルリソースレベル
ステートステートレス(双方向で検証)ステートフル(検証済みは再検証不要)
デフォルト動作全トラフィック許可インバウンド全拒否 / アウトバウンド全許可
ルールの種類許可と拒否の両方許可のみ
評価方法ルール番号順に評価すべてのルールを評価
適用対象サブネット内のすべてのリソース関連付けられた特定のリソース

使い分けの指針

  • サブネットレベルでのアクセス制御が必要な場合はネットワークACLを使用する。例えば、特定のIPアドレス範囲からのアクセスをサブネット単位で一括して拒否する場合に有効
  • 個々のリソースレベルでアクセス制御が必要な場合はセキュリティグループを使用する。例えば、特定のEC2インスタンスに対して特定のポートのみアクセスを許可する場合に有効
  • 多層防御の観点から、ネットワークACLとセキュリティグループの両方を適切に設定することが推奨される
責任共有モデルにおける注意点

AWSの責任共有モデルにおいて、EC2などのアンマネージドサービスにおけるネットワークACLとセキュリティグループの設定・管理はユーザー側の責任です。適切なトラフィック制御の設定は、セキュリティ確保のために不可欠です。

まとめ

この記事では、VPCにおける2つの仮想ファイアウォールであるネットワークACLとセキュリティグループについて解説しました。ネットワークACLはサブネットレベルでステートレスに動作し、セキュリティグループはリソースレベルでステートフルに動作します。サブネット単位での一括制御にはネットワークACL、個々のリソースに対するきめ細かい制御にはセキュリティグループを使用し、両者を組み合わせた多層防御でVPCのセキュリティを確保できます。


参考リンク:

免責事項:
当記事は管理人の開発時に書き留められたメモをもとにAIを活用して編纂されたものです。 管理人は記事の公開前に内容の校正・校閲を行い、記事の信頼性と正確性の向上に務めますが、それらを保証するものではありません。 また、当記事の編集時の誤字やコード例の不具合等によって読者が何らかの損害等を被った場合でも、管理人は一切の責任を負いません。 当記事に掲載したコンテンツの利用については自己責任でお願い致します。