CLIを超えて:Zero Trustをアプリコードに直接埋め込む方法

Quick answer
Beyond CLI: Embed Zero Trust in App Code with Zrok & OpenZiti: MCP tunnel answer
MCP tunneling gives a local MCP server a public HTTPS endpoint so AI tools can reach it during development without deploying the server first.
What is MCP tunneling?
MCP tunneling exposes a local Model Context Protocol server through a public endpoint so compatible AI tools can connect during development.
When should I use InstaTunnel for MCP?
Use InstaTunnel Pro when a local MCP endpoint needs public HTTPS access, stable routing, and stream-friendly tunnel behavior.
長年、「ローカルサービスをインターネットに公開するにはどうすればいいか」の標準的な答えは、単一の端末コマンドでした。ポートにトンネルツールをポイントして公開URLを取得するだけです。そのワークフローは高速ですが、見落としやすいアーキテクチャ上のトレードオフに依存しています。標準のリバースプロキシトンネルは、ライブになった瞬間にスキャナーに発見されるリスニングエンドポイントを持つことになります。
Webhook受信やデモにはこのリスクは許容範囲かもしれませんが、プロダクションデータベースや内部管理パネル、独自モデルエンドポイントと通信するサービスにとっては、より大きな攻撃対象面となります。多くのチームがよりシンプルな代替手段を持っている場合、これは望ましくない状況です。
これがOpenZitiエコシステムと、その上に構築された共有ツールzrokの狙いです。”公開URL”を唯一のトンネルの形と考えるのではなく、OpenZitiはゼロトラストのアイデンティティと暗号化をネットワーク、ホスト、アプリケーションの3層にプッシュします。この仕組みの動作、zrokの公開・プライベート共有モードのマッピング、最近のv2.0リリースでの変更点、そして2026年のAIエージェントとMCPインフラに向けたエコシステムの展望について解説します。
信頼境界の移動:アーキテクチャの変化
OpenZitiは、NetFoundryが作成・支援するオープンソースのゼロトラストネットワーキングプラットフォームです。その前提はシンプルです:ネットワークサービスは、デバイスが適切なLANにいる、またはVPN接続があるだけでアクセス可能であってはなりません。OpenZitiネットワークでは、すべての接続—人間、マイクロサービス、自動化されたワークロード—は、ユニークな暗号識別子(x509証明書に裏付けられた)を持ち、そのアイデンティティは明示的なポリシーと照合されるまで確立されません。
仕組みはプライベートのオーバーレイネットワークを通じて動作します—エッジルーターのメッシュファブリックです:
- エッジルーターはエントリーポイントと暗号化されたデータプレーンを形成します。公開向けルーターはインターネットからの着信接続を受け入れ、プライベートルーターは信頼されたネットワークゾーン内に配置されます。
- エンドツーエンドの暗号化はデフォルトで有効です。OpenZitiのSDKは相互TLSを使用し、ペイロードの暗号化にはlibsodiumを層として用います。これにより、トラフィックは中間の侵害されたルーターであっても解読不能です。
- スマートルーティングは条件の変化に応じてメッシュ内の経路を再計算し、劣化または過負荷のルーターを迂回します(ただし、マーケティング資料ではこれを「BGPを打ち負かす」と表現していますが、OpenZitiのドキュメントはその主張をしていません。ファブリックの経路選択はオーバーレイ層で動作し、既存のインターネットルーティングと競合しません)。
3つの展開層
OpenZitiの公式ドキュメントは、単一のツールと一つの統合パスではなく、段階的に採用するプラットフォームであると明示しています。3つの層を直接挙げています:
1. Zero Trust Network Access(ゼロトラストネットワークアクセス):OpenZitiエッジルーターは信頼されたネットワークゾーンの境界に配置され、認証されたトラフィックはオーバーレイに入り、レガシーサービスが存在するプライベートネットワークから出ます。コードやアプリケーションの変更は不要です。既存インフラに触れずにゼロトラストアクセスを実現したい組織向けです。
2. Zero Trust Host Access(ゼロトラストホストアクセス/トンネラー):ターゲットサービスと同じホスト上で動作する軽量なOpenZitiトンネラーです。Linux、Windows、macOS、iOS、Androidに対応。トンネラーはトラフィックを透過的にインターセプトし暗号化します。サービス側はlocalhostからの接続のみ受け入れれば良く、コード変更は不要です。信頼境界はネットワーク全体からホストOSに縮小します。
3. Application Access(アプリケーションアクセス/SDK):最も強固な姿勢であり、この記事の主題です。OpenZiti SDKをクライアントやサーバーコードに直接埋め込みます。アプリケーション自体が暗号識別子を保持し、インプロセスで暗号化を行います。リスニングポートは一切不要です。サービスは”ダーク”状態で、スキャンやプローブの対象になりません。
SDKは7言語対応です:Go, C, Python, Node.js, Java/Kotlin, Swift, C#/.NET(openziti/zitiおよび各言語SDKリポジトリで確認済み)。また、ブラウザ向けJavaScript SDKもあり、クライアントインストール不要のゼロトラストWebアプリを提供します。これにより、CLI中心のトンネリングツールの多くが対応しきれないカテゴリもカバーします。
多くのチームは既存サービスに対してトンネラーから始め、数分で展開可能です。新規や高セキュリティ、グリーンフィールドの作業にはアプリケーション埋め込みSDKに移行し、攻撃対象面を縮小します。
zrok:OpenZiti上に構築された共有層
IDやエッジルーターの手動設定は本質的にインフラ作業であり、多くの開発者はローカルサーバーをチームメイトと共有するためだけにその手間をかけたくありません。zrokはその摩擦を取り除くためのツールです。オープンソースの”zitiネイティブ”ピアツーピア共有ツールで、IDベースのオーバーレイをプロビジョニングし、シンプルなクラウドリレーではなく、1コマンドで”公開URL”を取得できる体験を提供します。
機能比較
| 機能 | 従来のクラウドプロキシ(例:ngrok) | zrok(OpenZitiファブリック) |
|---|---|---|
| コアアーキテクチャ | 中央集権型HTTP/TCPリレー | 分散型、IDベースのゼロトラストオーバーレイ |
| ライセンス | プロプライエタリ、クローズドソース | オープンソース(Apache 2.0)、セルフホスト可能 |
| インバウンドポート | パブリックリスナー経由でエンドポイントを公開 | アウトバウンドのみの接続、マシン側にインバウンドポート不要 |
| リソース共有 | 主にHTTPエンドポイント | HTTP/TCP/UDP、ファイル/ドライブ共有、WebDAVネットドライブ |
| 無料プラン | ベンダーとプランによる | 5 GB/日データ転送、最大25環境、50共有バックエンド、50プライベートフロントエンド |
| 初回アクセス時の摩擦 | 未認証無料アカウントのフィッシング対策インタースティシャル | 同様に、未認証無料アカウントにインタースティシャルを表示。カード認証で解除可能 |
この最後の項目は特に重要です。zrokはngrokだけに特有の摩擦を免除しません。両ツールとも一時的な無料URLのフィッシング対策のために最初の訪問警告ページを表示します。
公開URLとプライベートピアツーピア共有
zrokは従来の公開URLワークフローをサポートします—zrok share public http://localhost:3000はhttps://your-share.share.zrok.ioのようなHTTPS URLを提供し、StripeやGitHubのWebhookテストや非技術的クライアントへのUIデモに便利です。
差別化ポイントはプライベート共有です。これにより、公開URLやDNSレコードは一切作成されません:
- ホストは
zrok share private http://localhost:8080を実行し、一意のエフェメラルアクセス・トークンを取得します—URLではありません。 - そのトークンは信頼できるチャネル(暗号化チャットやシークレットマネージャ)を通じて送信されます。
- 受信者は自分のマシンで
zrok access private <トークン>を実行します。 - zrokは受信者側にローカルプロキシ(例:
http://localhost:9090)を立ち上げ、アイデンティティ認証済みのオーバーレイを通じてホストのサービスにトンネルします。
プライベート共有には公開フロントエンドやDNSレコードは一切作成されないため、スキャナーやボットが見つけるものは何もありません。接続は認証されたエンドポイント間だけに限定されます。
zrokはまた、OpenZiti Go SDKを基盤とした独自のSDKも提供しており、CLIに頼らずに共有機能を自作ツールに組み込みたいチーム向けです:
// 有効なzrok環境をロード
root, err := environment.LoadRoot()
// ローカルリソースのプライベート共有をリクエスト
shr, err := sdk.CreateShare(root, &sdk.ShareRequest{
BackendMode: sdk.TcpTunnelBackendMode,
ShareMode: sdk.PrivateShareMode,
})
// そのリソースへの接続を受け入れる
listener, err := sdk.NewListener(shr.Token, root)
zrok v2.0:実際に何が変わったのか
zrokは2026年に大規模なv2.0リリースを行いました。既存のチュートリアルやスクリプトがv1の構文を参照していることもあり、変更点を正確に理解することが重要です:
- バイナリは
zrok2になりました。 これは意図的な選択で、v1とv2を並行して動作させ、移行の干渉を避けるためです。v2は独自の環境ディレクトリ(~/.zrok2)と環境変数プレフィックス(ZROK2_*)、別のLinuxパッケージとsystemdユニット(zrok2、zrok2-agent、設定は/etc/zrok2)を持ちます。zrok2 enableで新しいv2環境を有効化可能です。 - 予約共有は名前空間/名前モデルに置き換えられました。 旧
zrok reserve/zrok release/zrok share reservedコマンドは廃止され、新たにzrok2 create shareとzrok2 delete shareが公開・プライベート共有を管理します。zrok2 modify name -rでエフェメラル共有を一時的に永続化できます。 - VPNバックエンドモードは削除されました。 以前のバージョンでは
--backend-mode vpnオプションがありましたが、v2ではTUNデバイスライブラリの依存関係の問題により削除されました。これにより、その機能は利用できません。
インストールと導入
macOSとLinuxでは、v2ラインのHomebrew公式は次の通りです:
brew install zrok2
(元のv1zrokは引き続き利用可能です。)Windowsでは、zrok GitHubリリースページから直接最新リリースを取得するのが最も確実です。v2バイナリ用の公式Scoopバケットのメンテナンス状況は未確認のため、以前のガイドのようにinstallコマンドを推奨しません。
インストール後は:
zrok2 invite # 無料のzrok.ioサービスに登録(招待トークン不要)
zrok2 enable # デバイスをzrok環境にバインド
zrok2 share public localhost:3000
データの完全主権を必要とするチーム向けに、zrokはセルフホストも可能です。Docker Composeスタックは単一コンテナ以上で構成され、ziti-controllerとziti-router(OpenZiti制御/data層)、postgresql(zrokデータベース)、rabbitmq(フロントエンドマッピング)、zrok2-controllerとzrok2-frontend(APIと公開共有プロキシ)、オプションのcaddy(TLS終端)、influxdb(メトリクス)を含みます。これは「バイナリ1つをダウンロード」以上のインフラであり、自己ホスト展開を計画している場合は理解しておくべきです。
実用例
インバウンドファイアウォールルールなしのWebhook自動化
OpenZitiのNode.js SDKを使い、GitHub Actionsのワークフローを構築し、CI/CDパイプラインから内部サーバーのビルドやデプロイを安全にトリガーできます。ネットワークチームはインバウンドポートやNATルールの管理を行いません。
ピアツーピアのファイル・ドライブ共有
zrokはサービス共有と同じ仕組みで、「アドホックなファイル共有」やWebDAVネットドライブのマウントを可能にします。専用のファイル共有サーバーを立てる必要はありません。
AIエージェントとMCPのゼロトラストインフラ
最も進展の早いエコシステムの一つです。2026年中頃から、NetFoundryは目的特化型のApache 2.0ライセンスのプロジェクト群を支援しています。各プロジェクトの役割は次の通りです:
openziti/llm-gatewayはOpenAI互換のAPIプロキシです。OpenAI、Anthropic、その他の互換バックエンド(Ollama、vLLM、llama-server、SGLang)へのネイティブルーティングを行います。セマンティックルーティングはキーワードヒューリスティクス、埋め込み類似度、LLM分類器の3層で自動モデル選択と負荷分散を実現します。Goバイナリで、データベースやメッセージキューは不要です。必要に応じてzrok経由で公開も可能です。
openziti/mcp-gatewayはAIアシスタントにMCPツールサーバーへのゼロトラストアクセスを提供します。3つのコンポーネント(mcp-tools、mcp-gateway、mcp-bridge)から構成され、複数のツールサーバーを一つの名前空間に集約し、認証・許可を行います。バックエンドはローカルのstdioプロセスやリモートHTTP(S)/SSE MCPサーバーです。永続的な共有もサポートします。
ziti-mcp-serverはmcp-gatewayとは別のプロジェクトで、OpenZiti管理APIをラップし、アイデンティティ、サービス、エッジルーター、ポリシーをMCPツールとして公開します。Claude DesktopやCursorのエージェントがルーターをプロビジョニングし、ネットワークポリシーを対話的に管理できる仕組みです。
openziti/agoraは新しいスタックの一部で、エージェント間通信用のプリ-1.0ゼロトラストオーバーレイです。A2Aプロトコルに対応し、OpenZitiのアイデンティティ、ディスカバリー、ポリシー層を追加します。mcp-gatewayはこれを代替のトランスポートとして利用可能です。
これら4つのコンポーネントは、共通の原則に基づきます。MCPエンドポイントや推論ゲートウェイは、公開IPでリッスンせず、認証・暗号化されたプライベート通信として共有できます。
まとめ
コマンド一つで公開URLを得る便利さはなくなりませんが、「便利さ」と「インターネットに公開されていること」は必ずしも同じではありません。OpenZitiの層状モデルは、ネットワークレベル、ホストレベル、アプリケーション埋め込みSDKのいずれかを選択でき、サービスごとにトレードオフを調整可能です。zrokは最初の2層を数分で導入できる入り口です。SDKは「ダーク状態」が価値あるサービスに最適です。
変更履歴
修正点:
- 「zrok v2の大規模リリースによりzrok2バイナリ/環境/環境変数名に変更」との記述を、実際のv2.0の変更点(~/.zrok2、ZROK2_*、名前空間モデルの採用、VPNモードの削除)に置き換えました。
- openziti/llm-gatewayのサポートプロバイダーリストを修正。BedrockやVertex AIのネイティブルーティングはサポートされていません。
- mcp-gatewayの説明を拡充。ziti-mcp-serverと区別し、3つのコンポーネントからなる「トリフェクタ」を明示しました。
- OpenZitiのスマートルーティングがBGPを”回避”するという表現を修正し、オーバーレイ層での経路再計算に留めました。
- Windowsのscoop install zrokの記述を削除し、GitHubリリースページへのリンクに差し替えました。
- OpenZitiの3つの展開層(Zero Trust Network Access / Host Access / Application Access)を、openziti/zitiのREADMEに基づき明示的に表現しました。
- openziti/agoraの新規追加を行い、エージェント間通信用のプリ-1.0オーバーレイとして紹介しました。
- mcp-gatewayの永続的共有とStreamable HTTPトランスポートを追加しました。
- SDKのプライベート共有パターンの具体的なコード例を掲載しました。
- 自己ホスト用Docker Composeのサービスリストを詳細化しました。
- SDK言語リスト(Go, C, Python, Node.js, Java, Swift, C#)と暗号化の主張、無料プランの制限を正確に確認済みです。
- 不要な繰り返し表現を削除し、自然な表現に整えました。
情報源の確認: - openziti/ziti GitHubリポジトリとREADME - openziti/zrok GitHubリポジトリ、CHANGELOG、リリースノート(v2.0.0とリリース候補) - OpenZiti Tech Blog(”Introducing zrok v2.0”、”Announcing the zrok Public Beta”) - NetFoundryドキュメント(openziti.io、netfoundry.io/docs) - zrokの料金ページ(zrok.io/pricing) - 各言語SDKリポジトリ - openziti/llm-gateway、openziti/mcp-gateway(pkg.go.dev、v0.1.11)、openziti/agora - このブログの以前の事実確認済み記事(ngrok vs. zrok)
Related InstaTunnel pages
Continue from this article into the most relevant product guides and workflows.
Related Topics
Keep building with InstaTunnel
Read the docs for implementation details or compare plans before you ship.