Ligne de commande¶
Le paquet installe deux commandes, une par processus (voir Architecture et déploiement), et un client de pipeline :
security-review-mcp: le serveur MCP (stdio ou HTTP), plusenrolletscan-depscôté client ;security-review-controller: le contrôleur (API REST et interface web), la base de données et l'administration ;security-review-ci: le client de pipeline de l'API REST du contrôleur (jetonci, bibliothèque standard de Python uniquement, sans accès à la base) : gate, SARIF, tendance, scans du code et des dépendances.
security-review-mcp¶
| Commande | Rôle | Page |
|---|---|---|
serve [--transport …] [--host …] [--port …] [--tls-certfile …] [--tls-keyfile …] |
Lance le serveur MCP (stdio par défaut, streamable-http pour un serveur partagé) |
Installation |
enroll --url URL --project P [--requested-by QUI] [--cafile CA] [--allow-http] |
Demande le projet sur un serveur partagé, validé par un administrateur (inchangé s'il existe ou est en attente ; demandeur : --requested-by, par défaut votre nom de connexion) ; aucun jeton n'est créé : la réponse donne l'URL de l'interface web où créer un jeton MCP personnel |
Enrôlement |
scan-deps FICHIER… [--url URL] [--fail-on S] [--format json\|text] [--require-database] [--skip-unconfigured] [--token-stdin] [--cafile CA] [--allow-http] |
Analyse manifestes et lockfiles avec la base d'avis d'un serveur MCP partagé (jeton : SECREVIEW_TOKEN), pour un hook de commit |
Dépendances |
Sans commande, security-review-mcp affiche son aide sur stderr et sort avec le code 2
(security-review-mcp --help l'affiche sur stdout) : un hôte MCP doit lancer security-review-mcp serve.
En stdio, le serveur migre lui-même sa base au démarrage (sauf SECREVIEW_DB_AUTO_UPGRADE=false).
En HTTP, il vérifie seulement le schéma : il refuse de démarrer (code 2) tant que
security-review-controller db upgrade n'a pas été lancé.
Anciennes sous-commandes
security-review-mcp token|rules|advisories|db sont dépréciées :
elles affichent un avertissement sur stderr et exécutent la commande
du contrôleur. Remplacez-les par security-review-controller ….
security-review-controller¶
| Commande | Rôle | Page |
|---|---|---|
serve [--host …] [--port …] [--tls-certfile …] [--tls-keyfile …] |
Sert l'API REST (/api/v1) et l'interface web (/ui) |
Serveur HTTP |
db upgrade / db status |
Migre le schéma (Alembic) et amorce les règles par défaut, ou affiche la révision | Architecture et déploiement |
db prune [--days N] |
Supprime les rapports sans findings de plus de N jours (par défaut SECREVIEW_EMPTY_REPORT_RETENTION_DAYS), sauf le dernier de chaque projet |
Conservation |
token create --label NOM [--role ROLE] [--project P …] [--expires-in-days N] |
Crée un jeton Bearer, éventuellement limité à plusieurs projets et avec une validité, et affiche son secret une fois | Jetons Bearer, rôles |
token list [--project P] / token revoke ID\|LABEL |
Liste ou révoque les jetons | Jetons Bearer |
token rotate ID\|LABEL [--grace-hours H] [--expires-in-days N] |
Remplace le secret d'un jeton (même label, rôle et projets) et affiche le nouveau une fois ; l'ancien reste valable H heures (0 à 168) |
Expiration et renouvellement |
audit list [--action A] [--project P] [--actor QUI] [--since DATE] [--limit N] [--offset N] / audit prune [--days N] [--max-events N] |
Lit le journal d'audit (JSON, du plus récent au plus ancien) ou supprime les événements de plus de N jours (par défaut SECREVIEW_AUDIT_RETENTION_DAYS), puis les plus anciens au-delà de --max-events (par défaut SECREVIEW_AUDIT_MAX_EVENTS) |
Journal d'audit |
user create NOM [--sso] [--group G …] [--password-stdin] |
Crée un compte de l'interface web, membre des groupes G (seule source de ses permissions) : local (sans --password-stdin, le mot de passe est généré et affiché une fois) ou OIDC avec --sso (sans mot de passe ; il rejoint aussi ses groupes OIDC à chaque connexion) |
Comptes utilisateurs |
user list / user set-groups NOM [--group G …] / user delete NOM |
Liste les comptes (jamais leur empreinte) avec leurs groupes et permissions, remplace les groupes donnés à un compte (ses groupes OIDC sont gardés ; administrators est créé avec le rôle admin s'il manque, pour restaurer un administrateur) ou le supprime (un compte OIDC supprimé n'est plus recréé par une connexion) ; le dernier détenteur de users.manage est conservé |
Comptes utilisateurs |
group list / group roles |
Liste les groupes (rôles, projets, membres) ou les rôles (permissions) ; ils se gèrent dans l'interface web | Rôles, groupes et permissions |
project list / project approve ID / project reject ID |
Liste les projets demandés par un enrôlement (demandeur, adresse, expiration), en crée un (son groupe project:<projet>, sans aucun membre) ou supprime la demande |
Enrôlement |
user reset-password NOM [--password-stdin] |
Remplace le mot de passe d'un compte local (généré par défaut) et ferme ses sessions | Mot de passe perdu |
rules list / rules import PATH… / rules export |
Liste, importe (packs TOML) ou exporte les règles stockées en base | Règles internes |
rules enable ID… / rules disable ID… / rules delete ID… |
Active, désactive (règles par défaut ou personnalisées) ou supprime des règles personnalisées | Règles internes |
advisories import PATH / advisories status |
Gestion de la base OSV hors ligne | Dépendances |
advisories update [--ecosystem E …] |
Télécharge les exports OSV (SECREVIEW_OSV_*, proxy facultatif) et les importe ; code 2 si un écosystème échoue |
Mise à jour automatique |
serve et les commandes qui lisent ou écrivent la base migrent d'abord le schéma, sauf avec
SECREVIEW_DB_AUTO_UPGRADE=false : elles vérifient alors seulement qu'il est à jour.
Les commandes de pipeline (gate, export SARIF, rapport de tendance, scans du code et des
dépendances) ne sont pas des commandes du contrôleur : elles sont exécutées par
security-review-ci, par l'API REST.
security-review-ci¶
Options de toutes les sous-commandes : --project P (obligatoire), --url URL (par défaut
SECREVIEW_CONTROLLER_URL), --token-stdin (par défaut : SECREVIEW_TOKEN), --cafile CA,
--allow-http, --timeout S. Sans argument, security-review-ci affiche son aide et sort
avec le code 2.
| Commande | Rôle | Page |
|---|---|---|
gate --project P [--fail-on SEV] [--report-id N] |
Gate de déploiement par l'API REST | Client de pipeline |
sarif --project P [--include-resolved] [-o FICHIER] |
Export SARIF 2.1.0 par l'API REST | SARIF |
trend --project P [--days N] [--granularity G] [--format markdown\|json] |
Rapport de tendance par l'API REST | Tendances |
scan-code [PATH] --project P [--exclude GLOB …] [--max-file-bytes N] [--no-git] [--fail-on SEV] [--format text\|json\|sarif] [-o FICHIER] [--save] |
Lit les fichiers du dépôt et les fait scanner par le contrôleur avec ses règles ; --save enregistre un rapport |
Scan du code complet |
scan-deps FICHIER… --project P [--fail-on SEV] [--format text\|json] [--require-database] [--save] |
Envoie des manifestes, lockfiles ou SBOM CycloneDX au contrôleur, qui les compare à sa base d'avis ; --save enregistre un rapport |
Dépendances |
scan-code et scan-deps acceptent aussi --repository, --branch, --commit et --author,
enregistrés avec le rapport. Ils demandent un jeton ci ou admin.
Codes de sortie¶
Les commandes de contrôle (security-review-ci gate, scan-code et scan-deps, security-review-mcp scan-deps, db status) partagent la même
convention :
| Code | Signification |
|---|---|
0 |
Passe |
1 |
Bloqué : au moins un finding atteint le seuil --fail-on (ou, pour db status, schéma pas à jour) |
2 |
Erreur (projet ou rapport introuvable, fichier illisible, schéma à migrer…) |
Les commandes d'administration (token, enroll, rules, advisories, db upgrade,
db prune)
renvoient 0 en cas de succès et 2 en cas d'erreur (identifiant inconnu, pack invalide…),
avec l'erreur en JSON sur stderr.
Chaque commande accepte --help pour la liste complète de ses options.