凭据

凭据窗格是你为工作区提供其代理所需机密的地方——git 令牌、SSH 密钥、云凭据、数据库密码——而这些机密从不会进入虚拟机。你在此处输入的每个值都会加密存储在你的 Mac 上。在沙箱内部,代理只能看到一个保留结构的假值(例如 brm_…);当某个请求真正离开你的 Mac 时,宿主机侧的代理服务器会将假值换回真实值,并限定在目标宿主机的范围内。

本页是该窗格逐字段的参考说明。其背后的机制——传输边界、确定性假值、宿主机范围限定、失败即关闭的 AWS 重签名器以及沦陷检测器——在凭据与传输边界中有完整记录。要了解安全模型请阅读那一章;要填写各字段请阅读本页。每个凭据的审批写入策略控制项现在位于护栏窗格中,而非此处。

编辑工作区窗口的凭据窗格,在已配置凭据列表上方显示 Git 身份字段,并带有添加凭据按钮和导入 env 文件按钮

注意: 上方截图早于重新设计,可能显示较旧的可折叠区块堆叠。当前窗格仅显示你已配置的凭据,按类别标题分组,外加下文描述的两个按钮。

窗格打开时,Git 身份固定在顶部,其后是你已经配置的凭据列表——别无其他。每个已配置的凭据是一行;过去折叠在窗格上的空白类别已经消失。底部的两个按钮——添加凭据导入 env 文件…——是你添加更多凭据的途径。在你点按存储之前,任何内容都不会生效。

Git 身份

顶部的两个字段设置写入虚拟机内 ~/.gitconfig 的 git 作者身份:

  • user.name——占位符为 Your Name
  • user.email——占位符为 [email protected]

说明文字为:写入虚拟机中的 ~/.gitconfig。两者均留空则保留 git 的默认值。 这些不是机密,也不会被换值——它们只是普通配置,用于让代理进行的提交能正确归属。将某字段留空,则该 git 默认值保持不变。

已配置凭据列表

在 Git 身份下方,窗格仅列出会在会话启动时实际产生换值的凭据,按类别标题分组:

标题其下显示的内容
AGENTS代理窗格中配置的代理 API 密钥(Anthropic、OpenAI、xAI),此处以只读方式显示以供参考。
GIT用于 HTTPS 上 git 的个人访问令牌(GitHub、GitLab、Bitbucket、自托管)。
CLOUDAWS、DigitalOcean、Linear、Kubernetes 上下文以及容器镜像仓库。
DATABASESMongoDB、ClickHouse 和 Elasticsearch 端点。
SSH工作区自己的密钥以及你导入的任何密钥。
OTHER手动的"其他 API 密钥"换值规则。

每一行显示一个图标、一个标题,以及该凭据限定到的一个或多个宿主机(对于 git 令牌是 user@host;对于数据库或镜像仓库是其宿主机;对于 AWS 是 amazonaws.com;以此类推)。右侧的 菜单——也可通过点按该行打开——提供编辑…移除

  • 编辑… 会重新打开该凭据的编辑器,让你更改或显示其字段。
  • 移除 会从工作区删除该凭据。(除重新添加外没有撤销操作;在你存储之前,磁盘上不会移除任何内容。)

AGENTS 下的行是唯一例外:它们的菜单显示在代理中编辑…且没有移除,因为代理密钥归代理窗格所有。选择它会将编辑器切换到那个窗格。

当工作区完全没有凭据时,列表会被空状态取代——尚无凭据——提醒你真实值保留在你的 Mac 上,虚拟机中始终只保存一个假值。

添加凭据

点按添加凭据打开选取表单。它列出应用能够添加的每种凭据类型;每个条目都会打开该类型的编辑器:

类型其保存的内容
Git 令牌用于 GitHub、GitLab 或 Bitbucket 的个人访问令牌。
SSH 密钥导入私钥,或使用每个工作区独立的密钥。
AWS 凭据静态 IAM 密钥或 SSO——在传输时以 SigV4 签名。
DigitalOcean 令牌doctl / API 个人访问令牌。
Linear API 密钥Linear 个人 API 密钥。
Kubernetes一个集群上下文(令牌、客户端证书或 exec 插件)。
容器镜像仓库用于 Docker Hub、ghcr.io 等的镜像仓库登录信息。
数据库MongoDB Data API、ClickHouse 或 Elasticsearch。
其他 API 密钥任何其他令牌——你选择环境变量和宿主机。

