Pular para o conteúdo

Chaves de publicação

Uma chave de publicação é a credencial que a ferramenta de linha de comando usa para publicar. Ela não é uma senha de pessoa: ela pertence a um repositório e a quem a criou.

c4_<identificador>_<segredo>

O identificador é público; o segredo é a metade que importa. A plataforma guarda apenas o hash do segredo — o valor completo aparece uma única vez, na tela que a cria.

Em Conta → a organização → o repositório → Chaves de publicação.

quem podequalquer membro, para um repositório de visibilidade org
repositório privadoapenas admin e dono
prazoescolhido na criação: 30, 90 ou 365 dias. Padrão: 90
quantasaté 10 chaves ativas por pessoa, por repositório

Qualquer membro poder criar uma chave não é o mesmo que qualquer membro poder publicar qualquer coisa: quem pode publicar em qual ref é decidido no momento do push. Se só o admin pudesse criar chaves, ele seria também o único capaz de distribuir o meio de publicar — e um colega querendo mostrar um rascunho teria de pedir emprestada uma credencial. Chave emprestada é chave que ninguém consegue revogar sem quebrar todo mundo.

Terminal window
cfour login --key c4_xxxxxxxx_yyyyyyyyyyyy
chave guardada como perfil "..." em ~/.config/cfour/credentials (modo 0600)
publica em o-a1b2c3d4e5f6/arquitetura
este repositorio passa a usar "..."

Duas coisas acontecem: a chave é gravada em $XDG_CONFIG_HOME/cfour/credentials (ou ~/.config/cfour/credentials), com permissão 0600 dentro de uma pasta 0700; e este repositório passa a usar aquela chave.

Uma máquina pode guardar chaves de vários repositórios. Cada uma carrega a organização e o repositório dela.

Terminal window
cfour keys # as guardadas, e qual vale aqui
cfour use outro-perfil # troca a deste repositório
cfour use outro --default # troca o padrão da máquina
cfour logout perfil # esquece uma
cfour logout --all # esquece todas

Quem escolhe qual chave vale neste repositório é o campo id: do cfour.yaml — um identificador opaco do registro, e não de uma modelagem. Ele existe só para isso.

A ordem de decisão:

--profile <nome> na linha de comando
CFOUR_KEY no ambiente — vence o arquivo
o vínculo deste repositório
a chave default da máquina
a única que existe

Exporte CFOUR_KEY como segredo do seu CI. Ela vence o arquivo de credenciais, e é a forma certa onde não há ninguém para rodar cfour login. Veja Publicar a partir do CI.

Não versione o arquivo de credenciais.

Toda chave vence. O prazo é escolhido na criação, entre 30, 90 e 365 dias.

O cfour push imprime um aviso nos 14 dias anteriores ao vencimento, no log da execução. Esse é o único canal — a plataforma não envia e-mail nenhum. É o lugar certo: em CI não há ninguém para ler um e-mail, e o log é onde a pessoa olha quando um job falha.

Rotacionar é criar a nova, trocar o segredo no CI, confirmar um push, e revogar a antiga.

a sua própria chavevocê mesmo, a qualquer momento
a chave de outra pessoaadmin ou dono

Revogar a própria chave não é privilégio: é o que se faz no minuto em que se desconfia de um vazamento, e precisar achar um admin antes é como uma chave vazada passa a noite viva.

A chave é marcada como revogada, e não apagada — é o que mantém respondível a pergunta “quem publicou isto, e com o quê”.

Um repositório, e não a organização. Uma chave que vaze consegue sobrescrever os diagramas de um repositório, e não os de todos.

O papel de quem a criou, resolvido agora. Rebaixar ou remover alguém tira o alcance da chave dela no mesmo instante. Se a pessoa deixou de ser membro, a chave para de funcionar.

Não sobrescreve o trabalho alheio. Se outra pessoa publicou naquela ref, a sua chave é recusada com a mensagem dizendo para publicar em outra ref ou pedir a um admin. Um admin passa, porque é ele quem responde pelo repositório.

  • uma chave por lugar de uso: a sua máquina, o CI, e nada mais;
  • prazo curto para chave de máquina pessoal; 365 dias só quando a rotação está automatizada;
  • guardar em cofre de segredos, nunca no repositório;
  • revogar ao trocar de máquina.