VPN 後 GitLab 自我管理的工程分析
當託管應用程式無法到達客戶網路時,用於分析私有 GitLab 交付資料的安全模式。
了解網路約束
託管 SaaS 後端通常無法呼叫僅在公司 VPN 或專用網路上可用的 GitLab 實例。將每個客戶來源新增至部署配置中無法擴展,並且要求客戶公開公開 GitLab 會削弱安全邊界。然而,使用者的瀏覽器在連接到 VPN 時可能已經獲得了授權的網路存取權限。這為手動、瀏覽器直接同步創建了一條實用的路線,前提是該產品將瀏覽器視為不受信任的邊界,並最大限度地減少留下的內容。
讓瀏覽器直接呼叫GitLab
在瀏覽器直接模式下,使用者在頁面中輸入 GitLab 來源、群組範圍和唯讀令牌。瀏覽器中執行的 JavaScript 透過現有 VPN 連線呼叫 GitLab API。它僅標準化產品所需的交付元數據,並將標準化的有效負載傳送到託管應用程式。令牌絕不能包含在該有效負載、應用程式日誌、錯誤監控或分析中。可選的便利存儲應該是選項卡範圍的會話存儲,而不是持久性本地存儲,並且關閉選項卡應該刪除憑證。
使用最窄的實際權限
建立用於唯讀 API 存取的令牌,並將同步範圍限製到工作區有權分析的群組或項目。將 GitLab 來源驗證為 HTTPS,拒絕 URL 中嵌入的憑證,並盡可能阻止對任意內部主機的呼叫。託管攝取路由應獨立驗證登入的工作區管理器、接受的提供者類型、有效負載架構、最大大小、儲存庫範圍和速率限制。瀏覽器持有的令牌減少了伺服器端秘密的暴露,但它並不能消除驗證瀏覽器提交的所有內容的需要。
優化有界頁面周圍的同步
使用支援的最大頁面大小獲取項目和最近的合併請求,尊重 GitLab 分頁標頭,並透過明確的時間視窗或記錄限制來綁定歷史記錄。避免每個合併請求一個請求,除非指標確實需要詳細事件。在保守的上限下同時載入昂貴的審核、參與者或迭代數據,並按已完成的工作顯示進度,而不是任意旋轉器。在應用程式中快取規範化結果,以便報告不會重複 VPN 取得。手動瀏覽器直接模式無法在選項卡關閉後提供可靠的後台同步或 Webhook,因此請誠實地標記新鮮度。
驗證安全承諾
在試點期間,檢查瀏覽器網路面板並確認令牌僅傳送到客戶的 GitLab 來源。檢查應用程式請求是否包含標準化元資料而不是原始機密或原始程式碼。關閉選項卡並驗證令牌是否已消失。測試無效的來源、過期的令牌、沒有工作區權限的使用者、過大的回應和部分同步。最後,將專案範例、合併請求、審閱者、標籤、里程碑和迭代與 GitLab 本身進行比較。只有當使用者也可以信任產生的證據時,安全架構才有用。