代理 API 密钥被特意排除在此选取器之外;底部注释提醒你 Anthropic、OpenAI 和 xAI 密钥在代理窗格中配置。每个编辑器都是一个带完成按钮的表单;各类型的字段在下文各节中描述。

导入 env 文件

点按导入 env 文件… 从现有的 .env 文件——或 ~/.bashrc——中提取凭据。解析器读取纯粹的 KEY=VALUEexport KEY=VALUE 赋值,剥除两侧的引号和尾部的 # comments,并在名称重复时取最后一次赋值。它从不运行 shell:任何需要插值的值($VAR 引用或 $(…) 命令替换)会被跳过而非错误导入,因此将其指向真实的 .bashrc 是安全的。

随后,文件的变量会显示在一个标题为从 <filename> 导入的审阅表单中,分为两组。此表单中每个值都被掩码

已识别的变量会自动映射到其凭据类型:

变量映射到
ANTHROPIC_API_KEYClaude Code API 密钥
OPENAI_API_KEYCodex API 密钥
XAI_API_KEYGrok Build API 密钥
GH_TOKEN / GITHUB_TOKENGitHub 令牌
GITLAB_TOKENGitLab 令牌
AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKENAWS 静态密钥
DIGITALOCEAN_ACCESS_TOKENDigitalOcean 令牌
LINEAR_API_KEYLinear API 密钥

每个已识别的行都有一个复选框。git 令牌还会额外要求填写 Git 用户名(占位符 you),以使凭据完整。如果某个变量映射到工作区已配置的项目,其行会被标记为已配置——勾选以覆盖。 并保持未勾选状态,因此重新导入绝不会悄悄覆盖现有机密。

未识别的变量可以作为通用的其他 API 密钥令牌导入。每一行都带有一个宿主机字段——一个以逗号分隔的主机名列表,假值应在这些主机上被换值(允许多个主机;留空表示任意主机)。环境变量名会同时作为该令牌的名称和假值导出所用的变量名。

按钮显示为导入 N 个凭据,且仅反映你保持勾选的行。导入会将所选内容合并进窗格;你仍需点按存储以持久化它们。

SSH 密钥

SSH 密钥编辑器管理工作区可用于 SSH 认证的密钥。私钥字节从不进入虚拟机:签名通过一个基于 vsock 的进程内 ssh-agent 桥接提供,因此客户机可以请求签名,但永远无法读取密钥。

密钥有两个来源:

  • 工作区自己的 ed25519 密钥对。 新工作区会带有一个预先勾选的生成 ed25519 密钥对开关(除非你的偏好设置模板已经提供了密钥)。一旦密钥存在,编辑器会显示其公钥,并带有复制打开 GitHub 密钥页面按钮(用于粘贴到 github.com/settings/keys),以及一个重新生成开关。
  • 导入的 SSH 密钥。已导入的 SSH 密钥下,点按导入… 打开文件选取器;随后一个表单会询问标签,如果密钥已加密,还会询问口令。口令存储在 macOS 钥匙串中,导入的密钥在每次会话启动时被加载到每个工作区独立的 ssh-agent 中。支持 RSA、ed25519 和 ecdsa 密钥。

Git 令牌(GitHub、GitLab、Bitbucket)

Git 令牌编辑器保存用于 HTTPS 上 git 的个人访问令牌,分为 GitHubGitLabBitbucket 组。正如其说明文字所述:个人访问令牌加密存储在宿主机上,代理服务器将它们换到出站请求上,因此虚拟机中始终只保存假值。ghglab 会自动获取 GH_TOKEN / GITLAB_TOKEN

在某个组中点按添加令牌以添加一行。每一行需要填写宿主机用户名个人访问令牌(带一个显示眼睛按钮和一个指向该托管平台令牌页面的链接)。假值会写入虚拟机内的 ~/.git-credentials 以及 gh / glab CLI 配置中。宿主机字段让你可以将某个条目指向 github.comgitlab.com 或自托管的 GitLab/Gitea/Bitbucket 实例。

Linear

