とあるところでVPCの設計について問われて、お恥ずかしながら全然答えられなかったのでちょっと自分として考えをまとめておかなきゃと思い、調べつつもここに書き残していきます。
あとGoogle Cloudを普段利用しているので、Google Cloud前提で書き残します。
VPCとは?
ここを読みましょう。(丸投げ)
まずやること
まずはPJを立てた段階でデフォルトVPCがありますので、こちらを削除しましょう。
デフォルトVPCの問題点としては以下があります。
すべてのリージョンにサブネットが敷かれている

こちらはデフォルトVPCでのサブネットの様子です。
問題としては、
- アドレス空間を無駄に使っているの
- 使っていないリージョンから攻撃の足がかりにされたりしてしまうセキュリティリスクを抱えること
ですかね(他にもあるかな?
デフォルトのファイアウォールルールによるリスク
デフォルトのファイアウォールルールでは4つのルールが割り当てられています。
- default-allow-rdp:TCPポートの3389を開いていて、RDPアクセスを許可しています
- リモートデスクトップ使わないなら閉じたほうがよい
- default-allow-internal:VMインスタンス間での通信を全通し
- 横展開で攻撃されてしまう可能性が考えられるので、当たり前ですが使うポートだけ開いときましょう
- default-allow-ssh:TCPポートの22を開いていて、主にSSHで利用されます
- 削除しておいて、オフィスやVPNのみ通すなど絞っときましょう
- 度々、OpenSSHの脆弱性で取り沙汰されますね
- default-allow-icmp:ICMPプロトコル通してるルールで、pingとかのやつっすね(雑覚え
- 基本、閉じといたほうが良いかなと
どれも対応しといた方が良いですねという感じです。
要件をまとめる
ここから先が正直全然経験なくて、ふわふわしてるところ。
どういうサービスを組み立てていくのか要件をまとめていきます。
- 利用目的:ファイアウォールルールなどに影響
- 利用する人
- どれくらいの人数が使う:サブネットサイズに影響
- 利用場所は?日本?海外?:リージョンに影響
- 機密情報を扱うかどうか:限定公開アクセスに影響
とかですかね?
先述の問われた時には「既存の認証認可がAzureにある場合」についても要件があったのですが、これはファイアウォールルールでそっちのプラットフォームからの通信を開いておくことになるかなと。
設計パターン
今回、調べてみて初めて知ったのですが、Google CloudではVPC設計に関するベストプラクティスをまとめてくれています。
これを見ていくと、「VPC設計パターン」があり、以下の3つを挙げています。
- 単一VPC:共通要件を持つリソースの場合、単一のVPC ネットワークから始める
- 共有VPC:複数のチームがある場合、VPCは同一のものを共有し、サブネットでチームごとの権限を分割していく
- 複数VPC:IAMの制御や、機密データの取扱に関する制限によってVPCを複数作成し、割り振っていく
以下はClaudeくんがパターンごとにマトリクスを作ってくれました(かしこい
| 要素 | 単一VPC | 共有VPC | 複数VPC |
|---|---|---|---|
| 管理複雑性 | 低 | 中 | 高 |
| スケーラビリティ | 限定的 | 高 | 非常に高 |
| セキュリティ分離 | 低 | 中 | 高 |
| 初期コスト | 最低 | 中 | 最高 |
| 運用コスト | 最低 | 中 | 高 |
| 運用オーバーヘッド | 最小 | 中 | 最大 |
| チーム間協調 | 高 | 中 | 低 |
| 設定の簡単さ | 非常に簡単 | 中程度 | 複雑 |
共有VPCのところでの、Conditionを使ったサブネットに合わせての権限付与は知らなかったので勉強になりました🙇♂️
複数VPC間接続の方法
ベストプラクティスに書いてあるんですが、以下の5つのパターンがあります。
- Network Connectivity Center VPC スポーク:複数のVPCを自動で繋ぐ。Google推奨。
- VPC ネットワーク ピアリング:2つのVPC間を最高速・最安で直結。シンプル!
- 外部ルーティング(パブリック IP または NAT ゲートウェイ):グローバルを通して接続。速度・セキュリティが・・・
- Cloud VPN:VPNを通した接続。料金が割かし高い。
- 複数ネットワーク インターフェース(マルチ NIC):複数のNICをアタッチしたVMインスタンスを通して接続。最大8までアタッチ可能。選択肢としてはほぼ無さそう。
Claudeくんが出してくれたコスト感がこんな感じで、もしやるとしたらNCCが第一候補になったりするんでしょうかね?(教えてプロの人
| 接続方法 | 初期構築 | 月額基本料 | 転送料金 | 運用工数 | 総コスト感 |
|---|---|---|---|---|---|
| NCC | 低 | 低 | 中 | 低 | ⭐⭐⭐ |
| ピアリング | 最低 | 無料 | 最低 | 最低 | ⭐ |
| 外部ルーティング | 無料 | 無料 | 高 | 低 | ⭐⭐ |
| Cloud VPN | 中 | 中 | 高 | 中 | ⭐⭐⭐⭐ |
| マルチNIC | 高 | 高 | 低 | 高 | ⭐⭐⭐⭐⭐ |
原則
その他、いくつかの原則に従うと良さそう。
VPCモードは自動ではなくカスタムが良い
- 自動だと不要なリージョンにもサブネットが作成される
- オンプレミスの企業ネットワークと接続している場合、IP範囲が重複する可能性がある
- 自動モードだと全リージョンで同じサブネット名になってしまう。カスタムモードではそれぞれに一意に名前をつけれる
- 自動モードではサブネットサイズが
/20で固定 - 自動モードで割り振られたIP範囲が重複することによるVPCピアリングの利用不可
サブネットは広めに取ろう
扱うリージョン内で、アプリケーションごとにサブネットを広めに割り振っていくのがよいとのこと。
例えば、「アプリケーション用サブネット」「DB用サブネット」などなど。
機密データを扱う時にはVPC Service Controlsを利用しよう
機密データを扱うサービス(Storageなど)には、VPC Service Controlsを用いて特定のネットワークやアカウントからしかアクセスできないように制御したりサービス境界を引くことが推奨されています。
正直ここまでの機密情報を扱うことが今までなかったもので、ベストプラクティス読んで調べてみるまで存在を知りませんでした。金融や医療分野などでは使いそうですね👀
VPC フローログを調整しよう
VPC フローログは、VPC内のネットワークトラフィックをロギングすることができ、ネットワーク フォレンジックやFlow Analyzerを使ったトラフィックの可視化などできます。
サブネットごとに有効・無効が設定できたり、サンプリングもできますので結構柔軟に扱えますね。ログ生成や、保存コストがかかるので、集計間隔が5秒なので15分とか伸ばしたり、サンプリングはしておいた方が良さそうです。
おわり
こんなところですかね?他にも色々あるとは思いますが、それはまた別の機会に勉強しておきます🙏
一旦、大まかなところは復習と学習ができたのでヨシ👈️