Interactive CLI to configure security tools for CI/CD pipelines
Project description
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 |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file appsec_tool_kit-0.1.1.tar.gz.
File metadata
- Download URL: appsec_tool_kit-0.1.1.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c30547be5c5d503dfa0c32330aa49abe433a31eff79a87b312db98f24fb5a2e0
|
|
| MD5 |
3f9012b7ee68ba63effd7a42ae2d0b98
|
|
| BLAKE2b-256 |
a6435f787d954aa2a01127ea4c17fc5b69b3776cdf0d6ce3b8b7c66c3f6ed33f
|
File details
Details for the file appsec_tool_kit-0.1.1-py3-none-any.whl.
File metadata
- Download URL: appsec_tool_kit-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e419961ee777d45c41af3040f47bd262ba834a7a2bd6b587da63039f65a1f21c
|
|
| MD5 |
6e7326bffb63b2aa73b3ebc0713d6b2f
|
|
| BLAKE2b-256 |
a137fdb805de3900490c623f4e609f5250d3dd1f2cad9c42045c5a7c2eb3cd63
|