VPN の背後で自己管理される GitLab のエンジニアリング分析
ホストされたアプリケーションが顧客のネットワークに到達できない場合に、プライベート GitLab 配信データを分析するための安全なパターン。
ネットワークの制約を理解する
ホスト型 SaaS バックエンドは、通常、企業 VPN またはプライベート ネットワーク上でのみ利用可能な GitLab インスタンスを呼び出すことはできません。すべての顧客オリジンをデプロイメント構成に追加することは拡張性がなく、顧客に GitLab を公開するよう求めることになり、セキュリティ境界が弱体化します。ただし、ユーザーのブラウザは、VPN への接続中にすでにネットワーク アクセスを許可されている可能性があります。これにより、製品がブラウザを信頼できない境界として扱い、そこから離れるものを最小限に抑えるという条件で、手動のブラウザ直接同期のための実用的なルートが作成されます。
ブラウザから GitLab を直接呼び出せるようにする
ブラウザダイレクト モードでは、ユーザーは GitLab オリジン、グループ スコープ、および読み取り専用トークンをページに入力します。ブラウザで実行されている JavaScript は、既存の VPN 接続を通じて GitLab API を呼び出します。製品に必要な配信メタデータのみを正規化し、その正規化されたペイロードをホストされるアプリケーションに送信します。トークンは、ペイロード、アプリケーション ログ、エラー監視、または分析に決して含めてはなりません。オプションのコンビニエンス ストレージは、永続的なローカル ストレージではなく、タブ スコープのセッション ストレージである必要があり、タブを閉じると資格情報が削除される必要があります。
実用的な最も狭い権限を使用する
読み取り専用 API アクセスを目的としたトークンを作成し、ワークスペースが分析を許可されているグループまたはプロジェクトに同期の範囲を設定します。 GitLab オリジンが HTTPS であることを検証し、URL に埋め込まれた認証情報を拒否し、可能な場合は任意の内部ホストへの呼び出しを防止します。ホストされた取り込みルートは、サインインしたワークスペース マネージャー、承認されたプロバイダーの種類、ペイロード スキーマ、最大サイズ、リポジトリのスコープ、およびレート制限を個別に検証する必要があります。ブラウザーが保持するトークンにより、サーバー側の秘密の漏洩が軽減されますが、ブラウザーが送信するすべてのものを検証する必要性がなくなるわけではありません。
境界のあるページの同期を最適化する
サポートされている最大のページ サイズでプロジェクトと最近のマージ リクエストを取得し、GitLab ページネーション ヘッダーを尊重し、明確な時間枠またはレコード制限によって履歴を制限します。メトリクスに本当に詳細なイベントが必要な場合を除き、マージ リクエストごとに 1 つのリクエストを作成することは避けてください。高価なレビュー、参加者、または反復データを控えめな上限と同時にロードし、任意のスピナーではなく、完了した作業ごとに進捗状況を表示します。正規化された結果をアプリケーションにキャッシュして、レポートが VPN 取得を繰り返さないようにします。手動ブラウザーダイレクト モードでは、タブを閉じた後に信頼性の高いバックグラウンド同期や Webhook を提供できないため、鮮度に正直にラベルを付けます。
セキュリティの約束を確認する
パイロット中に、ブラウザーのネットワーク パネルを検査し、トークンが顧客の GitLab オリジンにのみ送信されていることを確認します。アプリケーションリクエストに生のシークレットやソースコードではなく、正規化されたメタデータが含まれていることを確認してください。タブを閉じて、トークンがなくなっていることを確認します。無効なオリジン、期限切れのトークン、ワークスペース権限のないユーザー、サイズ超過の応答、および部分的な同期をテストします。最後に、プロジェクトのサンプル、マージリクエスト、レビュー担当者、ラベル、マイルストーン、イテレーションを GitLab 自体と比較します。安全なアーキテクチャは、ユーザーが結果として得られる証拠を信頼できる場合にのみ役立ちます。