憑證

憑證 窗格讓你把代理程式需要的機密——git 權杖、SSH 金鑰、雲端憑證、資料庫密碼——交給機器(在設定編輯器中稱為工作區),而這些機密永遠不會進入 VM。每個值都加密保存在你的 Mac 上。在 VM 內,代理程式只看得到一個替代值(例如 brm_…);當請求離開你的 Mac 時,代理伺服器會把替代值換成真值,而且只針對該憑證所屬的主機。

本頁是逐一欄位的參考。其機制——傳輸邊界、替代值、主機範圍限制、AWS 重新簽署、入侵警示——在憑證與傳輸邊界中說明。憑證在使用前是否需要你核准,以及它可以進行哪些寫入,則在防護欄中設定。

憑證窗格:Git 身份,帶預留文字「您的姓名」與 you@example.com,以及說明「寫入虛擬機中的 ~/.gitconfig」;一個顯示「尚無憑證」的空白狀態;以及「新增憑證」與「匯入 env 檔案…」按鈕。

附註: 程式設計代理程式的模型供應商(Anthropic、OpenAI、xAI、Moonshot、z.ai、Bedrock、OpenRouter、自訂伺服器)的 API 金鑰與登入不在這裡設定。它們位於 偏好設定 › 模型,或機器自己的模型覆寫中。

Git 身分

頂端的兩個欄位設定寫入 VM 中 ~/.gitconfig 的作者身分:

  • user.name——預留位置為 Your Name。
  • user.email——預留位置為 [email protected]。

「寫入虛擬機中的 ~/.gitconfig。兩者皆留空可保留 git 的預設值。」這些不是機密,也不會被替換。變更會在 儲存 時套用到執行中的機器。

已匯入的設定檔

如果首次設定已把你 Mac 上的設定檔匯入這台機器,它們會出現在 已匯入的設定檔 之下:每個以 ~/<路徑> 顯示,並註明其中有多少項設定、排除了多少個機密,以及停用了哪些設定。「原樣複製到虛擬機。其中的密鑰已被剔除——它們作為上方的憑證匯入,因此虛擬機只會看到偽造值。」減號按鈕會把檔案從機器中移除。

憑證清單

下方的窗格只列出這台機器實際擁有的憑證,依類別標題分組:

標題其下顯示的內容
GITGitHub、GitLab、Bitbucket 或自行託管平台的個人存取權杖。
CLOUDAWS、DigitalOcean、Linear、Twilio、Kubernetes 內容、容器登錄庫。
DATABASESMongoDB、ClickHouse 與 Elasticsearch 端點。
SSH機器自己的金鑰,以及你匯入的任何金鑰。
OTHER「Other API key」替換規則。

每一列顯示一個圖示、一個名稱,以及該憑證所適用的一或多台主機。其 ⋯ 選單(或點按該列)提供 編輯… 與 移除。在你點按 儲存 之前,不會從磁碟移除任何東西。

在模型供應商移到「模型」之前就已帶有自己代理程式 API 金鑰的機器上,也可能出現 AGENTS 群組。這些列沒有 移除;其選單提供 在「模型」中編輯…,會開啟 偏好設定 › 模型(在偏好設定本身,或遠端機器的編輯器中,則會切換到該編輯器的 模型 窗格)。

沒有任何憑證時,窗格會顯示 尚無憑證——「加入 API 金鑰、權杖或 SSH 金鑰——或匯入 env 檔案。真實值保留在你的 Mac 上;虛擬機器中永遠只有假值。」

新增憑證

新增憑證 會開啟憑證類型清單;每種類型都會開啟自己的編輯表單,以 完成 關閉:

類型副標題
Git tokenGitHub、GitLab 或 Bitbucket 的個人存取權杖
SSH key匯入私密金鑰,或使用工作區專屬的金鑰
AWS credentials靜態 IAM 金鑰或 SSO——在傳輸途中以 SigV4 簽署
DigitalOcean tokendoctl/API 個人存取權杖
Linear API keyLinear 個人 API 金鑰
Twilio API key帳號/API 金鑰 SID + 機密——在傳輸途中使用 HTTP Basic
Kubernetes一個叢集內容(權杖、用戶端憑證或 exec 外掛)
Container registryDocker Hub、ghcr.io 等登錄庫的登入
DatabaseMongoDB 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_TOKENGitHub 權杖(會要求 Git 使用者名稱)
GITLAB_TOKEN、GLAB_TOKENGitLab 權杖(會要求 Git 使用者名稱)
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKENAWS 靜態金鑰
DIGITALOCEAN_ACCESS_TOKEN、DIGITALOCEAN_TOKEN、DO_TOKENDigitalOcean 權杖
LINEAR_API_KEYLinear API 金鑰
TWILIO_ACCOUNT_SID、TWILIO_API_KEY_SID、TWILIO_API_KEYTwilio SID
TWILIO_AUTH_TOKEN、TWILIO_API_SECRET、TWILIO_API_KEY_SECRETTwilio 機密
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 的 op CLI 取得機密,並每 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 tokenGitHub、GitLab、Bitbucket 各主機的使用者名稱與權杖。
Linear API keyLINEAR_API_KEY,在 linear.app 上替換。
Twilio API keyTWILIO_ACCOUNT_SID 原樣提供,TWILIO_AUTH_TOKEN 為替代值,在 twilio.com 上替換。
Kubernetes內容(權杖、用戶端憑證、exec 外掛)。
DigitalOcean tokenDIGITALOCEAN_ACCESS_TOKEN 與 doctl 設定。
AWS credentials靜態金鑰或 SSO;由 Mac 重新簽署請求。也用於簽署 Bedrock。
Container registry各登錄庫的登入;替代值位於 ~/.docker/config.json。
Database每個端點的機密,以你命名的變數匯出。
Other API key機密或 1Password 參照、變數、選用的主機。
匯入 env 檔案…從 .env 或 ~/.bashrc 大量匯入。

相關章節