Pular para o conteúdo principal

Secrets no Playbook

Nenhum valor de secret mora no repositório. O frontmatter declara só os nomes, em required_secrets, e essa lista é uma lista de permissão: só o que está nela chega àquela execução.

O caminho de um secret em produção​

  1. O valor fica no cofre do Kadu, cadastrado por ambiente em Configurações → Secrets.
  2. No começo da execução, o Kadu entrega só os secrets listados em required_secrets da tarefa, como variáveis de ambiente, e os registra para mascaramento.
  3. O corpo da skill lê $KOBANA_ACCESS_TOKEN, $FINTERA_TOKEN direto do ambiente.
  4. Antes de enviar qualquer evento, log, pendência ou resultado ao console, a instrumentação troca o valor de cada secret por uma máscara.

O mascaramento vale para toda variável de required_secrets, qualquer que seja o nome, e pega o valor como está, escapado em JSON (inclusive JSON dentro de JSON) e, num valor de várias linhas, linha a linha. Ele ignora valores com menos de 6 caracteres e não reconhece um valor transformado (base64, URL).

O mascaramento é a última linha de defesa; a primeira é não produzir o vazamento. Nunca ecoe, logue ou inclua o valor de uma secret no resultado, em eventos ou em pendências.

Provisionar um secret novo: a ordem importa​

  1. Adicione o nome em required_secrets da tarefa e faça o merge.
  2. Confira que a sincronização rodou e listou a tarefa em "Tarefas atualizadas". Antes disso, a lista antiga continua valendo.
  3. Cadastre o valor no ambiente, antes do próximo horário se a tarefa tiver schedules.

Na ordem inversa, a execução chama o sistema externo com a variável vazia e falha no meio, e não no começo.

Configuração também é secret​

A lista de permissão é o único canal de variáveis de ambiente do Kadu. Entra nela também o que não é segredo mas precisa poder mudar por organização: o id de um projeto no Linear, o id de uma entidade no ERP (REPORT_LINEAR_PROJECT_ID, FINTERA_ENTITY_ID).

Isso pega quem escreve ${VAR:-padrão} no corpo: uma variável lida com padrão e fora da lista de permissão nunca é sobrescrevível pelo Kadu. A skill funciona, o padrão vale sempre, e ninguém percebe até precisar mudar o valor sem deploy. Para conferir, cruze as variáveis que o corpo lê com required_secrets. O que sobrar tem que ser exportado pelo próprio corpo (diretório de trabalho, por exemplo), nunca configuração.

Acrescentar uma variável opcional à lista é seguro: sem valor no cofre, ela só não chega. A exceção é o endpoint de disparo, que recusa a chamada com 422 missing_secrets quando um secret da lista não tem valor no ambiente.

Inventário no kadu.yaml​

Cada ambiente do kadu.yaml pode listar as chaves que deve ter. Isso não entrega nada a tarefa nenhuma: serve para a sincronização avisar quando uma chave esperada não tem valor naquele ambiente.

required_secrets (na tarefa)secrets (no ambiente do kadu.yaml)
O que élista de permissão da execuçãoinventário esperado do ambiente
Efeitoa variável chega à execuçãoaviso na sincronização se faltar valor

Em desenvolvimento local​

Não há cofre: os valores de teste vêm de um .env fora do git (por exemplo sandbox/.env, a partir de um sandbox/.env.example versionado só com os nomes). Fora do Kadu a instrumentação roda em modo de simulação, então nenhum secret é enviado a lugar nenhum. Ver Desenvolvimento local.