VPCのアクセス制御(ルートテーブル / SG / NACL)

VPC内通信を制御する3要素(ルートテーブル / SG / NACL)の役割と使い分けを整理します。

学習順Step 8 / 46サービスVPC試験ドメインセキュリティ

🔰 初心者向け:VPCのアクセス制御

VPCでは、通信のルート設定やアクセス制御のために、主に以下の3つの仕組みが用意されています。

  • ルートテーブル
  • セキュリティグループ
  • ネットワークACL

1. ルートテーブル

VPC内の通信は、指定されたCIDR表記のアドレスごとに通信ルートを定義する「ルートテーブル」によって制御されます。ルートテーブルはVPC作成時に自動でメインルートテーブルが作成され、必要に応じてカスタムルートテーブルも追加できます。

ルートテーブル設定例

  • 各サブネットは1つのルートテーブルに関連付けが必要
  • サブネットが特定のルートテーブルに明示的に関連付けられていない場合、メインルートテーブルが自動的に適用
  • 1つのサブネットに複数のルートテーブルは関連付け不可
  • 1つのルートテーブルに複数サブネットの関連付けは可能

ルートテーブルの設定例

宛先 ターゲット
10.0.0.0/16 local
0.0.0.0/0 igw-xxxxxxx

2. セキュリティグループ

セキュリティグループは、Linuxのファイアウォール機能「IPTables」に似た仮想ファイアウォールです。インスタンス単位で関連付け、許可する通信(プロトコル・ポート・送信元/宛先)をルールとして定義します。

セキュリティグループ設定例

  • ステートフル(許可した通信の応答は自動的に許可)
  • インバウンド・アウトバウンド両方のルールを設定可能
  • 複数のセキュリティグループを1つのリソースに関連付け可能
  • ルールは「許可」のみ(明示的な拒否は不可)

セキュリティグループの設定例

タイプ ポート範囲 ソース
HTTP TCP/80 0.0.0.0/0
HTTPS TCP/443 0.0.0.0/0
SSH TCP/22 0.0.0.0/0
PostgreSQL TCP/5432 10.0.1.0/24

3. ネットワークACL

ネットワークACL(Access Control List)は、サブネット単位で関連付けるネットワークレベルのファイアウォールです。受信・送信の両方向の通信をルールで制御します。

ネットワークACL設定例

  • サブネット単位で適用(関連付けたサブネット内の全リソースに適用)
  • ステートレス(応答通信も明示的に許可が必要)
  • ルールは「許可」と「拒否」両方を設定可能
  • セキュリティグループで許可できない特定のクライアントのブロックなどに有効

ネットワークACLの設定例

タイプ ポート範囲 ソース 許可/拒否 方向
SSH TCP/22 10.0.0.0/0 Allow Inbound
SSH TCP/22 10.0.0.0/0 Allow Outbound
SSH TCP/22 0.0.0.0/0 Deny Inbound
SSH TCP/22 0.0.0.0/0 Deny Outbound

注意点

  • ネットワークACLは応答通信を許可する場合、戻り宛先IPアドレスとポートの指定が必要(ネットワークACLはステートレス)
  • セキュリティグループは「許可」のみ、ネットワークACLは「許可」と「拒否」両方設定可能
  • 特定のクライアントのアクセスをブロックしたい場合はネットワークACLを利用

重要ポイント

  • ルートテーブルは宛先ごとの経路制御
  • セキュリティグループはインスタンス単位のステートフルFW
  • NACLはサブネット単位のステートレスFW
  • SGはAllowのみ、NACLはAllow/Deny両方
  • 関連付けの単位(サブネット/リソース)を押さえる

このトピックの学習を完了しますか?

完了状態はいつでも切り替えられます