安全性總覽與時間軸
Bromure 的防護全都在主機上執行,位於代理伺服器與虛擬網路交換器之中:憑證替換、出向防火牆、防護欄、供應鏈檢查、提示注入偵測與個人資料保護。每當其中之一做出判定——替換一份憑證、封鎖一個連線、檢查一個套件、扣留一則訊息——它就會記錄下來。安全性時間軸視窗會顯示這些判定:最近 24 小時的總覽,以及每一個事件的時間軸。
它回答的問題和追蹤不同。追蹤記錄的是流量本身——「代理程式送出了什麼?」——而且只有在你開啟追蹤時才記錄。安全性時間軸記錄的是安全性引擎對那些流量判定了什麼,而且它一直是開著的:每一台機器,無論是否已註冊、無論是否在私密模式,都不需要設定任何東西。
開啟這個視窗
選擇視窗 → 安全性時間軸…,或按 ⌘K 並挑選安全性時間軸。視窗會以總覽分頁開啟;左上角的分段控制項可在總覽與時間軸之間切換。整個應用程式只有一個這樣的視窗;再次選擇該選單項目會把它帶到前面。
總覽分頁
總覽的標題是過去 24 小時——「Bromure 的安全性引擎為你的代理程式做了哪些判定。」它有三個部分。
磚塊
五個磚塊統計最近 24 小時的事件:
| 磚塊 | 統計 |
|---|---|
| 已封鎖 | 判定為封鎖的每一個事件(在時間軸中為紅色),來自任何引擎。 |
| 已允許 | 判定為放行某項內容的每一個事件(在時間軸中為綠色),來自任何引擎。 |
| 代理的憑證 | 憑證中介事件:憑證替換、被封鎖的外洩嘗試,以及你從入侵警示中允許的主機。 |
| 已檢查的套件 | 供應鏈事件:代理伺服器看到的每一次套件取得。 |
| 已替換的個人資料 | 個人資料保護以替身換掉的個人資料值的數量——是值,不是請求數。 |
點選一個磚塊會跳到時間軸分頁。代理的憑證、已檢查的套件與已替換的個人資料會以各自的引擎篩選後開啟;已封鎖與已允許會在所有引擎上開啟,並以那個結果篩選。
防護
防護表格列出這台 Mac 上的每一台機器,附上它的顏色,並顯示它開啟了哪些防護——綠色勾號表示開啟,灰色破折號表示關閉:
| 欄位 | 打勾的條件 |
|---|---|
| 防火牆 | 該機器在防護欄窗格中有出向連線規則,或會拒絕未匹配的流量。 |
| 供應鏈 | 至少有一層供應鏈防護是開著的(年齡門檻、OSV、socket.dev、指令碼剝除,或 lockfile 詢問)。 |
| 防護欄 | 防護欄確實限制了某些東西:寫入政策不是關閉的服務、一項資料庫防護欄、一條出向連線規則,或任何設為使用前詢問的憑證。逐請求的不安全繞道(X-bromure-insecure)不算,因為它是放寬而不是限制。 |
| 提示注入 | 至少有一個提示注入偵測器是開著的。 |
| 個人資料保護 | 個人資料保護的總開關開著,且至少有一個類別。 |
| 憑證中介 | 總是:憑證替換無法關閉。 |
用它來找出那些比其他機器少了些防護的機器。要更改某一項,請開啟那台機器的設定(見設定參考)。
最近的封鎖
最近的封鎖列出最近 24 小時內最新的封鎖,最新的在前,最多八項:什麼被封鎖、引擎與判定,以及距今多久。沒有任何東西被封鎖時,這份清單會隱藏。
時間軸分頁
時間軸是一張包含每個事件的表格,最新的在前:
| 欄位 | 顯示 |
|---|---|
| 時間 | 判定的日期與時間。 |
| 工作區 | 事件發生所在的機器。當你鏡像遠端 Mac 時,它會顯示 Mac · 機器。 |
| 引擎 | 哪個引擎做的判定,附它的圖示。 |
| 條件 | 引擎看到的東西:主機、套件、片段、金鑰…把游標移上去可看完整文字;文字可以選取與拷貝。 |
| 判定 | 它判定了什麼,以顏色編碼。 |
| (最後一欄) | 防火牆的列會有一個快速動作按鈕:允許…、封鎖…或規則…——見防火牆快速動作。對於被 OSV 或 socket.dev 封鎖的套件,允許… → 在此工作區中一律允許 … 會將它加入工作區的受信任套件(加入後顯示現已允許)——見信任被封鎖的套件。 |
顏色在這個視窗中處處同義:
- 綠 — 已允許:放行、通過、已簽署。
- 紅 — 已封鎖:拒絕、駁回、扣留。
- 藍 — 資訊性:既不是放行也不是封鎖的轉換,例如憑證替換、經年齡門檻過濾的版本清單,或被剝除的安裝指令碼。
表格上方的工具列可篩選它:
- **篩選事件…**會比對引擎、條件、判定、機器名稱與 Mac 名稱中的文字。
- 引擎彈出選單(預設為所有引擎)列出有事件的引擎。
- 結果彈出選單(預設為所有結果)把表格縮到已封鎖或已允許的事件。
- 當你至少鏡像一台遠端 Mac 時,會出現一個機器彈出選單:所有機器、此 Mac,或某一台遠端 Mac。
- 事件計數(「8 個事件」)會反映篩選條件。
清除會清空視窗。它只是把事件隱藏起來:它們仍在磁碟上,但已清除的事件在應用程式重新啟動後不會回來。**輸出…**在下方說明。
各個引擎
| 引擎 | 它的列記錄什麼 | 判定範例 |
|---|---|---|
| 憑證中介 | 線路上的憑證替換(憑證)、外洩嘗試,以及從入侵警示中允許的主機。 | 「已換入 sk-a…9f」(藍);「已封鎖——外洩嘗試,VM 已暫停」(紅),若該機器關掉了外洩警示則為「已封鎖——外洩嘗試(警示已關,VM 未暫停)」;「使用者已於本工作階段允許」(綠) |
| 憑證使用 | 主機代表代理程式執行的 SSH 簽章與 AWS SigV4 簽署。 | 「已簽署」(綠) |
| 防火牆 | 出向防火牆的裁決,依主機、通訊埠與協定,並附上做出判定的規則——沒有規則命中時為「預設政策」——直接連線與經由代理設定的連線皆然。主機是程式所要求的名稱(www.wikipedia.org),而不是它解析到的 CDN 名稱。同一個目的地只有在距上次報告已過一分鐘後,或在規則變更後立即,才會再次報告;允許的連線只有在機器記錄它們時才會列出,且重複的會摺疊成一列並附計數。因規則變更而被切斷的已開啟連線會有自己的一列。 | 「允許——allow tcp github.com:443」(綠);「拒絕——預設政策」(紅);「連線已關閉——『allow tcp github.com:443』不再允許它」(紅);與規則無關而被丟棄的連線(IPv6、QUIC、IP 分段)為「拒絕」(紅) |
| 防護欄 | 寫入政策的封鎖(防護欄),附方法與路徑。 | 「已封鎖——…」(紅) |
| 供應鏈 | 每一次套件取得,包含 apt 的 .deb 下載(供應鏈防護)。 | 「已檢查」、「已下載」(綠);「已檢查——比冷卻期更新的版本已隱藏」、「已剝除安裝指令碼」(藍);「已封鎖——…」(紅) |
| 提示注入 | 偵測命中,附偵測器、來源與一小段片段(提示注入偵測)。 | 「記錄」、「已允許」(綠);「已封鎖」(紅) |
| 個人資料保護 | 個人資料被替換的請求,附各類型的計數與主機——絕不含值(個人資料保護)——以及掃描用盡模型預算的請求。 | 「已換成替身」(藍);「部分——已達模型預算;僅套用模式規則」(藍) |
| 代理程式委派 | 一個代理程式透過委派送給另一個的每一則訊息。 | 「已轉送」(藍);「已扣留——提示注入」(紅) |
| 上游 TLS | 主機拒絕信任的上游憑證,以及逐請求不安全繞道的使用。 | 「已封鎖——…」(紅);「已允許——已略過憑證驗證(X-bromure-insecure);未注入任何憑證」(綠) |
防火牆快速動作
防火牆的列可以當場變更機器的出向連線規則。使用該列最後一欄的按鈕,或在該列上按右鍵。變更會儲存到機器上,若它正在執行則立即套用——不需重新啟動。
- 被封鎖的連線——允許 主機:連接埠 會為恰好那個主機、協定與連接埠新增一條允許規則,並放在最前面,好勝過封鎖它的規則。當主機是子網域時,也會提供允許整個 網域:連接埠(例如
api.github.com對應github.com),它涵蓋所有子網域——但 CDN 與共享主機網域(cloudflare.net、cloudfront.net、amazonaws.com、github.io、herokuapp.com…)除外,在那裡「整個」會意味著該供應商的每一位客戶。主機解析時經過的其他名稱(它的 CDN 別名)會接著以確切主機的形式提供。每一項都可選永遠、15 分鐘、1 小時或直到工作區停止;有時限的規則會在時間到時自行關閉。如果相同的規則已經存在,選單會先說明它的狀態(已關閉,或開啟到何時),所以重新允許絕不會悄悄縮短它。如果是拒絕規則封鎖了它,也可以關閉或移除那條規則。 - 由規則允許的連線——關閉規則會保留規則但讓它不再命中(在編輯器中再次勾選即可恢復);移除規則會刪除它。變更後被拒絕的連線會被切斷。
- 因沒有規則命中而被允許的連線——封鎖 主機(或封鎖整個 網域)會新增一條針對它所有協定與連接埠的拒絕規則。
在這裡建立的規則使用程式所要求的名稱,也就是代理檢查的同一個名稱,所以無論程式如何連線都會成立。
如果規則在這一列記錄之後已經變更——被封鎖的主機後來被允許了,或反過來——按鈕會顯示現已允許或現已封鎖,而它的選單會指出現在做出判定的規則(或預設政策),而不是再次提供同樣的變更。
快速動作只出現在規則變更能影響的列:IPv6、QUIC 或分段的丟棄不會有,web 規則造成的 HTTP 方法封鎖也不會有。在遠端 Mac 的列上,按鈕會呈灰色:請在執行那台機器的 Mac 上,於它的設定中變更規則。
注意:如果機器的設定正開著,規則表會接收這項變更。未儲存的編輯會保留:變更會逐條規則合併進去,表格上方會有一則說明。如果你的編輯無法合併(有一條規則還無法解析),說明會提供重新載入(採用已儲存的規則)或保留我的編輯。
時間軸只記錄安全性判定。檔案讀取、指令、工具呼叫與模型用量都不在其中;那些屬於追蹤。
輸出事件
輸出…(在兩個分頁的工具列上都有)會把事件存成一個 CSV 檔案,預設名稱為 bromure-security-<日期>.csv。從時間軸分頁輸出時,它會存下表格所顯示的內容,套用當前的篩選;從總覽分頁輸出時,它會存下視窗中的每一個事件。列的順序由舊到新,欄位為 time(ISO 8601)、machine(「This Mac」或遠端 Mac 的名稱)、workspace、engine、condition、decision 與 outcome(allowed、blocked 或 info)。
儲存與保留
- 每個事件都會被附加到
~/Library/Application Support/BromureAC/security-timeline/中的每日檔案,每個事件一行 JSON,檔名為<yyyy-MM-dd>.jsonl(UTC 日期)。 - 超過 90 天的檔案會被刪除。
- 啟動時,視窗會重新載入最新的 5,000 個事件,記憶體中最多保有 5,000 個;更舊的仍留在檔案裡。
- 事件只保有預覽:像
sk-a…f9q3這樣的權杖預覽、片段預覽、個人資料計數。不會寫入任何祕密或個人的實際值。
遠端 Mac
引擎在承載那些機器的 Mac 上執行。當遠端用戶端鏡像另一台 Mac 時,它會收到那台 Mac 最新的事件,並在自己的安全性時間軸視窗中,與本機的事件並列顯示。每一台被鏡像的 Mac 的事件都與這台 Mac 的分開保存,這樣機器彈出選單才能把它們分開,而工作區欄位也能寫出該 Mac 的名稱。
與企業遙測的關係
在已向 bromure.io 註冊的 Mac 上,同樣的引擎事件也會以雲端事件(credential.token_swap、egress.firewall、supply_chain.fetch、prompt_injection.detection、privacy.pii_swap 等)送到組織,除非該機器處於私密模式。本機的安全性時間軸與此無關:不論那台 Mac 是否已註冊、不論私密模式是否開啟,它都會記錄每一個事件。見追蹤與稽核與企業版。