憑證
憑證 窗格讓你把代理程式需要的機密——git 權杖、SSH 金鑰、雲端憑證、資料庫密碼——交給機器(在設定編輯器中稱為工作區),而這些機密永遠不會進入 VM。每個值都加密保存在你的 Mac 上。在 VM 內,代理程式只看得到一個替代值(例如 brm_…);當請求離開你的 Mac 時,代理伺服器會把替代值換成真值,而且只針對該憑證所屬的主機。
本頁是逐一欄位的參考。其機制——傳輸邊界、替代值、主機範圍限制、AWS 重新簽署、入侵警示——在憑證與傳輸邊界中說明。憑證在使用前是否需要你核准,以及它可以進行哪些寫入,則在防護欄中設定。
附註: 程式設計代理程式的模型供應商(Anthropic、OpenAI、xAI、Moonshot、z.ai、Bedrock、OpenRouter、自訂伺服器)的 API 金鑰與登入不在這裡設定。它們位於 偏好設定 › 模型,或機器自己的模型覆寫中。
Git 身分
頂端的兩個欄位設定寫入 VM 中 ~/.gitconfig 的作者身分:
- user.name——預留位置為 Your Name。
- user.email——預留位置為 [email protected]。
「寫入虛擬機中的 ~/.gitconfig。兩者皆留空可保留 git 的預設值。」這些不是機密,也不會被替換。變更會在 儲存 時套用到執行中的機器。
已匯入的設定檔
如果首次設定已把你 Mac 上的設定檔匯入這台機器,它們會出現在 已匯入的設定檔 之下:每個以 ~/<路徑> 顯示,並註明其中有多少項設定、排除了多少個機密,以及停用了哪些設定。「原樣複製到虛擬機。其中的密鑰已被剔除——它們作為上方的憑證匯入,因此虛擬機只會看到偽造值。」減號按鈕會把檔案從機器中移除。
憑證清單
下方的窗格只列出這台機器實際擁有的憑證,依類別標題分組:
| 標題 | 其下顯示的內容 |
|---|---|
| GIT | GitHub、GitLab、Bitbucket 或自行託管平台的個人存取權杖。 |
| CLOUD | AWS、DigitalOcean、Linear、Twilio、Kubernetes 內容、容器登錄庫。 |
| DATABASES | MongoDB、ClickHouse 與 Elasticsearch 端點。 |
| SSH | 機器自己的金鑰,以及你匯入的任何金鑰。 |
| OTHER | 「Other API key」替換規則。 |
每一列顯示一個圖示、一個名稱,以及該憑證所適用的一或多台主機。其 ⋯ 選單(或點按該列)提供 編輯… 與 移除。在你點按 儲存 之前,不會從磁碟移除任何東西。
在模型供應商移到「模型」之前就已帶有自己代理程式 API 金鑰的機器上,也可能出現 AGENTS 群組。這些列沒有 移除;其選單提供 在「模型」中編輯…,會開啟 偏好設定 › 模型(在偏好設定本身,或遠端機器的編輯器中,則會切換到該編輯器的 模型 窗格)。
沒有任何憑證時,窗格會顯示 尚無憑證——「加入 API 金鑰、權杖或 SSH 金鑰——或匯入 env 檔案。真實值保留在你的 Mac 上;虛擬機器中永遠只有假值。」
新增憑證
新增憑證 會開啟憑證類型清單;每種類型都會開啟自己的編輯表單,以 完成 關閉:
| 類型 | 副標題 |
|---|---|
| Git token | GitHub、GitLab 或 Bitbucket 的個人存取權杖 |
| SSH key | 匯入私密金鑰,或使用工作區專屬的金鑰 |
| AWS credentials | 靜態 IAM 金鑰或 SSO——在傳輸途中以 SigV4 簽署 |
| DigitalOcean token | doctl/API 個人存取權杖 |
| Linear API key | Linear 個人 API 金鑰 |
| Twilio API key | 帳號/API 金鑰 SID + 機密——在傳輸途中使用 HTTP Basic |
| Kubernetes | 一個叢集內容(權杖、用戶端憑證或 exec 外掛) |
| Container registry | Docker Hub、ghcr.io 等登錄庫的登入 |
| Database | MongoDB Data API、ClickHouse 或 Elasticsearch |
| Other API key | 任何其他權杖——由你選擇環境變數與主機 |
代理程式 API 金鑰(Anthropic、OpenAI、xAI、Moonshot)不在此清單中:它們在 偏好設定 › 模型 中設定。
匯入 env 檔案
匯入 env 檔案… 會從既有的 .env 檔案或 ~/.bashrc 讀取憑證。剖析器讀取 KEY=VALUE 與 export KEY=VALUE 行,去除引號與行尾的 # 註解,並在同一名稱重複出現時保留最後一次指派。它絕不會執行 shell:需要展開的值($VAR、$(…))會被略過,而不是被錯誤匯入,因此使用真正的 .bashrc 也很安全。
變數會出現在檢閱表單 Import from 檔名 中,每個值都會遮蔽。
已辨識 的變數會對應到一種憑證類型:
| 變數 | 轉換為 |
|---|---|
GH_TOKEN、GITHUB_TOKEN | GitHub 權杖(會要求 Git 使用者名稱) |
GITLAB_TOKEN、GLAB_TOKEN | GitLab 權杖(會要求 Git 使用者名稱) |
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN | AWS 靜態金鑰 |
DIGITALOCEAN_ACCESS_TOKEN、DIGITALOCEAN_TOKEN、DO_TOKEN | DigitalOcean 權杖 |
LINEAR_API_KEY | Linear API 金鑰 |
TWILIO_ACCOUNT_SID、TWILIO_API_KEY_SID、TWILIO_API_KEY | Twilio SID |
TWILIO_AUTH_TOKEN、TWILIO_API_SECRET、TWILIO_API_KEY_SECRET | Twilio 機密 |
ANTHROPIC_API_KEY、OPENAI_API_KEY、XAI_API_KEY、MOONSHOT_API_KEY、KIMI_API_KEY | 模型設定中對應供應商的 API 金鑰:Anthropic、OpenAI、xAI 或 Moonshot |
代理程式金鑰會放到代理程式取得供應商金鑰的地方。在這台 Mac 上,它們會進入 偏好設定 › 模型,因此每台繼承全域設定的機器都會取得它們,而且就像該看板上的任何變更一樣,匯入時便立即儲存。對於從鏡像視窗編輯的遠端機器,它們會進入該機器自己的 模型 覆寫,並以 儲存 儲存;在遠端的偏好設定中,則進入該 Mac 的全域設定。若供應商已經有金鑰,該金鑰會標記為 Already configured。
與機器已有項目相符的變數會標記為 Already configured — check to overwrite.,並保持未勾選,因此重新匯入絕不會悄悄取代機密。
未辨識 的變數可以匯入為 Other API key 項目。每一項都有 主機 欄位——替代值要被替換的主機,以逗號分隔;留空表示任何主機。變數名稱同時成為該項目的名稱,以及匯出替代值所用的變數。
屬於 1Password 參照(op://vault/item/field)的值,會匯入為儲存參照而非機密本身的 Other API key(請參閱其他 API 金鑰)。
按鈕顯示 Import N credentials。匯入會把所選項目加入窗格;點按 儲存 即可保留。
SSH 金鑰
私密金鑰永遠不會進入 VM:簽章由 Mac 上的 ssh-agent 透過私人虛擬通訊端提供,因此 VM 可以請求簽章,卻無法讀取金鑰。
- 機器自己的 ed25519 金鑰。 新機器預設勾選 產生 ed25519 金鑰對(除非預設範本已提供金鑰)。金鑰存在後,編輯器會顯示其公開金鑰,並附上 拷貝 與 開啟 GitHub 金鑰頁面,以及 重新產生 開關。產生新金鑰後,應用程式會立即顯示它,方便你把它加到 GitHub。
- 匯入的 SSH 金鑰。 匯入… 會開啟檔案選擇器,接著要求輸入 標籤,若金鑰已加密,還需要 密語(儲存在 macOS 鑰匙圈中)。支援 RSA、ed25519 與 ecdsa 金鑰。
- 主機代理程式的金鑰。 從主機代理程式… 會列出你 Mac 上某個 ssh-agent 持有的金鑰——適用於無法以檔案複製的金鑰,例如透過 gpg-agent 使用的 YubiKey、Secretive 或 1Password。選擇代理程式的 socket(留空表示應用程式的
SSH_AUTH_SOCK;選單會列出在這台 Mac 上找到的代理程式,例如~/.gnupg/S.gpg-agent.ssh),按一下 載入,再勾選要加入的金鑰。只有這些金鑰會顯示給機器。
SSH 金鑰的變更會在機器重新啟動時套用。
Git 權杖(GitHub、GitLab、Bitbucket)
分為 GitHub、GitLab 與 Bitbucket 群組。加入權杖 會新增一列,包含 主機、使用者名稱 與 個人存取權杖(附顯示按鈕,以及前往該平台權杖頁面的連結)。主機可以指向 github.com、gitlab.com 或自行託管的執行個體。替代值會寫入 ~/.git-credentials 以及 gh/glab 的設定中;gh 與 glab 也會讀取 GH_TOKEN/GITLAB_TOKEN。
Linear
一把個人 API 金鑰(預留文字形如 lin_api_…,附有前往 Linear API 設定的連結)。以 LINEAR_API_KEY 匯出,且只在送往 linear.app 及其子網域的請求中替換。由 Linear 觸發的自動化也需要 Linear 金鑰。
Twilio
「Account SID + Auth Token from console.twilio.com (or an API Key SID SK… + its secret).」兩個欄位:
- Account SID (AC…) or API Key SID (SK…)——SID 是會出現在請求網址中的識別碼,因此不視為機密;VM 會在
TWILIO_ACCOUNT_SID中原樣取得它。 - Auth Token / API Key secret——VM 會在
TWILIO_AUTH_TOKEN中取得替代值;代理伺服器會在送往twilio.com的請求中放入真值。
機密旁的按鈕會開啟 Twilio Console。編輯器也有 使用時需要核准 核取方塊,與防護欄為每個憑證顯示的相同。
Kubernetes
每個叢集內容一列。Bromure 會在 VM 中寫入一個讓 kubectl 指向代理伺服器的 ~/.kube/config;真正的身分則留在 Mac 上。每個內容都有名稱、伺服器 URL、選用的 CA 憑證(PEM)、命名空間 與一種驗證方式:
- Bearer 權杖——在傳輸途中替換。
- 用戶端憑證——真正的憑證與金鑰由 Mac 用於上游連線;VM 取得的是一次性的憑證。
- Exec 外掛——一個 指令、參數 以及 重新整理 間隔(1–60 分鐘)。外掛在 Mac 上執行,新的權杖會被替換進去;VM 中的
kubectl永遠不會執行它。
匯入檔案… 會把既有的 kubeconfig 讀成每個內容一列;加入內容 可以手動加入一個。你用 Bromure 本身建立的叢集另外處理——請參閱 Kubernetes 叢集與登錄檔。在機器執行中加入或編輯的內容,會在儲存時生效,包括其叢集的 CA 與用戶端憑證;應用程式仍會提議重新啟動。
DigitalOcean
一個個人存取權杖(預留文字形如 dop_v1_…)。以 DIGITALOCEAN_ACCESS_TOKEN 匯出並寫入 doctl 的設定中,因此不需要 doctl auth init。在送往 digitalocean.com 的請求中替換,包括 docker login/doctl registry login 對 registry.digitalocean.com 使用的 Basic 驗證形式。
AWS
供 aws CLI、各種 SDK、terraform 等工具使用。真正的機密永遠不會抵達 VM:Mac 會用真正的金鑰重新簽署每個請求,而繞過代理伺服器的請求會被 AWS 拒絕(InvalidSignatureException)。認證方式 控制項可選擇:
- 靜態金鑰——存取金鑰 ID、秘密存取金鑰、選用的 工作階段權杖(「選用 — 僅 STS」)以及 預設區域,並附有 開啟 IAM 憑證頁面。
- SSO / Identity Center——授予對你
~/.aws檔案夾的存取權,然後從你的~/.aws/config中選擇一個 SSO 設定檔。暫時憑證會在 Mac 上取得,必要時 Mac 會在你的瀏覽器中執行aws sso login。(在 iPhone、iPad 與 Vision Pro 用戶端中,則改為輸入設定檔名稱。)
當「模型」中啟用了 Bedrock 但沒有 Bedrock API 金鑰時,機器的 AWS 憑證也會簽署 Amazon Bedrock 請求。AWS 的變更會在機器重新啟動時套用。
容器登錄庫
供 docker pull/docker push 使用、每個登錄庫各自的登入。VM 的 ~/.docker/config.json 中存放替代值,而代理伺服器會在送往該登錄庫的請求中放入真正的密碼。加入 選單提供 Docker Hub (docker.io)、GitHub Container Registry (ghcr.io)、GitLab Container Registry (registry.gitlab.com)、Quay (quay.io)、其他主機… 與 匯入 config.json…(密碼存放在憑證輔助程式或鑰匙圈中的項目會被略過並計數)。每一列都有 主機、使用者名稱 與 密碼或權杖。
資料庫(MongoDB、ClickHouse、Elasticsearch)
每個 HTTPS 端點一列,依引擎分組。每一列都有選用的 名稱、主機(也用來限定該端點的寫入政策)、一種 驗證 方式——Username + password、API 金鑰 或 Bearer 權杖(MongoDB 預設為 API 金鑰,其他預設為使用者名稱 + 密碼)——密碼驗證用的 使用者名稱、機密,以及 環境變數:以逗號分隔、用來匯出替代值的名稱。替代值無論出現在標頭、查詢字串或本文中都會被替換。
其他 API 金鑰
適用於 Bromure 本身未處理的任何服務。每個項目都是一條替換規則:
- 名稱——給你自己看的標籤(預留文字「e.g. Stripe (sandbox)」)。
- 真實密鑰——金鑰本身(預留文字
sk_live_…)。你也可以改為貼上 1Password 參照(op://vault/item/field):只會儲存參照,Bromure 會在啟動時用 1Password 的opCLI 取得機密,並每 2 分鐘更新一次。若尚未安裝,取得 1Password CLI 連結可以幫上忙。 - 環境變數——代理程式找到替代值的位置(預留文字
STRIPE_API_KEY)。留空則不匯出任何東西。 - API host(s) (optional)——主機名稱,以逗號分隔,不含
https://或路徑。真正的金鑰只會在送往這些主機及其子網域的請求中替換。留空表示允許任何主機。
警告: 沒有主機的項目會在任何主機上替換,而且不受入侵警示保護——這正是「任何主機」的意思。若要控管未限定範圍的機密,請為它指定主機,或在防護欄中為它開啟 使用時需要核准。
OpenShell 提供者設定檔
在沙盒引擎為 OpenShell + Sentry 的機器上,窗格最後會有一個 OpenShell provider profiles 區段(僅限 Mac)。
Attach provider profile… 會匯入一份 OpenShell 提供者設定檔(openshell profile export 寫出的 YAML 或 JSON)。一張表單會要求 Instance name(預設為設定檔的 ID),以及設定檔中每個憑證的值(必填的標有 *);按 Attach 即可加入。每個值都會成為這台機器的一個憑證,名稱為 實例 · 憑證,綁定到設定檔的主機與路徑,並以設定檔指定的環境變數提供。設定檔的端點會以規則的形式加入,好讓它們連得到。和任何憑證一樣,Bromure 會把真正的值留在 Mac 上,只給 VM 替身。垃圾桶按鈕會卸下設定檔並移除它的憑證。沒有宣告任何端點的設定檔會被拒絕,因為它的憑證無處可用。會 refresh 或使用 token_grant 的憑證,會被當成你輸入的靜態值使用。
Use OpenShell credential placeholders(預設關閉)會讓代理程式在它的環境中看到 openshell:resolve:env:NAME,而不是 Bromure 那種以假亂真的權杖——適用於這台機器以環境變數傳遞的憑證,就像在 OpenShell 下一樣。代理伺服器會把真正的值換進請求標頭;只有在端點設定了 request_body_credential_rewrite 或 websocket_credential_rewrite 時,才會換進請求內文或 WebSocket 訊息。每個憑證仍然只在自己的主機上有效。以其他格式送出的憑證(git 與登錄庫的登入、訂閱的登入)保留 Bromure 的替身。有些工具會檢查權杖的格式,可能會拒絕預留位置。下次 VM 啟動時生效。
變更何時生效
Git 身分、git 權杖、Linear、Twilio、DigitalOcean、容器登錄庫、資料庫與其他 API 金鑰會在 儲存 時套用到執行中的機器。SSH 金鑰與 AWS 憑證需要重新啟動;儲存時應用程式會提議重新啟動。Kubernetes 內容在儲存時即可運作,應用程式也會提議重新啟動。OpenShell 憑證預留位置在下次 VM 啟動時生效。
此窗格中的一切都儲存在機器加密的 secrets.enc 中,絕不會存放在 profile.json。
設定參考
| 編輯器 | 其保存的內容 |
|---|---|
| Git 身份 | ~/.gitconfig 的 user.name/user.email;非機密。 |
| SSH key | 機器的金鑰與匯入的金鑰;由 Mac 的 ssh-agent 提供。 |
| Git token | GitHub、GitLab、Bitbucket 各主機的使用者名稱與權杖。 |
| Linear API key | LINEAR_API_KEY,在 linear.app 上替換。 |
| Twilio API key | TWILIO_ACCOUNT_SID 原樣提供,TWILIO_AUTH_TOKEN 為替代值,在 twilio.com 上替換。 |
| Kubernetes | 內容(權杖、用戶端憑證、exec 外掛)。 |
| DigitalOcean token | DIGITALOCEAN_ACCESS_TOKEN 與 doctl 設定。 |
| AWS credentials | 靜態金鑰或 SSO;由 Mac 重新簽署請求。也用於簽署 Bedrock。 |
| Container registry | 各登錄庫的登入;替代值位於 ~/.docker/config.json。 |
| Database | 每個端點的機密,以你命名的變數匯出。 |
| Other API key | 機密或 1Password 參照、變數、選用的主機。 |
| 匯入 env 檔案… | 從 .env 或 ~/.bashrc 大量匯入。 |