Credenciais

O painel Credenciais é onde dá a uma máquina (um espaço de trabalho, no editor de definições) os segredos de que o seu agente precisa — tokens git, chaves SSH, credenciais de nuvem, palavras-passe de bases de dados — sem que esses segredos alguma vez entrem na VM. Cada valor é guardado encriptado no seu Mac. Dentro da VM o agente só vê um substituto (por exemplo brm_…); quando um pedido sai do seu Mac, o proxy troca o substituto pelo valor real, e só para os anfitriões a que essa credencial pertence.

Esta página é a referência campo a campo. O mecanismo — a fronteira de transmissão, os substitutos, a limitação por anfitrião, a reassinatura AWS, o alerta de comprometimento — é explicado em Credenciais e a fronteira de transmissão. Se uma credencial precisa da sua aprovação antes de ser usada, e que escritas pode fazer, define-se em Salvaguardas.

O painel Credenciais: Identidade do Git com os textos de exemplo Seu nome e you@example.com e a legenda Gravado em ~/.gitconfig na VM, um estado vazio a dizer Nenhuma credencial ainda, e os botões Adicionar credencial e Importar arquivo env…

Nota: As chaves de API e os inícios de sessão dos fornecedores de modelos dos agentes de programação (Anthropic, OpenAI, xAI, Moonshot, z.ai, Bedrock, OpenRouter, servidores personalizados) não se definem aqui. Estão em Preferências › Modelos, ou na substituição Modelos própria de uma máquina.

Identidade Git

Os dois campos no topo definem a identidade de autor gravada em ~/.gitconfig na VM:

  • user.name — marcador de posição O Seu Nome.
  • user.email — marcador de posição [email protected].

«Gravado em ~/.gitconfig na VM. Deixe em branco para manter os padrões do git.» Não são segredos e não são trocados. As alterações aplicam-se a uma máquina em execução ao clicar em Guardar.

Ficheiros de configuração importados

Se a configuração inicial importou ficheiros de configuração do seu Mac para esta máquina, aparecem em Arquivos de configuração importados: cada um como ~/<caminho>, com o número de definições que contém, quantos segredos ficaram de fora e que definições foram desativadas. «Copiados como estão para a VM. Os segredos foram deixados de fora — eles entram como credenciais acima, então a VM só vê um valor falso.» O botão de menos remove um ficheiro da máquina.

A lista de credenciais

Por baixo, o painel lista apenas as credenciais que esta máquina tem de facto, sob cabeçalhos de categoria:

CabeçalhoO que aparece por baixo
GITTokens de acesso pessoal para GitHub, GitLab, Bitbucket ou forjas alojadas por si.
CLOUDAWS, DigitalOcean, Linear, Twilio, contextos Kubernetes, registos de contentores.
DATABASESEndpoints MongoDB, ClickHouse e Elasticsearch.
SSHA chave própria da máquina e quaisquer chaves que tenha importado.
OTHERRegras de troca «Other API key».

Cada linha mostra um ícone, um nome e o anfitrião ou anfitriões a que a credencial se aplica. O seu menu ⋯ (ou um clique na linha) oferece Editar… e Remover. Nada é removido do disco até clicar em Guardar.

Também pode aparecer um grupo AGENTS, em máquinas que ainda têm uma chave de API de agente própria de antes de os fornecedores de modelos passarem para Modelos. Essas linhas não têm Remover; o seu menu oferece Editar em Modelos…, que abre Preferências › Modelos (nas próprias Preferências, ou no editor de uma máquina remota, muda para o painel Modelos desse editor).

Sem credenciais, o painel mostra Nenhuma credencial ainda — «Adicione uma chave de API, um token ou uma chave SSH — ou importe um arquivo env. Os valores reais ficam no seu Mac; a VM só recebe um valor falso.»

Adicionar uma credencial

Adicionar credencial abre uma lista de tipos de credencial; cada um abre a sua própria folha de edição, fechada com Concluído:

