導入
VPCの中にリソースを置いたら、次は「誰の通信を許可し、誰を拒否するか」を決める番です。AWSにはこの目的のための仕組みが2種類あり、役割が異なります。
説明
セキュリティグループは、EC2インスタンスなど個々のリソース単位にかける仮想的なファイアウォールです。
**ネットワークACL(Network Access Control List)**は、サブネット単位にかけるファイアウォールです。
両者の違いは試験で頻出のポイントなので、表で比較しておきましょう。
| 観点 | セキュリティグループ | ネットワークACL |
|---|---|---|
| 適用範囲 | インスタンス単位 | サブネット単位 |
| ルールの種類 | 許可ルールのみ設定できる | 許可・拒否の両方を設定できる |
| 状態管理 | ステートフル(行きの通信を許可すると、戻りの通信は自動的に許可される) | ステートレス(行きと戻りを別々にルール設定する必要がある) |
| ルールの評価 | すべてのルールを評価してから判定 | 番号の若い順にルールを評価し、最初に一致した時点で確定 |
flowchart LR
Internet(("インターネット")) --> NACL["ネットワークACL\n(サブネットの門番)"]
NACL --> SG["セキュリティグループ\n(インスタンスの門番)"]
SG --> EC2["EC2インスタンス"]
通信は、まずサブネットの門番であるネットワークACLを通過し、次にインスタンスの門番であるセキュリティグループを通過して初めてリソースに届きます。基本的な用途にはセキュリティグループだけで十分なことが多く、ネットワークACLは「特定のIPアドレスを明示的に拒否したい」といった追加の防御層として使われます。
読んでみよう
「セキュリティグループ=ステートフルで許可のみ・インスタンス単位」「ネットワークACL=ステートレスで許可も拒否も・サブネット単位、番号順評価」——この対比をセットで丸暗記しておくと得点源になります。