免費試用7 天日誌保留
回到企業版總覽
生產環境存取

讓代理進入生產環境。 在它變更之前先核准。

排查線上事故或執行資料移轉,意味著要給代理真正的生產環境存取權——而真正的生產環境存取權,正是您不能交給一個自主迴圈的東西。Bromure 讓代理自由讀取,然後在每一個變更動作的門前停下來,先問過您。

問題

讀取存取沒問題。會斷送職涯的是寫入。

一個能查詢生產環境的代理是排查問題的超能力。一個能 `DROP TABLE`、`terraform apply`、刪除一個儲存桶或推送一個熱修補的代理,距離一次自信的幻覺就只差一場服務中斷。同一個讀取日誌找出 bug 的迴圈,會在沒人要求下,逕自對線上系統把它「修好」。

於是團隊選擇安全的做法,把代理完全擋在生產環境之外——卻也失去了代理最有用的那一處:線上事故、與資料形態相關的 bug、只有在真實資料上才會失敗的移轉。擺在眼前的選擇,是您無法信任的自主性,或是您不願授予的存取權。

Bromure 的解法

讀取暢通。變更停下,等待人類。

Bromure 讓代理在一台 VM 內執行,而這台 VM 只能透過一個憑證代理觸及生產環境——這個代理懂得讀取與寫入的差別。查詢、取得與描述直接放行。任何會變更狀態的動作——一次寫入、一次刪除、一條 DDL 陳述式、一次部署、一次破壞性 API 呼叫——都會暫停並彈出一個權限提示,顯示確切的操作,交由工程師在它執行前核准或拒絕。

代理在一切安全的操作上維持動能,只在重要之處止步。您精準看到它即將做什麼——SQL、API 呼叫、資源——在您說「好」之前,沒有任何東西碰得到生產環境。拒絕它,代理就會收到否決並隨之調整,如同對待任何其他工具錯誤。

運作原理

讀取放行,寫入把關

代理對每一個操作分類。唯讀呼叫零摩擦通過;變更呼叫則為了取得明確的人工核准而停下。安全之處有代理的速度,不安全之處有硬性的止步。

精準看見它要做什麼

每一個提示在執行前都顯示字面上的操作——SQL 陳述式、API 動詞與目標、被變更的資源。沒有盲目的「全部允許」。

憑證永遠不會抵達代理

生產環境存取由代理在網路層注入。代理在從未持有任何可外洩或濫用的憑證下對正式環境操作。

每一個決定都被記錄

核准、拒絕,以及其背後的操作,都按工作階段與工程師被記錄——一份代理對生產環境做了什麼、由誰允許的完整紀錄。

實務上

代理上陣處理線上事故,不再冷汗直流

凌晨兩點,某個服務在一部分資料列上拋出錯誤。一位工程師透過 Bromure 把他的代理指向生產環境的複本。代理查詢線上資料,與近期的部署交叉比對,把 bug 收斂到三小時前一次移轉所寫入的一個格式錯誤的欄位——全程唯讀,全程暢通無阻。

代理提出修正方案:對受影響的資料列下一道 `UPDATE`。由於這會變更生產環境,Bromure 暫停。一個權限提示向工程師顯示確切的陳述式——資料表、述詞、估計影響的列數——然後等待。工程師讀過,收緊 `WHERE` 子句,然後核准。唯有此時,寫入才抵達資料庫。

事故在二十分鐘內結束,而不是兩小時。工作階段紀錄顯示代理執行過的每一個查詢、它提出的那一次變更、工程師的修改,以及那次核准——所以事後檢討幾乎是自動寫成的,也沒有人需要懷疑代理是否私下還做了別的事。

政策即設定

在一個政策區塊裡定義哪些要把關

代理的讀寫分類是宣告式的。按設定檔傳入一份政策,代理在每一次工作階段都會繼承它。以下是團隊最常把關的後端的樣貌。

MongoDB / ClickHouse

讀取——find、聚合、SELECT——放行;insert、update、delete 與 DDL 預設把關。可選擇劃出一個草稿資料庫,讓代理自由變更。

[proxy.mongodb]
mode = "read-through"
# find / aggregate / count pass without prompting
gate = ["insert", "update", "delete", "drop"]

[proxy.clickhouse]
mode = "read-through"
# SELECT passes; writes and DDL gate
gate = ["INSERT", "ALTER", "DROP", "TRUNCATE"]
# allow unprompted writes only here
allow_write_databases = ["scratch"]

AWS、Kubernetes 與雲端 API

describe / list / get 呼叫放行;任何會建立、變更或刪除資源的動作——無論是雲端資源或 Kubernetes 物件——都會在顯示完整請求下提示核准。

[proxy.aws]
mode = "read-through"
allow_verbs  = ["Describe*", "List*", "Get*"]
gate_verbs   = ["Create*", "Update*", "Put*", "Delete*", "Terminate*"]
show_request = true

[proxy.kubernetes]
mode = "read-through"
# get / list / watch pass
gate_verbs = ["create", "apply", "patch", "delete", "scale", "exec"]

HTTP 與內部服務