TipoSubtítulo
Git tokenToken de acesso pessoal para GitHub, GitLab ou Bitbucket
SSH keyImportar uma chave privada, ou usar a chave própria do espaço de trabalho
AWS credentialsChaves IAM estáticas ou SSO — assinadas com SigV4 na transmissão
DigitalOcean tokenToken de acesso pessoal doctl / API
Linear API keyChave de API pessoal do Linear
Twilio API keySID de conta/chave de API + segredo — HTTP Basic na transmissão
KubernetesUm contexto de cluster (token, certificado de cliente ou plugin exec)
Container registryInício de sessão num registo para Docker Hub, ghcr.io e outros
DatabaseMongoDB Data API, ClickHouse ou Elasticsearch
Other API keyQualquer outro token — escolhe a variável de ambiente e o(s) anfitrião(ões)

As chaves de API de agentes (Anthropic, OpenAI, xAI, Moonshot) não estão nesta lista: definem-se em Preferências › Modelos.

Importar um ficheiro env

Importar arquivo env… lê credenciais de um ficheiro .env existente ou de um ~/.bashrc. O analisador lê linhas KEY=VALUE e export KEY=VALUE, retira aspas e # comentários no fim da linha, e mantém a última atribuição de um nome repetido. Nunca executa uma shell: um valor que precise de expansão ($VAR, $(…)) é ignorado em vez de ser importado mal, por isso é seguro usar um .bashrc real.

As variáveis aparecem numa folha de revisão, Import from nome do ficheiro, com todos os valores ocultos.

As variáveis RECONHECIDOS correspondem a um tipo de credencial:

Variável(is)Passa a ser
GH_TOKEN, GITHUB_TOKENToken do GitHub (pede um Nome de usuário do Git)
GITLAB_TOKEN, GLAB_TOKENToken do GitLab (pede um Nome de usuário do Git)
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKENChaves estáticas AWS
DIGITALOCEAN_ACCESS_TOKEN, DIGITALOCEAN_TOKEN, DO_TOKENToken do DigitalOcean
LINEAR_API_KEYChave de API Linear
TWILIO_ACCOUNT_SID, TWILIO_API_KEY_SID, TWILIO_API_KEYSID do Twilio
TWILIO_AUTH_TOKEN, TWILIO_API_SECRET, TWILIO_API_KEY_SECRETSegredo do Twilio
ANTHROPIC_API_KEY, OPENAI_API_KEY, XAI_API_KEY, MOONSHOT_API_KEY, KIMI_API_KEYA chave de API do fornecedor correspondente nas definições de modelos: Anthropic, OpenAI, xAI ou Moonshot

As chaves de agentes vão para onde os agentes obtêm as chaves dos seus fornecedores. Neste Mac, vão para Preferências › Modelos, pelo que todas as máquinas que herdam as definições globais as recebem, e ficam guardadas assim que importa, como qualquer alteração nesse quadro. Numa máquina remota editada a partir de uma janela espelho, vão para a substituição Modelos própria dessa máquina e são guardadas com Guardar; nas Preferências de um Mac remoto, para as definições globais desse Mac. Uma chave é marcada Already configured quando o fornecedor já tem uma.

Uma variável que corresponda a algo que a máquina já tem é marcada Already configured — check to overwrite. e fica desmarcada, para que uma nova importação nunca substitua um segredo em silêncio.

As variáveis NÃO RECONHECIDOS podem ser importadas como entradas Other API key. Cada uma tem um campo Host(s) — os anfitriões onde o substituto é trocado, separados por vírgulas; em branco significa qualquer anfitrião. O nome da variável passa a ser tanto o nome da entrada como a variável sob a qual o substituto é exportado.

