O Que É Secret Masking?
O secret masking varre a saída dos logs de CI e substitui qualquer valor de secret registrado por ***, para que credenciais não apareçam nos logs de build.
Os logs de build costumam ser visíveis para muitas pessoas e ficam armazenados por muito tempo. Se um secret fosse impresso, ele vazaria amplamente. O masking é a rede de segurança: a plataforma conhece os valores dos secrets e os redige da saída automaticamente.
Como o masking funciona
Quando você registra um secret, a plataforma grava seu valor exato e observa a saída dos logs em busca dele, substituindo as correspondências por asteriscos antes de o log ser armazenado ou exibido. Você também pode registrar valores adicionais para mascarar em tempo de execução.
Um pequeno exemplo
No GitHub Actions, echo "::add-mask::$DERIVED_TOKEN" instrui o runner a redigir um valor computado em tempo de execução (não apenas os secrets configurados), para que um token que você deriva no meio do job também seja mascarado nas linhas de log subsequentes.
Onde o masking falha
- Secrets transformados - codificados em base64, URL-encoded ou divididos - podem não corresponder.
- Um secret embutido dentro de uma string impressa maior pode escapar.
- Secrets gravados em um arquivo que o job faz upload como artifact não são mascarados.
Trate como último recurso
O masking reduz a exposição acidental, mas não é uma garantia. A defesa real é simplesmente não imprimir secrets e não derivar a saída de log a partir deles. O masking pega os erros, não o design.
Cuidado com a saída de debug
Ativar logs verbosos ou de debug pode despejar variáveis de ambiente e linhas de comando que incluem valores derivados de secret em formas que o masking não detecta. Tenha cautela ao habilitar logs de debug em jobs que lidam com credenciais.
Principais conclusões
- O masking redige automaticamente os valores de secret registrados nos logs de CI.
- Secrets transformados ou embutidos podem escapar do masking.
- Trate o masking como um recurso de última linha, não como substituto de um manuseio cuidadoso.