GET 與 HEAD 暢通;對生產環境主機的 POST、PUT、PATCH 與 DELETE 則把關。按主機劃定範圍,讓預備環境保持零摩擦。

[proxy.http]
read_methods = ["GET", "HEAD"]
gate_methods = ["POST", "PUT", "PATCH", "DELETE"]

[[proxy.http.hosts]]
match = "*.prod.internal"
gate  = true

[[proxy.http.hosts]]
match = "*.staging.internal"
gate  = false
架構與整合

實際是怎麼打造的

行銷話術到此為止。以下是每一次 Bromure 部署所仰賴的技術基底——不論您保護的是 BYOD 員工,或是在受監管機構內隔離機密等級,底層都是同一套。

由 hypervisor 強制的隔離

每個設定檔在自己的輕量 Linux VM 中運行,底層是 Apple 的 Virtualization.framework——擁有與主機分離的核心、檔案系統與網路堆疊。基底映像檔是一份經簽章、可重現的 Alpine 建置,透過 APFS 寫時複製在工作階段啟動時複製(磁碟成本近乎為零)。主機無法讀取 VM 記憶體;VM 也無法讀取主機的剪貼簿、檔案系統或網路介面卡,除非設定檔政策明確允許。

身分:使用者 SSO、裝置 mTLS

註冊與工作階段啟動由您組織已經在用的兩項要素把守。對 Google Workspace、Okta、Microsoft Entra 或 Authentik 的 OIDC / SAML 識別使用者。由您 PKI 簽發、綁定此安裝的每裝置 mTLS 用戶端憑證識別機器。撤銷任一項,下一次工作階段就開不起來——沒有代理程式可以被動手腳、沒有本機政策可以繞過。

設定檔即程式碼

工作設定檔——允許的 SaaS 清單、下載/剪貼簿/螢幕截圖姿態、VPN 設定、鍵盤配置、根 CA、網路出站規則——是一份經簽章的宣告式成品。在 Git 裡做版本控管。透過您的 MDM 或 Bromure 設定端點推送。被竄改的設定檔會在簽章驗證時失敗,工作階段拒絕啟動。在使用者機器上執行的內容,與您撰寫的逐位元一致。

按設定檔的網路平面

每個設定檔擁有自己的虛擬 NIC。可選擇透過主機 NAT、橋接至實體介面,或透過 WireGuard、IKEv2 / IPsec、Cloudflare WARP 建立通道——全都終結於 VM 內部,對主機不可見。再往上可疊加 DNS 覆寫、出站連接埠白名單、LAN 隔離與 HTTP 代理。分段由 hypervisor 強制執行,而不是靠防火牆上的一張貼紙。

稽核管線

每一個請求——時間戳、動詞、URL、狀態、使用者、設定檔、裝置——都在 VM 外部以防竄改的 JSON Lines 串流擷取,送到您既有的記錄匯出端(SIEM、資料湖、保存歸檔)。可選擇僅記錄標頭,或對可疑流量進行完整主體的工作階段錄製。穩定的結構、文件化的欄位,不會因格式被綁在特定廠商身上。

預設短暫,選擇加入才持久

關閉視窗,VM 就被摧毀。權杖、Cookie、快取、下載,以及工作階段中落下的任何惡意軟體都隨之消失。需要保留狀態的設定檔——一組書籤、一個已保存的工作階段、一個已登入的 SaaS——可以選擇加入以 macOS Keychain 鍵控的 LUKS 加密持久磁碟。金鑰永遠不離開使用者的裝置。

常見問題

Bromure 怎麼知道一個呼叫是變更?

+

憑證代理理解它所仲介的協定——SQL、雲端 API、HTTP 動詞、Git。它按效果對操作分類:SELECT 與 GET 放行;INSERT/UPDATE/DELETE/DDL、寫入 API 與破壞性呼叫則把關。按設定檔調校政策——全部把關,或允許寫入一個草稿綱要而把關其餘。

提示會不會拖慢每一個動作?

+

只有變更才會提示。代理在排查問題時對生產環境所做的絕大多數操作都是唯讀的,那些以全速暢通。人類精準地、且僅在狀態改變之處,留在迴圈裡。

當我拒絕時,代理看到什麼?

+

一個正常的工具否決。代理把它當作任何失敗的呼叫——它可以解釋、提出替代方案或請求指引——而那次變更從未發生。

我可以一次核准一批操作嗎?

+

可以。核准可以按操作授予,或劃定範圍——核准一類操作在本次工作階段剩餘時間有效,或預先授權一次特定的移轉——每一筆授權都被記錄。預設是嚴格的;您刻意地把它放寬。

這不就是個花俏的 `--dry-run` 嗎?

+

不是。dry-run 顯示會發生什麼,然後仍需要一次盲目的真實重跑。Bromure 把關的是真實的呼叫本身:代理正在執行中,您看到確切的操作,而您的核准正是讓它得以繼續——或不得繼續——的關鍵。沒有任何東西跑兩次,也沒有任何東西未經核准就執行。

把生產環境交給代理。 把開關握在自己手裡。

讀取放行、寫入把關的存取,讓代理在線上系統上工作,卻永遠不會在您背後變更它們。