VPCセキュリティ設計 — セキュリティグループ・NACL・多層防御
ステートフル/ステートレスの違い、多層防御設計、NATゲートウェイ配置を解説します。
ネットワークレイヤーでのアクセス制御の基本となるのが、セキュリティグループと ネットワークACL (NACL) です。この2つの違いを正確に理解することが、 VPCセキュリティ設計の土台になります。
SAA レベル:基礎概念
セキュリティグループとNACLの違い
| 項目 | セキュリティグループ | ネットワークACL |
|---|---|---|
| 適用単位 | インスタンス(ENI)単位 | サブネット単位 |
| ステート | ステートフル(戻りの通信は自動許可) | ステートレス(戻りの通信も明示的なルールが必要) |
| ルール | 許可(Allow)のみ | 許可・拒否(Deny)の両方が可能 |
| 評価順序 | 全ルールを評価し、1つでもマッチすれば許可 | 番号の小さい順に評価し、最初にマッチしたルールを適用 |
SAA 試験のポイント
セキュリティグループがステートフルであるため、インバウンドで許可した通信への戻り(レスポンス)は、アウトバウンドルールを設定しなくても自動的に許可されます。一方、NACLはステートレスなため、インバウンドを許可する場合、対応するアウトバウンド(一時ポート範囲を含む)も明示的に許可する必要がある、という違いがSAA最頻出の論点です。
プライベートサブネットとNATゲートウェイ
- パブリックサブネット: インターネットゲートウェイへの経路を持つサブネット
- プライベートサブネット: インターネットゲートウェイへの直接経路を持たないサブネット
- プライベートサブネットのリソースが外部への通信(アップデート取得等)をする場合、NATゲートウェイを経由する
SAP レベル:高度な設計シナリオ
多層防御(Defense in Depth)の設計
SAP 試験のポイント
SAPレベルでは、セキュリティグループとNACLをそれぞれ独立した防御層として組み合わせる設計が求められます。「セキュリティグループだけで十分」という判断ではなく、NACLをサブネット単位の大まかなブロックルール(既知の悪意あるIPレンジの拒否等)として活用し、セキュリティグループをインスタンス単位のきめ細かい許可ルールとして使う、という役割分担が典型的な多層防御設計です。
NATゲートウェイの高可用性配置
SAP 試験のポイント
NATゲートウェイは単一AZのリソースです。1つのNATゲートウェイに複数AZのプライベートサブネットから依存させると、そのAZの障害時に他のAZのリソースまでインターネットアクセスができなくなります。SAPレベルでは、各AZに個別のNATゲートウェイを配置し、各AZのプライベートサブネットは同一AZ内のNATゲートウェイのみを使う設計が高可用性のベストプラクティスとして問われます。
| 設計 | 可用性 | コスト |
|---|---|---|
| 単一NATゲートウェイを全AZで共有 | 低(AZ障害でクロスAZ通信断) | 低い |
| 各AZに個別のNATゲートウェイ | 高 | AZ数分のコストが発生 |
設計上の落とし穴
コスト削減のために単一のNATゲートウェイで全プライベートサブネットをカバーする設計は、そのAZが停止した際に、他のAZの正常なリソースまでインターネットアクセスができなくなるという、可用性上の重大なリスクを見落としがちです。本番環境ではAZごとのNATゲートウェイ配置が原則です。
セキュリティグループの参照設計
- セキュリティグループは、IPアドレスだけでなく他のセキュリティグループをソースとして指定できる
- 「WebサーバーのセキュリティグループからのみDBサーバーへのアクセスを許可する」という設計は、IPアドレスのハードコードを避け、Auto Scalingでインスタンスが入れ替わっても自動的にルールが機能する、スケーラブルな設計として推奨される
VPCフローログによる可視化
- VPCフローログを有効化することで、セキュリティグループやNACLでブロック・許可された通信を記録し、意図しない通信パターンの検出や、トラブルシューティングに活用できる
まとめ
- SAA: セキュリティグループ(ステートフル、インスタンス単位)とNACL(ステートレス、サブネット単位)の違いを理解する。
- SAP: NACL+セキュリティグループによる多層防御設計、NATゲートウェイのAZごとの高可用性配置、セキュリティグループ参照によるスケーラブルなルール設計ができる。
ここまでで 2-4 セキュアなソリューション設計 の全4記事が完了しました。次は 2-5 コスト効率の高い設計 に進みます。