【正解】B
【0からの解説】
①前提知識
・VPC ネットワーク: Google Cloud の VPC はグローバルなリソースで、IP アドレス範囲はリージョンごとのサブネットに割り当てます(選択肢の「/16 の VPC」は、VPC 全体で計画するアドレス空間を指していると読みます)。カスタムモード VPC では、サブネットの範囲を自分で設計できます。
・CIDR のサイズ: /24 は 256 個(Google Cloud では各サブネットで 4 個が予約されるため使用可能は 252 個)、/16 は 65,536 個の IPv4 アドレスです。
・VPC ファイアウォール ルール: 送信元を IP 範囲(サブネットの CIDR)、ネットワーク タグ、サービス アカウントなどで指定して、上り / 下りの通信を許可・拒否できます。
②要件の整理
・1,000 個を超える IP アドレス → /24 では不足、/16 なら十分
・層の分離: ウェブ層 ← インターネット、アプリ層 ← ウェブ層のみ、DB 層 ← アプリ層のみ
・コスト、複雑さ、管理のオーバーヘッドを最小化
③正解 B の理由
1 つのカスタムモード VPC に層ごとのサブネットを作り、たとえば「アプリ層サブネットへの通信はウェブ層サブネットの CIDR からのみ許可」「DB 層サブネットへの通信はアプリ層サブネットの CIDR からのみ許可」といったファイアウォール ルールを書けば、層ごとの分離が実現できます。VPC が 1 つなのでピアリングや共有 VPC の設定が不要で、ルールも 1 か所で管理でき、十分なアドレス空間も確保できます。
【誤りの選択肢】
A:/24 では使えるアドレスが約 250 個しかなく、1,000 個を超える IP アドレスという要件を満たせません。また共有 VPC は複数プロジェクトでネットワークを共有するための仕組みで、単一プロジェクトのこのケースでは不要な複雑さを加えます。
C:層ごとに VPC を分けて VPC ネットワーク ピアリングで接続すると、ピアリングの構成とファイアウォール ルールを 3 つの VPC で個別に管理する必要があり、複雑さと管理オーバーヘッドが増えます(VPC ピアリングは推移的でない点にも注意が必要です)。同じ分離は 1 つの VPC 内のサブネットとファイアウォール ルールで実現できます。
D:/24 の VPC では各層あたり約 250 個のアドレスしか使えず、層の規模によってはアドレスが不足するおそれがあります。さらに層ごとに VPC を分けるなら相互接続(ピアリングなど)も必要になるのに、その手段が示されておらず、異なる VPC 間ではネットワーク タグを参照したファイアウォール ルールで通信を制御することもできません。
【参考】
サブネット | Virtual Private CloudVPC ファイアウォール ルール | Cloud Next Generation Firewall