AppSec Kit
CLI interativo que configura ferramentas de segurança para esteiras CI/CD com um único comando. Roda no projeto do dev e gera os arquivos prontos para uso.
Suporte: Python · Node.js · GitHub Actions
O que ele instala
| Camada | Python | Node.js |
|---|---|---|
| SAST | Bandit | Semgrep |
| Dependency scanning | pip-audit | npm audit |
| Secret scanning | Gitleaks + detect-secrets | Gitleaks + detect-secrets |
| Pre-commit hooks | pre-commit | pre-commit |
Pré-requisitos
- Python 3.12+
- uv ou pip
- Git inicializado no projeto-alvo (
git init)
Instalação
Via uv (recomendado)
uv tool install appsec-tool-kit
Via pip
pip install appsec-tool-kit
Direto do repositório (desenvolvimento)
git clone https://github.com/seu-usuario/appsec-tool-kit.git
cd appsec-tool-kit
uv sync
uv run appsec-kit
Tutorial passo a passo
Passo 1 — Acesse o diretório do seu projeto
cd /caminho/do/seu/projeto
O kit detecta automaticamente o tipo de projeto pelo conteúdo do diretório.
Passo 2 — Execute o wizard
appsec-kit
Você verá a tela inicial:
╭──────────────────────────────────────────────────────╮
│ AppSec Kit – Security toolkit for CI/CD pipelines │
╰──────────────────────────────────────────────────────╯
Detected: Python project
? Project type:
> Python
Node.js
Passo 3 — Confirme o tipo de projeto
O kit detecta automaticamente se é Python ou Node.js pelo conteúdo do diretório:
- Python → presença de
pyproject.toml,requirements.txt,setup.pyouPipfile - Node.js → presença de
package.json
Confirme ou altere com as setas e pressione Enter.
Passo 4 — Confirme o diretório-alvo
? Target directory: [.]
Pressione Enter para usar o diretório atual ou informe outro caminho:
? Target directory: ../meu-outro-projeto
Passo 5 — Selecione as camadas de segurança
? Security layers to configure:
> [x] SAST (Static Analysis)
[x] Dependency Scanning
[x] Secret Scanning
[x] Pre-commit Hooks
Use Espaço para marcar/desmarcar, Enter para confirmar.
Por padrão todas as camadas ficam selecionadas.
Passo 6 — Aguarde a geração dos arquivos
✓ .github/workflows/security.yml (created)
✓ .pre-commit-config.yaml (created)
↻ pyproject.toml (updated)
Passo 7 — Siga as instruções pós-instalação
O wizard exibe os próximos passos automaticamente:
╭─ Next steps ──────────────────────────────────────────╮
│ pip install pre-commit detect-secrets │
│ detect-secrets scan > .secrets.baseline │
│ pre-commit install │
│ │
│ # Commit e push para ativar o GitHub Actions: │
│ git add .github/ .pre-commit-config.yaml │
│ git commit -m "chore: add appsec security config" │
│ git push │
╰───────────────────────────────────────────────────────╯
Execute esses comandos na ordem.
O que é gerado
.github/workflows/security.yml
Workflow do GitHub Actions com jobs separados por camada:
- SAST — análise estática roda a cada push/PR
- Dependency scan — verifica vulnerabilidades nas dependências
- Secret scanning — Gitleaks varre o histórico git em busca de segredos expostos
O workflow é acionado em push e pull requests para main e master.
.pre-commit-config.yaml
Hooks que rodam localmente antes de cada commit:
Python:
repos:
- repo: https://github.com/PyCQA/bandit # SAST
- repo: https://github.com/Yelp/detect-secrets # secrets
- repo: https://github.com/pypa/pip-audit # dependências
Node.js:
repos:
- repo: https://github.com/Yelp/detect-secrets # secrets
- repo: https://github.com/gitleaks/gitleaks # secrets
- repo: local # npm audit
pyproject.toml (apenas Python)
Adiciona configuração do Bandit ao arquivo existente:
[tool.bandit]
exclude_dirs = ["tests", "venv", ".venv"]
skips = []
Casos de uso comuns
Só quero pre-commit, sem CI
Execute o wizard e desmarque as camadas SAST, Dependency Scanning e Secret Scanning. Mantenha apenas Pre-commit Hooks selecionado.
Só quero o GitHub Actions, sem pre-commit
Desmarque Pre-commit Hooks e mantenha as outras camadas.
Projeto já tem .pre-commit-config.yaml
O kit sobrescreve o arquivo com status (updated). Faça backup antes se necessário:
cp .pre-commit-config.yaml .pre-commit-config.yaml.bak
appsec-kit
Atualizando versões dos hooks
As versões dos hooks pre-commit ficam fixadas em .pre-commit-config.yaml. Para atualizar todas para o latest:
pre-commit autoupdate
Ferramentas utilizadas
| Ferramenta | Finalidade | Docs |
|---|---|---|
| Bandit | SAST para Python | bandit.readthedocs.io |
| Semgrep | SAST para JavaScript/TypeScript | semgrep.dev |
| pip-audit | CVEs em dependências Python | pypi.org/project/pip-audit |
| detect-secrets | Detecção de segredos | github.com/Yelp/detect-secrets |
| Gitleaks | Varredura de segredos no histórico git | gitleaks.io |
| pre-commit | Framework de git hooks | pre-commit.com |
Metadata
Release files for appsec-tool-kit 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| appsec_tool_kit-0.2.0.tar.gz | 13.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| appsec_tool_kit-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.4 kB
Release files / appsec_tool_kit-0.2.0.tar.gz
| Download URL | appsec_tool_kit-0.2.0.tar.gz |
|---|---|
| Size | 13.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5d9aa3c6ef4d3f774e3d3df038b688c1c41e2a1d018f4b75f770d6b8fc10aa87
|
|
BLAKE2b-256 checksum How to use checksums |
7bfad309b2ef4d9ecbf19e471f854b1bf439e7473cb4694231c8b60fb7ba2c2e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Zorin OS","version":"18","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / appsec_tool_kit-0.2.0-py3-none-any.whl
| Download URL | appsec_tool_kit-0.2.0-py3-none-any.whl |
|---|---|
| Size | 10.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ac26d26b9dad68d140c428dee3057777d960602fa475ef148ba2374555f9f650
|
|
BLAKE2b-256 checksum How to use checksums |
22fbf3dce4bf4debdae5725924eadbf4d6e17b721d54c28433e91910b4d8612a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Zorin OS","version":"18","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|