AZ700-CORE#65
新規 Hub-Spoke 環境で、Web/App/DB 3 層構成の NSG をベスト プラクティスに沿って設計する手順を順序付けてください。
- 各層 (Web/App/DB) の通信要件を特定し、許可すべき送受信ポートを文書化
- ASG「web-tier」「app-tier」「db-tier」を作成し、各層の VM NIC に関連付け
- 各サブネット用の NSG を作成 (web-nsg、app-nsg、db-nsg)
- NSG ルールを ASG ベースで定義 (例: app-nsg では Source=web-tier、Dest=app-tier、Port=8080 のみ許可)
解説
【正しい順序】
- ステップ 1: 通信要件の特定 + 文書化
- ステップ 2: ASG 作成 + VM NIC 関連付け
- ステップ 3: NSG 作成 (層別)
- ステップ 4: ASG ベース ルール定義
【各ステップの理由】
- ステップ 1: 要件特定: 「最小権限」(Least Privilege) の原則に基づき、必要最小限の通信ポート + 方向を最初に確定します。例: Web→App は 8080、App→DB は 1433、外部→Web は 80/443、それ以外はすべて拒否します。文書化により後の運用変更時の判断材料となります。
- ステップ 2: ASG 関連付け: VM の役割を ASG として表現することで、後の NSG ルールが IP に依存しません。スケール アウト時も自動追従。
- ステップ 3: NSG 作成: NSG はサブネット単位で関連付けるのが推奨 (VM 単位 NSG はルール管理が散在する原因)。層別サブネット + 層別 NSG で関心の分離します。
- ステップ 4: ASG ベース ルール: Source/Destination に ASG を指定することで、ルールが意図的に読みやすくなり、将来の保守性向上。「app-nsg の Inbound: Source=web-tier ASG、Dest=app-tier ASG、Port=8080、Allow」のようなルール。
【最小権限の典型 NSG ルール例】
| NSG | 方向 | Source | Dest | Port | Action |
|---|---|---|---|---|---|
| web-nsg | Inbound | Internet | web-tier ASG | 80/443 | Allow |
| app-nsg | Inbound | web-tier ASG | app-tier ASG | 8080 | Allow |
| db-nsg | Inbound | app-tier ASG | db-tier ASG | 1433 | Allow |
【誤った順序の問題点】
- ❌ NSG ルールを ASG なしで作成: 後から ASG を導入する場合、ルール全書き換えが必要になる。
- ❌ 検証を最後に行わない: 本番運用後に通信問題が発覚すると、サービス停止やインシデント対応が必要に。
- ❌ 要件特定をスキップ: 過度に許可的なルールが設定され、セキュリティ ポスチャが低下。

コメント