Linear API 密钥编辑器接受单个个人 API 密钥(占位符形如 lin_api_…,带一个打开 Linear API 设置链接)。它作为 LINEAR_API_KEY 注入虚拟机,Linear SDK、MCP 服务器和 CLI 工具会自动获取它,并且仅在发往 linear.app(包括 api.linear.appmcp.linear.app)的请求上以假换真。工作区中的 Linear 密钥也是 Linear 问题定时自动化触发器的前提条件。

Kubernetes

Kubernetes 编辑器每个集群上下文保存一行。Bromure Agentic Coding 在虚拟机内构建一个合成的 ~/.kube/config,使 kubectl 与代理服务器通信,而绝不直接与 API 服务器通信;真实身份保留在宿主机上。

每个上下文有一个名称、一个服务器 URL、一个可选的 CA 证书(PEM 格式,用于让代理服务器验证上游 API 服务器)、一个命名空间,以及一个通过分段控件选择的认证方法:

  • Bearer 令牌——一个静态令牌,在传输时换为真实值。
  • 客户端证书——真实证书和密钥注册在宿主机上用于上游双向 TLS;虚拟机获得一个一次性的自签名证书。
  • Exec 插件——一个命令参数和一个刷新步进器(1–60 分钟)。插件在宿主机上每隔刷新间隔运行一次,新令牌被送入换值映射;虚拟机的 kubectl 从不运行该插件。

每行上的徽章显示它是哪种类型(令牌 / 证书 / exec)。使用导入文件… 将现有的 kubeconfig 解析为每个上下文一行,或使用添加上下文手动添加一个。相应的每个上下文写入策略在护栏窗格中设置。

DigitalOcean

DigitalOcean 令牌编辑器接受单个个人访问令牌(占位符形如 dop_v1_…,带一个指向 DigitalOcean 令牌页面的链接)。它作为 DIGITALOCEAN_ACCESS_TOKEN 注入并写入 ~/.config/doctl/config.yaml,因此无需 doctl auth init。该令牌在发往 digitalocean.com 的请求上以假换真,并且第二个换值条目覆盖了当 docker logindoctl registry loginregistry.digitalocean.com 进行认证时所用的 base64 Basic-auth 形式。

AWS

AWS 凭据编辑器为 aws CLI、SDK、terraform 以及 Claude Code 的 Bedrock 认证模式配置凭据。真实机密从不到达虚拟机——宿主机用真实材料重新签名 SigV4 请求,而绕过代理服务器的请求会从 AWS 收到 InvalidSignatureException。一个认证方法分段控件在以下选项间选择:

  • 静态密钥——访问密钥 ID私有访问密钥、一个可选的会话令牌(仅限 STS)和一个默认区域,外加一个打开 IAM 凭据页面链接。
  • SSO / Identity Center——一个授予对 ~/.aws 的访问权限文件夹选取器,然后是一个从你 ~/.aws/config 中发现的配置文件填充的 SSO 配置文件选取器(带一个刷新按钮)。临时角色凭据在宿主机上解析,当缓存的令牌过期时会在你的浏览器中触发 aws sso login

完整的 AWS 处理——credential_process 辅助程序、重签名器及其限制——见凭据与传输边界

容器镜像仓库

容器镜像仓库编辑器为 docker pull / docker push 保存每个镜像仓库的 HTTP Basic auth。正如说明文字所述,真实密码从不写入虚拟机——bromure 在 ~/.docker/config.json 中放入一个假的 base64("<user>:<derived>"),代理服务器在请求命中匹配的镜像仓库宿主机时于传输上替换为真实值。

添加菜单提供了预设——Docker Hub (docker.io)GitHub Container Registry (ghcr.io)GitLab Container Registry (registry.gitlab.com)Quay (quay.io)其他宿主机…——外加导入 config.json…,它从现有的 ~/.docker/config.json 中提取条目。导入会跳过 credsStore / credHelpers 条目(它们的密码存放在操作系统钥匙串中而非文件里)并报告跳过了多少个。每个镜像仓库行需要填写宿主机用户名密码或令牌。相应的推送/拉取/删除写入策略在护栏窗格中设置。

数据库(MongoDB、ClickHouse、Elasticsearch)

数据库编辑器每个 HTTPS 端点保存一行,按引擎分组。假值以你列出的环境变量名导出,并在其出现的任何地方——请求头、查询参数或请求体——被换为真实值。

