Skip to content

Latest commit

 

History

History
110 lines (76 loc) · 10 KB

File metadata and controls

110 lines (76 loc) · 10 KB

ARCHITECTURE AND DESIGN PRINCIPLES

この手順でできるもの

現場視点

Proxmox VEサーバ(またはProxmoxクラスタ)で

  • プロジェクトごとにL2レベルで完全分離されたネットワークに開発用VM構築、プロジェクト別VPN付き開発環境が手に入ります。
  • 既設(企業/家庭)LANは汚さないゼロトラスト構成。既存LANにはVPNトンネル、DNS問い合わせ以外のパケットは通りません。
  • 分離されたPJごとの開発環境をVPNで安全にリモートチームメンバへ公開
  • VPNクライアントユーザの所属、ユーザ管理、VPN接続クライアント証明書生成の自動化。GUI管理。配布も簡単。
  • 各PJ毎のVPNサーバ(起動停止)もGUIから可能。VPNプロトコルはOpenVPNまたはWireguardを使用。
  • VLAN、ECMP、BGP などに対応したエンタープライズグレードのネットワーク機器がなくても、複数ノードにまたがる L2 分離ネットワークを構成できます。
  • 【Corporate Edition 限定】 セルフケアポータル。これによりVPNクライアントも含むプロジェクトメンバが、自分たちのプロジェクトネットワーク内で自由にVMの作成・削除・起動・停止・スナップショット作成・バックアップ作成などを実施できるようになります。管理者の手を借りずに実現可能。

管理者・経営者視点

  • 開発パートナー/オフショア/フリーランスにも必要な環境だけ見せて接続させる事でセキュリティ向上、他PJの情報漏洩問題を仕組みで回避
  • 中小企業・ソフトハウス・スタートアップが自前のプライベート開発クラウドを持てる
  • スモールスタートからスケールアウトまで対応。最初は1台のProxmoxノードで低コストに始め、将来的にはマルチノードクラスタへ段階的に拡張可能。
  • パブリッククラウドを開発者に自由に使用させるより安全で、速くて安い。(仕組みでしばりを入れられる)
  • サーバ1台(NUCクラスのMini PC)+OSSだけでパブリッククラウドで数十万/月クラスの仮想環境を入手可能。クラウド費用ほぼゼロ、必要なのは開発用サーバ+電気代千円程度/月(Mini PCの場合)
  • サーバさえあれば、ほぼ無償でセキュア分散開発環境、砂場(サンドボックス)環境、デモ環境、さらにはステージング環境が手に入る。

この手の事を製品で行おうとすると企業グレードネットワーク機器の導入費、保守コスト(数百万、数千万~)が発生します。 これらコストの削減が可能。多少語弊があるかもしれませんが参考までに。

動機

課題: Proxmoxにおける「フラットネットワーク」の罠

VPN経由でチームメンバーにProxmoxの開発環境を共有しようとしたとき、よくある問題に直面しました。

  • 可視性とプライバシーの衝突: 一般的なVPN構成だと見えすぎます。各メンバーには自分の案件VMだけを見せ、個人ラボや他社案件、ホスト基盤は見せたくありませんでした。
  • 運用負荷: 複数ユーザー×複数案件のVPNプロファイルを手作業で発行・撤回・整理するのはスケールしません。手間が大きく、ミスも起きやすいです。
  • 隔離ギャップ: Proxmoxは強力ですが、テナント間で本当のL2隔離を保ちつつVPNアクセスを簡単にするには、SDNとファイアウォールを手作りする必要があり、再現性のある運用が難しいです。

解決策: 「マルチバース」を作る

私が欲しかったのは次のようなツールでした。

  • 案件ごとに安全に隔離された「バブル」(テナント)を作る
  • そのバブルに専用VPNゲートウェイを接続する
  • VPNプロファイル管理の面倒ごとを肩代わりする

見つかりませんでした。

そこで Zelogx MSL Setup を作りました。

Zelogxは、Proxmox VE環境をマルチテナントのラボ提供基盤へと変換します。単一ノードからクラスタまでスケール可能で、インフラ全体を晒すことなく特定のリソースへ安全にアクセスさせたいエンジニアを対象としています。

本アーキテクチャの利点

