Plantillas de análisis
Las plantillas de análisis le permiten guardar configuraciones frecuentemente utilizadas para una reutilización rápida. En lugar de especificar el tipo de análisis, opciones, prioridad y etiquetas cada vez, cree una plantilla una vez y lance análisis proporcionando únicamente el objetivo.
Beneficios
- Consistencia — Aplique parámetros idénticos en cada ejecución
- Rapidez — Lance análisis con una sola solicitud conteniendo solo el objetivo
- Estandarización — Comparta configuraciones estandarizadas dentro de su equipo
- Integración CI/CD — Referencie plantillas por ID en sus pipelines de automatización
Crear una plantilla
Endpoint
POST /api/v1/scan-templates
Alcance requerido: templates:create
Solicitud
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 Contenedores",
"description": "Análisis de vulnerabilidades para imágenes de contenedores en pipeline CI",
"scanType": "trivy",
"priority": "high",
"options": {
"scanners": ["vuln", "misconfig", "secret"],
"severity": ["CRITICAL", "HIGH"]
},
"tags": ["ci", "contenedor", "producción"]
}'
Parámetros de la solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
name | string | Sí | Nombre legible de la plantilla (máx. 255 caracteres) |
description | string | No | Descripción del objetivo y comportamiento |
scanType | string | Sí | Motor de análisis a usar |
targetType | string | No | Tipo de objetivo predeterminado |
priority | string | No | Prioridad predeterminada: critical, high, normal, low |
options | object | No | Opciones del motor (idénticas a POST /scans) |
config | object | No | Sobreescrituras de configuración del motor |
tags | string[] | No | Etiquetas para organización y filtrado |
timeout | integer | No | Duración máxima en segundos |
Respuesta (201 Created)
{
"success": true,
"data": {
"id": "tmpl-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tenantId": "7b5b0610-2947-412f-a869-4683da321fcf",
"name": "Scan CI Contenedores",
"scanType": "trivy",
"priority": "high",
"options": {
"scanners": ["vuln", "misconfig", "secret"],
"severity": ["CRITICAL", "HIGH"]
},
"tags": ["ci", "contenedor", "producción"],
"usageCount": 0,
"createdAt": "2026-03-06T10:00:00Z"
}
}
Listar plantillas
GET /api/v1/scan-templates
Alcance requerido: templates:read
Obtener una plantilla
GET /api/v1/scan-templates/:templateId
Alcance requerido: templates:read
Actualizar una plantilla
PATCH /api/v1/scan-templates/:templateId
Alcance requerido: templates:update
Campos modificables: name, description, priority, options, config, tags, timeout.
Eliminar una plantilla
DELETE /api/v1/scan-templates/:templateId
Alcance requerido: templates:delete
Eliminar una plantilla no afecta los análisis ya lanzados desde ella.
Lanzar un análisis desde una plantilla
Lance un análisis usando las opciones preconfiguradas de una plantilla. Proporcione simplemente el objetivo — todo lo demás se hereda de la plantilla.
Endpoint
POST /api/v1/scan-templates/:templateId/launch
Alcance requerido: scans:create
Solicitud
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/miapp:latest"
}'
Parámetros de lanzamiento
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
target | string | Sí | El objetivo del análisis |
name | string | No | Sobreescribir el nombre (sino usa el nombre de la plantilla) |
priority | string | No | Sobreescribir la prioridad |
tags | string[] | No | Etiquetas adicionales (fusionadas con las de la plantilla) |
Respuesta (201 Created)
{
"success": true,
"data": {
"id": "scan-new-uuid",
"scanType": "trivy",
"name": "Scan CI Contenedores",
"target": "registry.example.com/miapp:latest",
"status": "queued",
"priority": "high",
"templateId": "tmpl-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tags": ["ci", "contenedor", "producción"],
"createdAt": "2026-03-06T10:05:00Z"
}
}
Casos de uso de plantillas
Integración CI/CD
# .github/workflows/security-scan.yml
- name: Lanzar análisis de seguridad
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 }}"}'
Análisis por lote
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\": \"Análisis lote - $TARGET\"}"
echo "Análisis lanzado para: $TARGET"
done
Ejemplos de plantillas comunes
Escaneo de red rápido:
{
"name": "Escaneo de red rápido",
"scanType": "nmap",
"options": { "topPorts": 100, "timing": "T4", "serviceDetection": true }
}
Evaluación web OWASP:
{
"name": "Evaluación web OWASP",
"scanType": "zap",
"priority": "high",
"options": { "scanPolicy": "full", "spiderMaxDepth": 5, "ajaxSpider": true, "activeScan": true }
}
Evaluación de seguridad completa:
{
"name": "Evaluación Sentinel completa",
"scanType": "sentinel",
"priority": "high",
"options": { "depth": "deep", "correlate": true, "riskScore": true }
}
Próximos pasos: