Skip to main content

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.py ou Pipfile
  • 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

appsec_tool_kit-0.1.0.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

appsec_tool_kit-0.1.0-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file appsec_tool_kit-0.1.0.tar.gz.

File metadata

  • Download URL: appsec_tool_kit-0.1.0.tar.gz
  • Upload date:
  • Size: 12.0 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

Hashes for appsec_tool_kit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 850b92785243781df8870e6fada53272b195f7f74b38c48a648fd09293fb07e5
MD5 0dc9740ad5f2a205957b6f543a111f57
BLAKE2b-256 dd15caa35fb8aee7866f2a282e813a6c17e27c81b2a5ff37a46018977129847c

See more details on using hashes here.

File details

Details for the file appsec_tool_kit-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: appsec_tool_kit-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.4 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

Hashes for appsec_tool_kit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 70f7eb29efcb37e299fa08fa9550027ad5e22333239642dd66aec1973c868a85
MD5 661b4d30c87910c1b9595f2ac70471a3
BLAKE2b-256 70049ff278152011302e00794c77ae6ba1de07c7ccc0f6498b3368b87fcdf9b6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page