高可用性・高拡張性・高保守性

  • floating VTEP により、VXLAN ゲートウェイを担うノード障害時も、他ノードで自動的にゲートウェイを引き継ぐことができます。
  • Pritunl VM は、必要に応じて共有ストレージと Proxmox HA を組み合わせることで、HA 構成を取ることができます。ただし、ノード障害時にはクライアントの再接続が必要です。
  • Proxmox HA により、VM / CT がどのノードへフェイルオーバーしても、隔離ネットワークとの接続性を維持できます。
  • これにより、専用のエンタープライズ向けネットワーク機器なしでも、継続運用しやすい構成を実現できます。

設計ポリシー

実行時オーバーヘッドより事前構成

Zelogx MSL Setup は、実行時オーバーヘッドを最小限に抑える構成ツールとして設計しています。

  • セットアップ時に構成を作り込む方式: SDN オブジェクト、隔離ルール、VPN ゲートウェイ、およびクラスタ環境で必要となる関連設定は、セットアップ時にまとめて構成します。
  • MSL独自の常駐サービスを持たない: セットアップ完了後も、MSL Setup 自身が独自の制御プレーンや常駐デーモンとして動作し続けることはありません
  • 既存基盤の仕組みを活用: 実行時の動作は Proxmox、Pritunl、keepalived など既存コンポーネントの仕組みに委ねることで、構成の単純さと保守性を維持します

Pritunl自動化(VPNプロビジョニング)

VPN側は公式Pritunl HTTP APIで完全自動化しています。

VPNセットアップ時にMSL Setupが行うこと:

  1. cloud-initでPritunl VMを起動
  2. Pritunlサービスが起動するまで待機
  3. VM内で設定されたPritunl API(key/secret)を使って次を実行
    • プロジェクト数分のOrganizationを作成
    • 必要なServer(OpenVPN / WireGuard)を作成
    • OrganizationをServerに関連付け
    • 構成したServerを起動

Web UIの自動操作は行いません。すべてドキュメント化されたREST APIでプロビジョニングします。

Proxmoxホスト側から見ると、Pritunl VMはブラックボックスのVPNゲートウェイとして扱われます。

  • ルーティングと隔離はProxmox SDNとnftablesが担当
  • PritunlのAPIはVM内部でトンネル終端とアクセス制御を定義するためだけに使用

比較: 個人・小規模オフィス環境における Proxmox マルチテナント構築の代替手段

Proxmox でマルチテナント環境を構築する方法はいくつか存在します。
以下の表では、それぞれの方式の実務的な違いをまとめています。

方法 学習コスト ネットワーク分離 自動化 個人向け適性
RBAC + Resource Pools なし GUIのみ 限定的
SDN + OPNsense 非常に高い 強い 手動セットアップ 部分的
MSL Setup Basic 低い 強い 手動(手順書完備) 非常に高い
MSL Setup Personal 極めて低い 強い 完全自動化 非常に高い

各アプローチのより詳しい説明については、Proxmox マルチテナントガイド を参照してください。

想定するターゲット

  • うちはもう自由にAWSにインスタンス造らせて、高速分散開発環境構築してやらせてますから。という管理者層、経営層のかた。コストやセキュリティは?と聞かれると担当者にヘルプの視線をおくる管理・経営層の中小ソフトハウス。
  • うちは自宅に開発・ラボ環境あるんで、そこでガンガンVM建てて開発してます。他のチームメンバ?それぞれ工夫してやってるんじゃないですか?このようにセキュリティ方針に統制が取れていない開発環境。
  • 最近はWSLでWindows PCにLinux VM建ててやってますよ。PC落としたときのセキュリティ?Bitlockerで安全対策してます。的な。。。それぞれ異なる環境で開発。結合試験は時間がかかってしまいます。
  • ラージエンプラでも、そうですね。サーバはサーバルームにあり、厳重に入退室管理。基本開発環境には個人情報入ってないです。個人とはNDAも結んでそこで縛り入れてます。勿論、VDIからしかログインできません。でもVMのrootパスワードは全部一緒。おかれてるセグメントも全部一緒だからログインしようと思えば?出来ちゃいますね汗。というようなフラットネットワークに複数プロジェクトのVM設置を許容していてる組織。
  • 同様にラージエンプラ。必要なプロジェクトは個別にVPN建ててますね。VMにログインできれば他のVMにも入れちゃう?確認してないですが、そんな事ないと思いますよ。これまでそういう事故は発生してません。セキュリティ教育も年2回実施してますし。―― このように、仕組みではなく運用や慣習に安全性を依存している組織。