Um valor que seja uma referência do 1Password (op://vault/item/field) é importado como uma Other API key que guarda a referência, não o segredo (consulte Outras chaves de API).

O botão diz Import N credentials. Importar acrescenta a seleção ao painel; clique em Guardar para a manter.

Chaves SSH

As chaves privadas nunca entram na VM: as assinaturas são servidas por um ssh-agent no Mac através de um socket virtual privado, pelo que a VM pode pedir uma assinatura mas não consegue ler a chave.

  • A chave ed25519 própria da máquina. As máquinas novas têm Gerar um par de chaves ed25519 marcado (a menos que o modelo Predefinições já forneça uma chave). Quando existe uma chave, o editor mostra a sua chave pública com Copiar e Abrir a página de chaves do GitHub, e um interruptor Regenerar. Logo após gerar uma chave nova, a aplicação mostra-a para que a possa adicionar ao GitHub.
  • Chaves SSH importadas. Importar… abre um seletor de ficheiros e depois pede um Rótulo e, se a chave estiver encriptada, uma Frase-senha (guardada no Keychain do macOS). São suportadas chaves RSA, ed25519 e ecdsa.
  • Chaves de um agente do anfitrião. Do agente do anfitrião… lista as chaves que um ssh-agent do seu Mac detém — para chaves que não podem ser copiadas como ficheiro, como uma YubiKey por trás do gpg-agent, o Secretive ou o 1Password. Escolha o socket do agente (vazio significa o SSH_AUTH_SOCK da aplicação; o menu oferece os agentes encontrados neste Mac, p. ex. ~/.gnupg/S.gpg-agent.ssh), clique em Carregar e marque as chaves a adicionar. Só essas chaves são mostradas à máquina.

As alterações às chaves SSH aplicam-se quando a máquina reinicia.

Tokens git (GitHub, GitLab, Bitbucket)

Divididos nos grupos GitHub, GitLab e Bitbucket. Adicionar token acrescenta uma linha com um Host, um Nome de usuário e um Token de acesso pessoal (com um botão para o mostrar e uma ligação para a página de tokens da forja). O anfitrião pode apontar para github.com, gitlab.com ou uma instância alojada por si. O substituto é gravado em ~/.git-credentials e na configuração do gh / glab; o gh e o glab também leem GH_TOKEN / GITLAB_TOKEN.

Linear

Uma chave de API pessoal (texto de exemplo com a forma lin_api_…, com uma ligação para as definições de API do Linear). Exportada como LINEAR_API_KEY e trocada só em pedidos para linear.app e os seus subdomínios. Uma chave do Linear é também aquilo de que precisam as automações acionadas pelo Linear.

Twilio

«Account SID + Auth Token from console.twilio.com (or an API Key SID SK… + its secret).» Dois campos:

  • Account SID (AC…) or API Key SID (SK…) — o SID é um identificador que viaja nos URLs dos pedidos, por isso não é tratado como segredo; a VM recebe-o tal como está em TWILIO_ACCOUNT_SID.
  • Auth Token / API Key secret — a VM recebe um substituto em TWILIO_AUTH_TOKEN; o proxy coloca o verdadeiro em pedidos para twilio.com.

Um botão ao lado do segredo abre a consola do Twilio. O editor tem também a caixa Exigir aprovação para usar, a mesma que as Salvaguardas mostram para cada credencial.

Kubernetes

Uma linha por contexto de cluster. O Bromure escreve na VM um ~/.kube/config que aponta o kubectl para o proxy; a identidade real fica no Mac. Cada contexto tem um nome, um URL do servidor, um certificado da CA opcional (PEM), um Namespace e um método de autenticação:

  • Token portador — trocado na transmissão.
  • Certificado de cliente — o certificado e a chave reais são usados pelo Mac na ligação a montante; a VM recebe um descartável.
  • Plugin exec — um Comando, Args e um intervalo Atualizar (1–60 minutos). O plugin corre no Mac e o token novo é trocado; o kubectl na VM nunca o executa.

Importar arquivo… lê um kubeconfig existente para uma linha por contexto; Adicionar contexto acrescenta um à mão. Os clusters que cria com o próprio Bromure são tratados à parte — consulte Clusters Kubernetes e registos. Um contexto acrescentado ou editado com a máquina em execução funciona ao Guardar, incluindo a CA do seu cluster e o certificado de cliente; a aplicação continua a oferecer um reinício.

DigitalOcean

Um token de acesso pessoal (texto de exemplo com a forma dop_v1_…). Exportado como DIGITALOCEAN_ACCESS_TOKEN e gravado na configuração do doctl, pelo que doctl auth init não é necessário. Trocado em pedidos para digitalocean.com, incluindo a forma de autenticação Basic que docker login / doctl registry login usam contra registry.digitalocean.com.

AWS

Para a CLI aws, os SDKs, o terraform e ferramentas semelhantes. O segredo real nunca chega à VM: o Mac reassina cada pedido com a chave real, e um pedido que contorne o proxy é rejeitado pela AWS (InvalidSignatureException). Um controlo Método de autenticação permite escolher:

  • Chaves estáticas — ID da chave de acesso, Chave de acesso secreta, um Token de sessão opcional («Opcional — apenas STS») e uma Região padrão, com Abrir a página de credenciais do IAM.
  • SSO / Identity Center — conceda acesso à sua pasta ~/.aws e escolha um Perfil SSO do seu ~/.aws/config. As credenciais temporárias são obtidas no Mac, que executa aws sso login no seu navegador quando necessário. (No cliente para iPhone, iPad e Vision Pro, escreve antes o nome do perfil.)

As credenciais AWS de uma máquina também assinam pedidos ao Amazon Bedrock quando o Bedrock está ativado em Modelos sem uma chave de API do Bedrock. As alterações à AWS aplicam-se quando a máquina reinicia.

Registos de contentores

Inícios de sessão por registo para docker pull / docker push. O ~/.docker/config.json da VM contém um substituto, e o proxy coloca a palavra-passe real em pedidos para esse registo. O menu Adicionar oferece Docker Hub (docker.io), GitHub Container Registry (ghcr.io), GitLab Container Registry (registry.gitlab.com), Quay (quay.io), Outro host… e Importar config.json… (as entradas cuja palavra-passe vive num auxiliar de credenciais ou num porta-chaves são ignoradas e contadas). Cada linha tem um Host, um Nome de usuário e uma Senha ou token.

Bases de dados (MongoDB, ClickHouse, Elasticsearch)

Uma linha por endpoint HTTPS, agrupadas por motor. Cada uma tem um Nome opcional, um Host (que também delimita a política de escrita do endpoint), um método de Autenticação — Username + password, Chave de API ou Token portador (o MongoDB usa chave de API por predefinição, os outros nome de utilizador + palavra-passe) — um Nome de usuário para autenticação por palavra-passe, o Segredo e Variável(is) de ambiente: os nomes, separados por vírgulas, sob os quais o substituto é exportado. O substituto é trocado onde quer que apareça — cabeçalho, query string ou corpo.

Outras chaves de API

Para qualquer serviço que o Bromure não trate por si próprio. Cada entrada é uma regra de troca:

  • Nome — um rótulo para si (texto de exemplo «e.g. Stripe (sandbox)»).
  • Segredo real — a chave (texto de exemplo sk_live_…). Pode colar uma referência do 1Password em vez disso (op://vault/item/field): só a referência é guardada, e o Bromure obtém o segredo com a CLI op do 1Password no arranque e atualiza-o a cada 2 minutos. Uma ligação Obter o 1Password CLI ajuda se não estiver instalada.
  • Variável de ambiente — onde o agente encontra o substituto (texto de exemplo STRIPE_API_KEY). Deixe em branco para não exportar nada.
  • API host(s) (optional) — nomes de anfitrião, separados por vírgulas, sem https:// nem caminho. A chave real só é trocada em pedidos para estes anfitriões e os seus subdomínios. Em branco permite qualquer anfitrião.

Aviso: Uma entrada sem anfitrião é trocada em qualquer anfitrião, e não está coberta pelo alerta de comprometimento — é isso que «qualquer anfitrião» significa. Para manter sob controlo um segredo sem limitação, dê-lhe um anfitrião ou ative para ele Exigir aprovação para usar nas Salvaguardas.

Perfis de fornecedor OpenShell

Numa máquina cujo motor de sandbox é OpenShell + Sentry, o painel termina com uma secção OpenShell provider profiles (só no Mac).

Attach provider profile… importa um perfil de fornecedor OpenShell (o YAML ou JSON que o openshell profile export escreve). Uma folha pede um Instance name (o id do perfil por predefinição) e um valor para cada uma das credenciais do perfil (as obrigatórias estão marcadas com *); Attach acrescenta-as. Cada valor passa a ser uma credencial desta máquina chamada instância · credencial, ligada aos anfitriões e caminhos do perfil, sob as variáveis de ambiente que o perfil indica. Os endpoints do perfil são acrescentados como regra, para serem alcançáveis. O Bromure guarda os valores reais no Mac e dá substitutos à VM, como a qualquer credencial. O botão do caixote do lixo desliga um perfil e remove as suas credenciais. Um perfil que não declare endpoints é recusado, já que as suas credenciais não teriam onde ser usadas. As credenciais que fazem refresh ou usam um token_grant são usadas como o valor estático que escrever.

Use OpenShell credential placeholders (desligado por predefinição) faz o agente ver openshell:resolve:env:NAME no seu ambiente em vez dos tokens parecidos com os reais do Bromure, para as credenciais que esta máquina passa como variáveis de ambiente — tal como sob o OpenShell. O proxy põe o valor real nos cabeçalhos dos pedidos, e nos corpos dos pedidos ou mensagens WebSocket só onde um endpoint define request_body_credential_rewrite ou websocket_credential_rewrite. Cada credencial continua a funcionar só nos seus próprios anfitriões. As credenciais enviadas noutro formato (logins de git e de registos, inícios de sessão de subscrições) mantêm os substitutos do Bromure. Algumas ferramentas verificam o formato de um token e podem rejeitar um marcador. Entra em vigor no próximo arranque da VM.

Quando as alterações se aplicam

A identidade git, os tokens git, o Linear, o Twilio, o DigitalOcean, os registos de contentores, as bases de dados e as outras chaves de API aplicam-se a uma máquina em execução ao clicar em Guardar. As chaves SSH e as credenciais AWS precisam de um reinício; a aplicação oferece-o quando guarda. Os contextos Kubernetes funcionam ao guardar, e a aplicação também oferece um reinício. Os marcadores de credenciais OpenShell entram em vigor no próximo arranque da VM.

Tudo neste painel é guardado no secrets.enc encriptado da máquina, nunca em profile.json.

Referência de definições

EditorO que contém
Identidade do Gituser.name / user.email para ~/.gitconfig; não é secreto.
SSH keyA chave da máquina e as chaves importadas; servidas pelo ssh-agent do Mac.
Git tokenNome de utilizador e token por anfitrião para GitHub, GitLab, Bitbucket.
Linear API keyLINEAR_API_KEY, trocada em linear.app.
Twilio API keyTWILIO_ACCOUNT_SID tal como está, TWILIO_AUTH_TOKEN como substituto, trocado em twilio.com.
KubernetesContextos (token, certificado de cliente, plugin exec).
DigitalOcean tokenDIGITALOCEAN_ACCESS_TOKEN e configuração do doctl.
AWS credentialsChaves estáticas ou SSO; o Mac reassina os pedidos. Também assina o Bedrock.
Container registryInícios de sessão por registo; substituto em ~/.docker/config.json.
DatabaseSegredo por endpoint, exportado sob as variáveis que indicar.
Other API keySegredo ou referência do 1Password, variável, anfitriões opcionais.
Importar arquivo env…Importação em massa a partir de .env ou ~/.bashrc.

Capítulos relacionados