Secret Gate
Um portão de liberação que conhece seus segredos reais: nada é publicado até que nada seja encontrado.
- Linux or macOS
- Python 3.9+
- Git hooks
- CI

O que ele faz
O Secret Gate responde a uma pergunta antes de qualquer coisa sair das suas mãos, seja um zip de release, uma cópia para o cliente, um push open-source ou o próximo commit: isto contém algum segredo meu? Ele sabe quais são os seus segredos, porque lê os ficheiros onde eles residem, e nunca mostra um: uma deteção indica o ficheiro, a linha e a origem do valor.
- Os seus valores exatos. Todos os valores nos seus ficheiros env, configurações JSON e YAML, ficheiros
.netrce de chaves, procurados como escritos, codificados em base64 e em URL. Uma palavra-passe que parece uma palavra comum, ou um token interno sem prefixo conhecido, é apanhada como qualquer outra. - Segredos de máquinas onde não corre. Crie impressões digitais no seu portátil; o servidor de build encontra esses valores sem nunca os ter em mãos.
- Outras máquinas verificam contra os seus próprios segredos. Os ficheiros vão para cada máquina via SSH, são escaneados lá e apagados. Os segredos nunca se movem, e uma máquina que não consiga responder bloqueia o release.
- Formas, nomes e ruído também. 25 formatos de token, os seus nomes, hosts, domínios e IDs de conta, endereços IP privados, endereços de e-mail pessoais, números de telefone, IBANs, caminhos de pastas pessoais e strings aleatórias junto a nomes com ar de segredo.
- Prova-se a si próprio sempre. Cada scan começa por plantar canários de todos os tipos; se alguma verificação falhar o seu canário, o scan não corre.
- Onde você já trabalha. Pastas, arquivos zip e tar, um hook git pre-commit ou pre-push, códigos de saída para CI, um relatório JSON.
Testado no que enviamos
- Todos os kits que vendemos: os 8 arquivos lançados escaneados contra os 133 valores de segredo na nossa máquina de build e 16.259 impressões digitais do nosso portátil. Todos passaram, em 5,4 segundos no total.
- Um segredo real plantado numa cópia de release foi apanhado em texto simples e codificado em base64, sendo sempre identificado pelo ficheiro de origem. O valor não apareceu em nenhum lugar na saída ou no relatório.
- Um scan remoto via SSH verificou um release contra os 499 valores de segredo de uma segunda máquina em 1,4 segundos, e apanhou um token plantado numa cópia que existia apenas nessa máquina.
O que está incluído
O gate
As quatro verificações, o autoteste, o scan de arquivos e do git-staged, um relatório legível e um JSON.
Impressões digitais
Impressões digitais dos segredos de uma máquina, para um scan noutra, sem os valores.
Varreduras remotas
Os mesmos arquivos verificados em todas as máquinas que contêm segredos, com as regras do seu projeto enviadas junto.
Configuração e CI
Um localizador para seus arquivos de segredos, hooks do git e um workflow do GitHub Actions para arquivos de release.
Requisitos
- Linux ou macOS com Python 3.9 ou mais recente; nada para instalar via pip.
- Git para os hooks, SSH para varreduras remotas.
Boas informações
- Ele lê os arquivos como estão agora. Um segredo já presente no histórico do git permanece lá: rotacione-o.
- Arquivos compactados dentro de uma pasta varrida não são abertos; varra cada arquivo compactado.
- Mantenha os arquivos de impressão digital tão privados quanto os segredos: eles contêm os primeiros 4 caracteres de cada valor com 16 caracteres ou mais.
Perguntas
Em que isso difere do gitleaks ou TruffleHog?
Eles procuram por como os segredos costumam parecer, e são bons nisso. O Secret Gate também sabe quais são os seus segredos de fato: ele lê seus próprios arquivos de segredos e procura por esses valores exatos, então uma senha de banco de dados ou um token interno sem forma reconhecível também é detectado. Ele foi construído para um momento, antes de algo ser enviado, e falha fechado.
Ele envia meus segredos para algum lugar?
Não. Os valores são lidos dos seus arquivos para a memória para a varredura e nunca são impressos, escritos ou enviados; um arquivo de impressão digital, se você criar um, contém um hash e os primeiros 4 caracteres de cada valor. As varreduras remotas enviam os arquivos que você está prestes a enviar para a sua própria máquina; os segredos dessa máquina permanecem nela.
E quanto aos falsos positivos?
Uma detecção significa "olhe para isto". Se estiver tudo bem, adicione uma regra de permissão restrita para esse tipo de detecção na configuração do projeto, por exemplo, seu próprio endereço de suporte. Não há uma chave que desative uma verificação.
Ele pode varrer meu histórico do git?
Não. Ele verifica o que você está prestes a enviar: uma pasta, um arquivo compactado ou o próximo commit. Para um segredo que já está no histórico, rotacione o segredo.
Atualizado: