
Impede você de commitar segredos e credenciais em repositórios git
.. contents:: :depth: 2
::
git secrets --scan [-r|--recursive] [--cached] [--no-index] [--untracked] [<arquivos>...]
git secrets --scan-history
git secrets --install [-f|--force] [<diretório-destino>]
git secrets --list [--global]
git secrets --add [-a|--allowed] [-l|--literal] [--global] <padrão>
git secrets --add-provider [--global] <comando> [argumentos...]
git secrets --register-aws [--global]
git secrets --aws-provider [<arquivo-de-credenciais>]
O git-secrets verifica commits, mensagens de commit e merges --no-ff para
evitar a adição de segredos aos seus repositórios git. Se um commit,
mensagem de commit ou qualquer commit em um histórico de merge --no-ff corresponder a um
de seus padrões de expressão regular proibidos configurados, o commit é
rejeitado.
O git-secrets deve ser colocado em algum lugar no seu PATH para que seja reconhecido
pelo git ao executar git secrets.
*nix (Linux/macOS)
Você pode usar o alvo ``install`` do Makefile fornecido para instalar o ``git secrets`` e a página man.
Você pode personalizar o caminho de instalação usando as variáveis PREFIX e MANPREFIX.
::
make install
Windows
~~~~~~~
Execute o script powershell ``install.ps1`` fornecido. Isso copiará os arquivos necessários
para um diretório de instalação (``%USERPROFILE%/.git-secrets`` por padrão) e adicionará
o diretório ao ``PATH`` do usuário atual.
::
PS > ./install.ps1
Homebrew (para usuários macOS)
::
brew install git-secrets
.. warning::
**Você ainda não terminou! Você DEVE instalar os hooks git para cada repositório que
deseja usar com** ``git secrets --install``.
Aqui está um exemplo rápido de como garantir que um repositório git seja verificado por segredos em cada commit::
cd /caminho/para/meu/repositorio
git secrets --install
git secrets --register-aws
Adicione um modelo de configuração se quiser adicionar hooks a todos os repositórios que você inicializar ou clonar no futuro.
::
git secrets --register-aws --global
Adicione hooks a todos os seus repositórios locais.
::
git secrets --install ~/.git-templates/git-secrets
git config --global init.templateDir ~/.git-templates/git-secrets
Adicione provedores personalizados para verificar credenciais de segurança.
::
git secrets --add-provider -- cat /caminho/para/arquivo/de/padroes/secretos
Com o git-secrets também é possível verificar um repositório incluindo todas as revisões:
::
git secrets --scan-history
Modos de Operação
Cada uma dessas opções deve aparecer primeiro na linha de comando.
``--install``
Instala hooks git para um repositório. Após a instalação dos hooks para um repositório
git, commits e merges não-fast-forward para esse repositório serão impedidos
de fazer commit de segredos.
``--scan``
Verifica um ou mais arquivos em busca de segredos. Quando um arquivo contém um segredo, o
texto correspondente do arquivo sendo verificado será escrito na saída padrão e o
script será encerrado com um status diferente de zero. Cada linha correspondente será escrita com
o nome do arquivo que correspondeu, dois pontos, o número da linha que correspondeu,
dois pontos e, em seguida, a linha de texto que correspondeu. Se nenhum arquivo for fornecido,
todos os arquivos retornados por ``git ls-files`` são verificados.
``--scan-history``
Verifica o repositório incluindo todas as revisões. Quando um arquivo contém um segredo, o
texto correspondente do arquivo sendo verificado será escrito na saída padrão e o
script será encerrado com um status diferente de zero. Cada linha correspondente será escrita com
o nome do arquivo que correspondeu, dois pontos, o número da linha que correspondeu,
dois pontos e, em seguida, a linha de texto que correspondeu.
``--list``
Lista a configuração do ``git-secrets`` para o repositório atual ou no git config
global.
``--add``
Adiciona um padrão proibido ou permitido.
``--add-provider``
Registra um provedor de segredos. Provedores de segredos são executáveis que, quando
invocados, geram padrões proibidos que o ``git-secrets`` deve tratar como
proibidos.
``--register-aws``
Adiciona padrões comuns da AWS ao git config e garante que chaves presentes
em ``~/.aws/credentials`` não sejam encontradas em nenhum commit. As seguintes
verificações são adicionadas:
- IDs de Chave de Acesso AWS via ``(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}``
- Chaves de API Amazon Bedrock. De longa duração via ``ABSK[A-Za-z0-9+/]{109,}=*`` e de curta duração via ``bedrock-api-key-YmVkcm9jay5hbWF6b25hd3MuY29t``
- Atribuições de Chave Secreta de Acesso AWS via ":" ou "=" cercadas por aspas
opcionais
- Atribuições de ID de conta AWS via ":" ou "=" cercadas por aspas opcionais
- Padrões permitidos para chaves AWS de exemplo (``AKIAIOSFODNN7EXAMPLE`` e
``wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY``)
- Credenciais conhecidas de ``~/.aws/credentials``
.. note::
Embora os padrões registrados por este comando devam capturar a maioria
das instâncias de credenciais AWS, esses padrões **não** garantem
capturá-las **todas**. ``git-secrets`` deve ser usado como um meio extra de
garantia — você ainda precisa fazer sua devida diligência para garantir que
não faça commit de credenciais em um repositório.
``--aws-provider``
Provedor de segredos que gera credenciais encontradas em um arquivo INI. Você pode
opcionalmente fornecer o caminho para um arquivo INI.
Opções para ``--install``
-f, --force
Sobrescreve hooks existentes se presentes.
<diretório-destino>
Quando fornecido, instala hooks git no diretório especificado. O diretório
atual é assumido se <diretório-destino> não for fornecido.
Se o ``<diretório-destino>`` fornecido não estiver em um repositório git, o
diretório será criado e os hooks serão colocados em
``<diretório-destino>/hooks``. Isso pode ser útil para criar diretórios de modelo git
para usar com ``git init --template <diretório-destino>``.
Você pode executar ``git init`` em um repositório que já foi inicializado.
Da `documentação do git init <https://git-scm.com/docs/git-init>`_:
Da documentação do git: Executar ``git init`` em um repositório existente
é seguro. Não sobrescreverá coisas que já estão lá. O
principal motivo para reexecutar ``git init`` é incorporar modelos recém-adicionados
(ou mover o repositório para outro lugar se
``--separate-git-dir`` for fornecido).
Os seguintes hooks git são instalados:
1. ``pre-commit``: Usado para verificar se algum dos arquivos alterados no commit
usa padrões proibidos.
2. ``commit-msg``: Usado para determinar se uma mensagem de commit contém
padrões proibidos.
3. ``prepare-commit-msg``: Usado para determinar se um commit de merge
introduzirá um histórico que contenha um padrão proibido em algum ponto.
Observe que este hook é invocado apenas para merges não fast-forward.
.. note::