Modèles d'analyse
Les modèles d'analyse vous permettent de sauvegarder des configurations fréquemment utilisées pour une réutilisation rapide. Au lieu de spécifier le type d'analyse, les options, la priorité et les tags à chaque fois, créez un modèle une fois et lancez des analyses en fournissant uniquement la cible.
Avantages
- Cohérence — Appliquez des paramètres identiques à chaque exécution
- Rapidité — Lancez des analyses avec une seule requête contenant uniquement la cible
- Standardisation — Partagez des configurations standardisées au sein de votre équipe
- Intégration CI/CD — Référencez les modèles par ID dans vos pipelines d'automatisation
Créer un modèle
Endpoint
POST /api/v1/scan-templates
Portée requise : templates:create
Requête
curl -X POST https://api.cert-ix.com/scan-api/api/v1/scan-templates \
-H "X-API-Key: $CERTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Scan CI Conteneurs",
"description": "Analyse de vulnérabilités pour les images de conteneurs dans le pipeline CI",
"scanType": "trivy",
"priority": "high",
"options": {
"scanners": ["vuln", "misconfig", "secret"],
"severity": ["CRITICAL", "HIGH"]
},
"tags": ["ci", "conteneur", "production"]
}'
Paramètres de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom lisible du modèle (max 255 caractères) |
description | string | Non | Description de l'objectif et du comportement |
scanType | string | Oui | Moteur d'analyse à utiliser |
targetType | string | Non | Type de cible par défaut |
priority | string | Non | Priorité par défaut : critical, high, normal, low |
options | object | Non | Options du moteur (identiques à POST /scans) |
config | object | Non | Surcharges de configuration du moteur |
tags | string[] | Non | Tags pour l'organisation et le filtrage |
timeout | integer | Non | Durée maximale en secondes |
Réponse (201 Created)
{
"success": true,
"data": {
"id": "tmpl-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tenantId": "7b5b0610-2947-412f-a869-4683da321fcf",
"name": "Scan CI Conteneurs",
"scanType": "trivy",
"priority": "high",
"options": {
"scanners": ["vuln", "misconfig", "secret"],
"severity": ["CRITICAL", "HIGH"]
},
"tags": ["ci", "conteneur", "production"],
"usageCount": 0,
"createdAt": "2026-03-06T10:00:00Z"
}
}
Lister les modèles
GET /api/v1/scan-templates
Portée requise : templates:read
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
page | integer | 1 | Numéro de page |
limit | integer | 20 | Résultats par page (max : 100) |
Obtenir un modèle
GET /api/v1/scan-templates/:templateId
Portée requise : templates:read
Retourne la configuration complète du modèle incluant options, config, tags et statistiques d'utilisation.
Mettre à jour un modèle
PATCH /api/v1/scan-templates/:templateId
Portée requise : templates:update
curl -X PATCH https://api.cert-ix.com/scan-api/api/v1/scan-templates/$TEMPLATE_ID \
-H "X-API-Key: $CERTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"priority": "critical",
"options": {
"scanners": ["vuln", "misconfig", "secret", "license"],
"severity": ["CRITICAL", "HIGH", "MEDIUM"]
}
}'
Champs modifiables : name, description, priority, options, config, tags, timeout.
Supprimer un modèle
DELETE /api/v1/scan-templates/:templateId
Portée requise : templates:delete
Supprimer un modèle n'affecte pas les analyses déjà lancées à partir de celui-ci.
Lancer une analyse depuis un modèle
Lancez une analyse en utilisant les options préconfigurées d'un modèle. Fournissez simplement la cible — tout le reste est hérité du modèle.
Endpoint
POST /api/v1/scan-templates/:templateId/launch
Portée requise : scans:create
Requête
curl -X POST https://api.cert-ix.com/scan-api/api/v1/scan-templates/$TEMPLATE_ID/launch \
-H "X-API-Key: $CERTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "registry.example.com/monapp:latest"
}'
Paramètres de lancement
| Champ | Type | Requis | Description |
|---|---|---|---|
target | string | Oui | La cible de l'analyse |
name | string | Non | Surcharger le nom (sinon utilise le nom du modèle) |
priority | string | Non | Surcharger la priorité |
tags | string[] | Non | Tags supplémentaires (fusionnés avec ceux du modèle) |
Réponse (201 Created)
{
"success": true,
"data": {
"id": "scan-new-uuid",
"scanType": "trivy",
"name": "Scan CI Conteneurs",
"target": "registry.example.com/monapp:latest",
"status": "queued",
"priority": "high",
"templateId": "tmpl-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tags": ["ci", "conteneur", "production"],
"createdAt": "2026-03-06T10:05:00Z"
}
}
Le templateId est inclus dans la réponse pour la traçabilité. Le usageCount du modèle est également incrémenté.
Cas d'utilisation des modèles
Intégration CI/CD
Référencez les modèles par ID dans vos pipelines. Cela découple la configuration d'analyse de la logique CI/CD — mettez à jour le modèle sans modifier votre pipeline.
# .github/workflows/security-scan.yml
- name: Lancer l'analyse de sécurité
run: |
curl -X POST "$CERTIX_URL/scan-templates/$TEMPLATE_ID/launch" \
-H "X-API-Key: $CERTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"target": "ghcr.io/${{ github.repository }}:${{ github.sha }}"}'
Analyse par lot
Lancez le même modèle contre plusieurs cibles :
TARGETS=("app1.example.com" "app2.example.com" "app3.example.com")
for TARGET in "${TARGETS[@]}"; do
curl -s -X POST "$BASE_URL/scan-templates/$TEMPLATE_ID/launch" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d "{\"target\": \"$TARGET\", \"name\": \"Analyse lot - $TARGET\"}"
echo "Analyse lancée pour : $TARGET"
done
Exemples de modèles courants
Scan réseau rapide :
{
"name": "Scan réseau rapide",
"scanType": "nmap",
"options": { "topPorts": 100, "timing": "T4", "serviceDetection": true }
}
Évaluation web OWASP :
{
"name": "Évaluation web OWASP",
"scanType": "zap",
"priority": "high",
"options": { "scanPolicy": "full", "spiderMaxDepth": 5, "ajaxSpider": true, "activeScan": true }
}
Évaluation de sécurité complète :
{
"name": "Évaluation Sentinel complète",
"scanType": "sentinel",
"priority": "high",
"options": { "depth": "deep", "correlate": true, "riskScore": true }
}
Prochaines étapes :