每个端点行有:

  • 名称——可选的显示名称。
  • 宿主机——裸主机名;它同时限定换值和该端点的护栏范围。
  • 认证——一个分段控件:用户名 + 密码API 密钥Bearer 令牌。MongoDB 默认为 API 密钥;ClickHouse 和 Elasticsearch 默认为用户名 + 密码
  • 用户名——仅用于 Basic auth。
  • 机密——带一个显示眼睛按钮。
  • 环境变量——一个以逗号分隔的名称列表,假值应以这些名称导出。

新的数据库端点的每个端点写入策略默认为写入前提示,在护栏窗格中设置——特定引擎的分类(哪些 Mongo 操作、哪些 SQL 关键字、哪些 Elasticsearch 路径算作写入)都在那里。

其他 API 密钥

其他 API 密钥编辑器是应对任何 Bromure Agentic Coding 不自动处理的服务的应急方案。每个条目是一条手动换值规则:

  • 名称——该条目的标签。
  • 真实机密——掩码显示(占位符形如 sk_live_…)。
  • 环境变量——假值在虚拟机内导出所用的名称。将其留空则不导出任何内容;那时你需要从会话的欢迎横幅中复制假值。
  • API 宿主机(可选)——换值限定到的一个或多个宿主机(精确匹配或子域,以逗号分隔)。留空表示"在任意宿主机上注入"。

虚拟机看到一个生成的 brm_… 假值,代理服务器在传输时将其换回。

警告: 空的 API 宿主机被特意从不由沦陷检测器门控——它是一个明确的"在任意宿主机上注入"的选择。要控制一个未限定范围的机密,请为它指定一个宿主机,或在护栏窗格中为它开启使用前询问

审批和写入策略位于护栏中

凭据窗格中不再有需要审批才能使用复选框。每个凭据的许可门控——现在以使用前询问的形式呈现——以及每个服务的写入策略都位于护栏窗格中,该窗格为每个已配置的凭据列出一行。在此处配置机密;在那里决定允许代理如何使用它。

该窗格如何存储

此窗格中的一切都是机密,因此在保存时它会从纯文本的 profile.json 中拆分出来,存入工作区加密的 secrets.enc(AES-GCM,密钥来自 macOS 钥匙串,权限 600)。自动处理的提供方——Anthropic、OpenAI、GitHub、GitLab、DigitalOcean、Kubernetes——除了你在此处配置的内容外无需手动录入;主代理自己的 API 密钥在代理窗格中设置。

设置参考

编辑器其保存的内容
Git 身份写入 ~/.gitconfiguser.name / user.email;不是机密,不换值。
SSH 密钥工作区密钥对 + 导入的密钥;通过 vsock ssh-agent 提供,私钥字节从不进入虚拟机。
Git 令牌用于 GitHub / GitLab / Bitbucket 的每个宿主机用户名 + PAT;假值在 ~/.git-credentialsgh/glab 配置中。
Linear API 密钥作为 LINEAR_API_KEY 导出的 lin_api_… 密钥;在 linear.app 上换值。
Kubernetes上下文(bearer / 客户端证书 / exec 插件);虚拟机中合成的 ~/.kube/config
DigitalOcean 令牌作为 DIGITALOCEAN_ACCESS_TOKEN 导出的 dop_v1_… 令牌 + doctl 配置。
AWS 凭据静态密钥或 SSO / Identity Center;宿主机重新签名 SigV4,机密从不进入虚拟机。
容器镜像仓库每个镜像仓库的 Basic auth;假值在 ~/.docker/config.json 中。
数据库每个端点的机密以命名环境变量导出;在请求头、查询或请求体中换值。
其他 API 密钥手动换值规则:真实机密、环境变量、可选的宿主机过滤;虚拟机看到一个 brm_… 假值。
导入 env 文件….env~/.bashrc 批量导入;已识别的变量自动映射,未识别的作为限定范围的通用令牌导入。

每个凭据的使用前询问和写入策略在护栏窗格中设置。

相关章节

  • 凭据与传输边界——此窗格背后完整的安全模型。
  • 代理——主代理的 API 密钥以及订阅/Bedrock 认证模式。
  • 护栏——针对这些相同机密的每个凭据审批和每个服务写入策略。
  • 设置参考——所有窗格一览。