金融機関、防衛、医療、重要インフラ開発など、厳格なセキュリティ規制やコンプライアンス要件が課されるエンタープライズ組織において、エンジニアリング責任者は共通の課題に直面しています。現場のエンジニアは開発生産性を高めるためにAIコード補完ツールの導入を求めていますが、セキュリティ部門や法務部門は独自のプロプライエタリなソースコードが社外ファイアウォールを越えたり、第三者のモデル学習データとして蓄積されたりすることを容認できません。
Tabnine Enterpriseは、オンプレミス(自社データセンター)および完全隔離環境(エアギャップ:Air-Gapped)へのデプロイに対応することで、この課題を根本から解決します。社内ネットワークまたは専有のVirtual Private Cloud(VPC)内にTabnineのKubernetes推論クラスタを自社構築することで、コード補完の推論処理をすべて自社の安全な境界内で完結できます。Tabnineの厳格な「ゼロデータ保持(Zero Data Retention)」ポリシーと、パーミッシブ(許諾型)オープンソースライセンスのみで学習された基底モデルを組み合わせることで、知的財産漏洩のリスクを完全に排除しながら開発チーム全体へAIコーディング支援を展開できます。
全体アーキテクチャ:物理・論理分離の仕組み
一般的なSaaS型AIコーディングアシスタントでは、コードスニペット、コンテキストファイル、カーソル周辺のコードがパブリックインターネットを経由してベンダーのクラウドAPIに送信されます。これに対し、Tabnine Enterpriseはセルフホスト型のプライベートサービス構成を採用し、社外通信への依存を完全に排除します。
+-----------------------------------------------------------------------+
| 社内イントラネット / エアギャップ隔離境界 (Air-Gapped Perimeter) |
| |
| +-----------------------+ +-----------------------------+ |
| | 開発者ワークステーション| | 社内 Tabnine K8s クラスタ | |
| | - VS Code プラグイン | HTTPS | - Ingress コントローラ(TLS) | |
| | - JetBrains プラグイン |---------->| - モデル推論 Pod (GPU搭載) | |
| | - Eclipse / CLI ツール | (mTLS) | - PostgreSQL & Redis 状態DB | |
| +-----------------------+ | - 企業コンテキストエンジン | |
| +-----------------------------+ |
| | |
| +-------------v---------------+ |
| | 社内プライベートストレージ | |
| | - ファインチューニングモデル| |
| | - 社内レジストリ (Harbor等) | |
| +-----------------------------+ |
+-----------------------------------------------------------------------+
X [外部送信の完全遮断]
パブリックインターネット / クラウドAPI
このプライベート構成は、3つの堅牢なセキュリティ境界によって支えられています:
- ネットワーク境界:推論クラスタ全体が社内のKubernetes環境で動作します。クライアント(IDE)とクラスタ間の通信はすべて社内HTTPSを使用します。エアギャップ構成では、ファイアウォールのアウトバウンドルールにより外部インターネットへの通信が完全に遮断されます。
- データ境界:Tabnineは「ゼロデータ保持(ZDR)」ポリシーを徹底しています。補完リクエストはGPUメモリ上で一時的(エフェメラル)に処理され、推論完了直後にメモリから即時破棄されます。入力プロンプトがディスクに永続化されたり、モデル再学習のために蓄積されたりすることはありません。
- 知的財産(IP)境界:Tabnineの基底モデルは、パーミッシブライセンス(MIT、Apache 2.0、BSDなど)が付与されたコードのみで事前学習されています。GPLなどのコピーレフト型ライセンスによる意図しないライセンス汚染リスクを排除しています。
前提条件とシステム要件
オンプレミスまたはエアギャップ環境にTabnine Enterpriseを導入する前に、以下のシステムおよびハードウェア要件を確認してください:
| コンポーネント | 最小要件 | 推奨構成(本番環境) |
|---|---|---|
| Kubernetesクラスタ | Kubernetes 1.25+;ベアメタル、OpenShift、またはプライベートEKS/GKE/AKS | 専用GPUノードプールを備えた高可用性マルチノード構成 |
| GPU / コンピュート | NVIDIA GPU 1基(A10GまたはV100 16GB+ VRAM;小規模検証用) | 複数GPU搭載ノード(NVIDIA A100 80GB、L40S、またはH100;Dell PowerEdge AIサーバ等) |
| データベース | PostgreSQL 18+(外部マネージドまたはHAクラスタ) | 暗号化永続ボリュームを備えた外部HA構成PostgreSQL |
| インメモリキャッシュ | Redis 8+ | 永続化を有効化したクラスタ構成Redis |
| 永続ストレージ | 5 TB 以上の利用可能ストレージ | CephまたはSANによる高性能SSD/NVMeストレージボリューム |
| コンテナレジストリ | registry.tabnine.com:443 への接続(オンライン初期導入時) | 社内プライベートOCIレジストリ(Harbor、Artifactory等;エアギャップ時) |
| ネットワークとTLS | 社内専用FQDNドメイン;社内DNS名前解決 | Ingressコントローラ(NGINXまたはEnvoy);信頼された社内ルートCA証明書 |
ステップ1:プライベートTabnineクラスタの構築
プラットフォームおよびインフラ担当チームは、Tabnine公式のHelmチャートを使用してクラスタを構築します。
1. コンテナイメージの同期(エアギャップ環境)
インターネット接続が遮断された環境では、ステージング端末で公式レジストリからイメージを取得し、社内プライベートレジストリへ転送します:
# Tabnine 公式エンタープライズレジストリへログイン
docker login registry.tabnine.com -u <ORGANIZATION_KEY> -p <ORGANIZATION_SECRET>
# コアサービスおよび推論エンジンイメージを取得
docker pull registry.tabnine.com/tabnine/enterprise-server:latest
docker pull registry.tabnine.com/tabnine/inference-engine:latest
docker pull registry.tabnine.com/tabnine/context-engine:latest
# 社内レジストリ用タグを付与
docker tag registry.tabnine.com/tabnine/enterprise-server:latest internal-registry.corp.internal/tabnine/enterprise-server:latest
docker tag registry.tabnine.com/tabnine/inference-engine:latest internal-registry.corp.internal/tabnine/inference-engine:latest
docker tag registry.tabnine.com/tabnine/context-engine:latest internal-registry.corp.internal/tabnine/context-engine:latest
# 社内レジストリへプッシュ
docker push internal-registry.corp.internal/tabnine/enterprise-server:latest
docker push internal-registry.corp.internal/tabnine/inference-engine:latest
docker push internal-registry.corp.internal/tabnine/context-engine:latest
2. Helm Values設定ファイルの作成
社内ネットワークとリソース割り当てに合わせた values.yaml を作成します:
global:
domain: "tabnine.corp.internal"
imageRegistry: "internal-registry.corp.internal/tabnine"
airGapped: true
ingress:
enabled: true
className: "nginx"
annotations:
cert-manager.io/cluster-issuer: "internal-ca-issuer"
nginx.ingress.kubernetes.io/proxy-body-size: "64m"
nginx.ingress.kubernetes.io/proxy-read-timeout: "120"
hosts:
- host: "tabnine.corp.internal"
paths:
- path: /
pathType: Prefix
tls:
- secretName: tabnine-tls-cert
hosts:
- "tabnine.corp.internal"
database:
postgresql:
host: "postgres-ha.database.svc.cluster.local"
port: 5432
database: "tabnine_enterprise"
user: "tabnine"
existingSecret: "tabnine-db-credentials"
redis:
host: "redis-master.database.svc.cluster.local"
port: 6379
existingSecret: "tabnine-redis-credentials"
telemetry:
enabled: false
externalEndpoint: "" # logs-gateway.tabnine.com への社外テレメトリ送信を完全無効化
inference:
resources:
limits:
nvidia.com/gpu: 2
cpu: "16"
memory: "64Gi"
requests:
nvidia.com/gpu: 2
cpu: "8"
memory: "32Gi"
3. クラスタへのインストール
Helmを使用して専用ネームスペースにデプロイを実行します:
helm upgrade --install tabnine-enterprise ./tabnine-helm \
--namespace tabnine \
--create-namespace \
-f values.yaml
インストール後、各PodおよびGPU割り当てが正常に動作しているか確認します:
kubectl get pods -n tabnine -l app.kubernetes.io/part-of=tabnine
kubectl get ingress -n tabnine
ステップ2:管理コンソールのセキュリティ強化とSSO統合
エンドポイント(https://tabnine.corp.internal)の準備が整ったら、管理コンソールにログインしてガバナンス設定を行います。
1. 企業向けシングルサインオン(SSO)の強制
管理コンソールの「Authentication & Security」画面を開きます:
- SAML 2.0またはOIDCプロトコルを設定し、社内のIDプロバイダ(Okta、Microsoft Entra ID、PingFederate等)と連携します。
- 登録およびアクセス権限を、承認された社内開発者グループに限定します。
- セッション有効期限を設定し、IdP側で多要素認証(MFA)を強制します。
2. 外部テレメトリの完全停止
エアギャップおよび高セキュリティ環境での設定確認:
- 外部サーバへの診断メトリクスやエラーログ送信が無効化されていることを確認します。
- 監査ログおよびリソース監視ログは、社内のSIEM(Splunk、Elasticsearch、Datadogプライベートエージェント等)へ集約します。
3. モデルガバナンスとコンテキスト制御
- モデル選択:社内基準を満たしたパーミッシブライセンス基底モデルや、社内専用のファインチューニングモデルを指定します。
- リポジトリインデックス権限:社内コードを参照するContext Engine(RAG)を有効化する場合、読み取り専用トークンでアクセス対象を厳格に制限します。インデックス化されたベクトルデータはすべて社内データベース内に安全に保存されます。
ステップ3:開発環境(IDE)のクライアント設定
開発者のエディタが外部クラウドではなく社内の専用サーバへ接続するよう、クライアント設定を展開します。
Visual Studio Code の設定
設定方法A:GUIウィザードでの初期設定
- VS Code拡張機能マーケットプレイスから Tabnine Enterprise をインストールします(オフライン時は社内リポジトリ経由で
.vsixをインストール)。 - インストール後、画面右下に表示される通知 「Tabnine: Please set your enterprise server URL」 をクリックします。
- 社内サーバURL
https://tabnine.corp.internalを入力します。 - Sign In をクリックし、ブラウザで社内SSO認証を完了します。
設定方法B:構成ファイルの自動配布 (settings.json)
MDMやプロビジョニングツールを使用して、開発機に一括配布する場合:
{
"tabnine.cloudHost": "https://tabnine.corp.internal",
"tabnine.receiveBetaChannelUpdates": false
}
JetBrains IDE(IntelliJ IDEA、PyCharm、GoLand、WebStormなど)
オフライン環境でのカスタムプラグインリポジトリ設定
JetBrains Marketplaceへ接続できないネットワーク環境の場合:
- Settings / Preferences(
Ctrl+Alt+SまたはCmd+,)を開きます。 - Plugins > 歯車アイコン ⚙ > Manage Plugin Repositories... を選択します。
- 社内更新リポジトリのURLを追加します:
https://tabnine.corp.internal/update/jetbrains/updatePlugins.xml - Tabnine Enterprise プラグインを検索してインストールします。
サーバホストURLの指定
- Settings > Tools > Tabnine に移動します。
- Server URL 入力欄に
https://tabnine.corp.internalを設定します。 - 設定を保存してIDEを再起動し、ブラウザ経由でSSOログインを行います。
社内プロキシとルートCA証明書の設定
社内ネットワークでSSL復号検査を行っている場合や自社プライベート認証局を使用している場合、ハンドシェイクエラーを防ぐ設定を行います:
- VS Code(Node.jsランタイム):OSの環境変数にルート証明書パスを設定します:
export NODE_EXTRA_CA_CERTS="/etc/ssl/certs/corporate-root-ca.pem" - JetBrains(JVMランタイム):Settings > Tools > Server Certificates から証明書をインポートするか、JDKの
cacertsに企業ルート証明書を登録します。
CLIおよび自動化環境での変数設定
CIパイプラインやスクリプト環境では、環境変数で接続先を指定します:
export TABNINE_HOST="https://tabnine.corp.internal"
ソースコード漏洩を防ぐ4つの構造的防御策
セキュリティ監査およびコンプライアンス審査において、Tabnineは以下の4つのメカニズムにより情報漏洩を防止します:
+-------------------------------------------------------------------------------+
| ソースコード漏洩防止の多層防御構造 |
+-------------------------------------------------------------------------------+
| 1. 物理・ネットワーク分離 |
| - クラスタは社内LAN/専用VPCで稼働、ファイアウォールで社外通信を完全遮断 |
| - オフライン動作に対応し、外部クラウドAPIへのデータ送信経路が存在しない |
+-------------------------------------------------------------------------------+
| 2. メモリ上での一時的推論 (ゼロデータ保持) |
| - プロンプトとコードコンテキストはGPUメモリ上でのみリアルタイム処理 |
| - 補完生成後に即座に消去、ディスクへのコード永続化を一切行わない |
+-------------------------------------------------------------------------------+
| 3. モデル学習領域の完全分離 |
| - 顧客の専有コードがTabnineのグローバル学習データに混入することは絶対にない |
| - 社内ファインチューニングモデルは社内の隔離環境でのみ保管・運用 |
+-------------------------------------------------------------------------------+
| 4. パーミッシブライセンスによる知財保護 |
| - 基底モデルはMIT、Apache 2.0、BSD等の許諾型ライセンスコードのみで事前学習 |
| - GPL等のコピーレフト感染による法務・知財リスクを根本的に排除 |
+-------------------------------------------------------------------------------+
1. ディスクに痕跡を残さないGPUメモリ処理
開発者がコードを入力すると、プラグインは編集中のファイル文脈を収集し、暗号化通信で社内推論ポッドへ送信します。モデルはGPUのVRAM上で次のトークンを計算し、候補をエディタへ返却した瞬間にメモリバッファをクリアします。この一連の処理において、ソースコードがディスクに保存されたりログに記録されたりすることはありません。
2. 学習データ混入リスクの完全排除
一般的なクラウド型AIアシスタントでは、利用規約によってユーザー入力データがモデル改善に使用される場合があります。Tabnineは契約上および技術アーキテクチャ上の両面において、顧客のコードを汎用モデルの学習に一切使用しないことを保証しています。自社専用モデルをファインチューニングする場合も、学習処理は社内の計算基盤内で完結し、重みファイルは社内ストレージにのみ保存されます。
3. 法的リスクを未然に防ぐクリーンなモデル学習
情報漏洩の防止と同時に重要なのが、社外の危険なライセンスコードの「逆流入」を防ぐことです。Tabnineは事前学習データからGPLやAGPLなどの伝播性ライセンスを持つコードを厳格に排除しています。これにより、AIが提案したコードを採用したことで自社のプロプライエタリ製品がオープンソース化を迫られる法的リスクを回避できます。
デプロイ方式の比較と選定基準
| 比較項目 | マルチテナントSaaS | プライベートVPC | 完全隔離オンプレミス (Air-Gapped) |
|---|---|---|---|
| 稼働環境 | Tabnine クラウド | 自社管理のAWS/GCP/Azure VPC | 自社オンプレミス / ベアメタル |
| データ境界 | 暗号化通信、一時的処理 | 自社VPCネットワーク内に制限 | 完全社内LAN・外部通信なし |
| インターネット依存度 | 常時接続が必須 | VPCピアリング等の社内通信のみ | ゼロ(外部接続不要) |
| インフラ管理負荷 | 不要 | 中程度(マネージドK8sの運用) | 高い(物理GPUサーバの調達・運用) |
| 適合する要件 | 一般的なWebサービス開発 | 金融・ヘルスケア・大手IT企業 | 防衛、国家安全保障、コア機密開発 |
| アップデート運用 | クラウドで自動適用 | 計画的なコンテナ更新 | オフライン手動イメージ同期 |
エンタープライズ向けの選定指針
- プライベートVPCを推奨:すでに業務システムをAWS、Azure、GCP上に構築しており、自社でKubernetesを運用できる体制がある場合、ハードウェア調達のコストを抑えつつ強固なネットワーク分離を実現できます。
- エアギャップ・オンプレミスを推奨:防衛関連、国家機密、未公開のコア特許アルゴリズムを扱うチームや、開発ネットワークが物理的に独立している組織に不可欠です。
- 標準SaaSを検討する場合:社内セキュリティ規定でTLS経由の一時的外部送信が許可されており、インフラ運用コストを最小限に抑えたい場合に適しています。
本番展開前の運用チェックリスト
全開発者へサービスを開放する前に、インフラおよびセキュリティチームは以下の項目を検証してください:
- アウトバウンド通信監査:パケットキャプチャやVPCフローログを使用し、コード補完実行時に開発端末および推論ノードから外部パブリックIPへの通信が一切発生していないことを確認。
- 社内DNSとTLS検証:開発端末が
tabnine.corp.internalを社内IngressのIPとして正しく解決し、証明書エラーが発生しないことを確認。 - SSO認証によるアクセス制御:社内IdPで許可されていないアカウントからの推論API呼び出しが遮断されることを確認。
- 外部テレメトリの完全停止:Kubernetesのログを調査し、
logs-gateway.tabnine.comへの通信試行が存在しないことを確認。 - IDE設定の集中管理:MDMまたは共通設定ファイルを通じ、開発端末のVS CodeおよびJetBrainsの設定が社内エンドポイントへ正しく向けられていることを確認。
自社のプライベートKubernetesインフラ上で推論環境をホストし、厳格なネットワーク制御とゼロデータ保持ポリシーを適用することで、企業はプロプライエタリなソースコードを確実に保護しながら、安全にAIコード補完の恩恵を享受できます。