広告枠を募集中 ご相談ください

企業開発チームがソースコード漏洩を防ぎながらTabnineをオンプレミスで運用する方法

365Finds Editorial
Wiki 記事 11,430 本収録

あなたの AI で 365 Wiki を使う

下のプロンプトをコピーして、普段使っている AI に貼り付け、そのまま質問してください。

完全版 Skill をダウンロード

まずはプロンプトでお試しください。よく使う場合は完全版 365Wiki Skill をインストールすると、毎回貼り付ける必要がありません。普段使う AI がなければ、Gemini や Microsoft Copilot のウェブ版でも使えます。

金融機関、防衛、医療、重要インフラ開発など、厳格なセキュリティ規制やコンプライアンス要件が課されるエンタープライズ組織において、エンジニアリング責任者は共通の課題に直面しています。現場のエンジニアは開発生産性を高めるために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つの堅牢なセキュリティ境界によって支えられています:

  1. ネットワーク境界:推論クラスタ全体が社内のKubernetes環境で動作します。クライアント(IDE)とクラスタ間の通信はすべて社内HTTPSを使用します。エアギャップ構成では、ファイアウォールのアウトバウンドルールにより外部インターネットへの通信が完全に遮断されます。
  2. データ境界:Tabnineは「ゼロデータ保持(ZDR)」ポリシーを徹底しています。補完リクエストはGPUメモリ上で一時的(エフェメラル)に処理され、推論完了直後にメモリから即時破棄されます。入力プロンプトがディスクに永続化されたり、モデル再学習のために蓄積されたりすることはありません。
  3. 知的財産(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」画面を開きます:

2. 外部テレメトリの完全停止

エアギャップおよび高セキュリティ環境での設定確認:

3. モデルガバナンスとコンテキスト制御


ステップ3:開発環境(IDE)のクライアント設定

開発者のエディタが外部クラウドではなく社内の専用サーバへ接続するよう、クライアント設定を展開します。

Visual Studio Code の設定

設定方法A:GUIウィザードでの初期設定

  1. VS Code拡張機能マーケットプレイスから Tabnine Enterprise をインストールします(オフライン時は社内リポジトリ経由で .vsix をインストール)。
  2. インストール後、画面右下に表示される通知 「Tabnine: Please set your enterprise server URL」 をクリックします。
  3. 社内サーバURL https://tabnine.corp.internal を入力します。
  4. 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へ接続できないネットワーク環境の場合:

  1. Settings / Preferences(Ctrl+Alt+S または Cmd+,)を開きます。
  2. Plugins > 歯車アイコン ⚙ > Manage Plugin Repositories... を選択します。
  3. 社内更新リポジトリのURLを追加します:
    https://tabnine.corp.internal/update/jetbrains/updatePlugins.xml
    
  4. Tabnine Enterprise プラグインを検索してインストールします。

サーバホストURLの指定

  1. Settings > Tools > Tabnine に移動します。
  2. Server URL 入力欄に https://tabnine.corp.internal を設定します。
  3. 設定を保存してIDEを再起動し、ブラウザ経由でSSOログインを行います。

社内プロキシとルートCA証明書の設定

社内ネットワークでSSL復号検査を行っている場合や自社プライベート認証局を使用している場合、ハンドシェイクエラーを防ぐ設定を行います:

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企業防衛、国家安全保障、コア機密開発
アップデート運用クラウドで自動適用計画的なコンテナ更新オフライン手動イメージ同期

エンタープライズ向けの選定指針


本番展開前の運用チェックリスト

全開発者へサービスを開放する前に、インフラおよびセキュリティチームは以下の項目を検証してください:

  1. アウトバウンド通信監査:パケットキャプチャやVPCフローログを使用し、コード補完実行時に開発端末および推論ノードから外部パブリックIPへの通信が一切発生していないことを確認。
  2. 社内DNSとTLS検証:開発端末が tabnine.corp.internal を社内IngressのIPとして正しく解決し、証明書エラーが発生しないことを確認。
  3. SSO認証によるアクセス制御:社内IdPで許可されていないアカウントからの推論API呼び出しが遮断されることを確認。
  4. 外部テレメトリの完全停止:Kubernetesのログを調査し、logs-gateway.tabnine.com への通信試行が存在しないことを確認。
  5. IDE設定の集中管理:MDMまたは共通設定ファイルを通じ、開発端末のVS CodeおよびJetBrainsの設定が社内エンドポイントへ正しく向けられていることを確認。

自社のプライベートKubernetesインフラ上で推論環境をホストし、厳格なネットワーク制御とゼロデータ保持ポリシーを適用することで、企業はプロプライエタリなソースコードを確実に保護しながら、安全にAIコード補完の恩恵を享受できます。


参考資料