Saltar al contenido principal
Version: 1.0.0

Autenticación y claves API

La API Scan de Cert-IX utiliza claves API para el acceso programático. Las claves API ofrecen alcances granulares, restricciones por tipo de análisis, límites de tasa por clave, lista de IPs permitidas, expiración automática y rotación sin interrupciones.

Métodos de autenticación

MétodoCaso de usoEncabezado
Clave APIAcceso programático (scripts, CI/CD, integraciones)X-API-Key
JWTOperaciones del panel de control (gestión de claves API)Authorization: Bearer <token>

Esta página cubre la autenticación por clave API. La autenticación JWT es gestionada automáticamente por el panel de control de Cert-IX.

Formato de las claves API

Las claves API de Cert-IX siguen un formato determinístico para una identificación fácil:

cix_sk_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
SegmentoDescripción
cix_Prefijo de la plataforma Cert-IX
sk_Identificador de tipo clave secreta
XXX...Cadena criptográfica aleatoria de 40 caracteres
Seguridad

Las claves API se hashean con SHA-256 antes del almacenamiento. La clave en texto plano se muestra solo una vez al crearla. Cert-IX no puede recuperar su clave si se pierde — debe realizar una rotación.

Transmitir su clave API

Incluya su clave API en el encabezado X-API-Key en cada solicitud:

curl -X GET https://api.cert-ix.com/scan-api/api/v1/scans \
-H "X-API-Key: cix_sk_su_clave_api_aqui"
Nunca transmita claves API en parámetros de URL

Las cadenas de consulta pueden registrarse en logs de acceso del servidor, historial del navegador y cachés de proxy.

Crear una clave API

Endpoint

POST /api/v1/api-keys

Cuerpo de la solicitud

{
"name": "Pipeline CI/CD - Producción",
"description": "Utilizada por GitHub Actions para análisis de vulnerabilidades nocturnos",
"scopes": [
"scans:create",
"scans:read",
"scans:list",
"results:read",
"webhooks:read"
],
"allowedScanTypes": ["nmap", "nuclei", "trivy", "zap"],
"allowedIpAddresses": ["203.0.113.50", "198.51.100.0/24"],
"rateLimitPerMinute": 30,
"rateLimitPerHour": 500,
"rateLimitPerDay": 5000,
"expiresInDays": 90
}

Parámetros de la solicitud

CampoTipoRequeridoDescripción
namestringNombre legible de la clave (máx. 255 caracteres)
descriptionstringNoDescripción de uso opcional
scopesstring[]NoAlcances de permisos (predeterminado: todos los alcances)
allowedScanTypesstring[]NoMotores de análisis permitidos (predeterminado: todos)
allowedIpAddressesstring[]NoRangos IP/CIDR de origen permitidos
rateLimitPerMinuteintegerNoSolicitudes máx. por minuto
rateLimitPerHourintegerNoSolicitudes máx. por hora
rateLimitPerDayintegerNoSolicitudes máx. por día
expiresInDaysintegerNoExpiración en días (0 o null = sin expiración)

Respuesta (201 Created)

{
"success": true,
"data": {
"apiKey": {
"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"name": "Pipeline CI/CD - Producción",
"keyPrefix": "cix_sk_001e3c",
"scopes": ["scans:create", "scans:read", "scans:list", "results:read", "webhooks:read"],
"allowedScanTypes": ["nmap", "nuclei", "trivy", "zap"],
"status": "active",
"expiresAt": "2026-06-04T10:00:00Z",
"createdAt": "2026-03-06T10:00:00Z"
},
"rawKey": "cix_sk_001e3c2d92ffb23344a943df2b6a001fb1028d002"
}
}
Crítico

El campo rawKey se devuelve solo al momento de la creación. Cópielo inmediatamente y almacénelo en una bóveda segura (ej.: HashiCorp Vault, AWS Secrets Manager o el almacén de secretos de su CI/CD).

Alcances y permisos

Los alcances controlan las acciones que una clave API está autorizada a realizar. Aplique el principio de mínimo privilegio — otorgue solo los alcances necesarios para su integración.

Alcances disponibles

AlcanceDescripción
scans:createEnviar nuevos análisis
scans:readVer detalles y estado de un análisis
scans:listListar todos los análisis del tenant
scans:cancelCancelar análisis en curso
results:readObtener resultados y hallazgos
templates:createCrear plantillas de análisis
templates:readVer plantillas de análisis
templates:updateModificar plantillas de análisis
templates:deleteEliminar plantillas de análisis
webhooks:createRegistrar y probar webhooks
webhooks:readVer configuraciones y registros de entrega
webhooks:updateModificar configuraciones de webhooks
webhooks:deleteEliminar webhooks
usage:readVer analíticas de uso y cuotas

Conjuntos de alcances recomendados

Pipeline CI/CD (lectura-escritura de análisis):

["scans:create", "scans:read", "scans:list", "results:read"]

Panel de monitoreo (solo lectura):

["scans:read", "scans:list", "results:read", "usage:read"]

Automatización completa (análisis + webhooks + plantillas):

["scans:create", "scans:read", "scans:list", "scans:cancel", "results:read",
"templates:create", "templates:read", "templates:update",
"webhooks:create", "webhooks:read"]

Tipos de análisis permitidos

Restrinja los motores de análisis que una clave API puede invocar:

  • Aísle las claves CI/CD solo a análisis de contenedores (ej.: trivy)
  • Limite las claves OSINT a reconocimiento pasivo (ej.: harvester, sublist3r)
  • Restrinja las claves web a escáneres web (ej.: zap, nikto, wapiti)

Tipos de análisis disponibles: nmap, zap, trivy, nuclei, nikto, sqlmap, wapiti, harvester, sublist3r, sentinel

Lista de IPs permitidas

Bloquee una clave API a direcciones IP de origen o rangos CIDR específicos. Las solicitudes desde otras IPs son rechazadas con 403 IP_NOT_ALLOWED.

Formatos soportados:

  • IP única: "203.0.113.50"
  • Rango CIDR: "198.51.100.0/24"
  • IPv6: "2001:db8::1"

Límites de tasa

VentanaPredeterminadoRango configurable
Por minuto601 – 1.000
Por hora1.0001 – 50.000
Por día10.0001 – 500.000

Encabezados de límite de tasa

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1709654460

Límite de tasa excedido

{
"success": false,
"error": "Límite de tasa excedido. Reintente en 23 segundos.",
"code": "RATE_LIMIT_EXCEEDED"
}

Estado HTTP: 429 Too Many Requests

Rotación de claves

Realice la rotación de claves API con cero tiempo de inactividad gracias al mecanismo de período de gracia.

Endpoint

POST /api/v1/api-keys/:keyId/rotate

Flujo de trabajo de rotación

1. POST /api-keys/:claveAntiguaId/rotate → Nueva clave creada, antigua en período de gracia
2. Actualice su almacén de secretos con la nueva clave
3. Despliegue la nueva clave en sus servicios
4. La clave antigua expira automáticamente después del período de gracia
Buena práctica

Realice la rotación de claves cada 90 días. Automatice la rotación en su infraestructura o establezca un recordatorio en el calendario.

Revocación de claves

Desactive inmediata y permanentemente una clave API. La revocación es instantánea — la clave deja de funcionar inmediatamente.

Endpoint

DELETE /api/v1/api-keys/:keyId

Estados de las claves

EstadoDescripción
activeLa clave está plenamente operativa
revokedLa clave ha sido permanentemente desactivada
expiredLa clave ha superado su fecha expiresAt
suspendedLa clave ha sido temporalmente suspendida por un administrador

Mejores prácticas de seguridad

Lo que debe hacer

  • Almacene las claves en un gestor de secretos (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault)
  • Use variables de entorno — nunca codifique las claves directamente
  • Aplique mínimo privilegio — otorgue solo los alcances necesarios
  • Establezca fechas de expiración — rotación cada 90 días
  • Use lista de IPs permitidas para infraestructura estática
  • Monitoree el uso vía los endpoints de analíticas de uso
  • Revoque inmediatamente si una clave está comprometida

Lo que no debe hacer

  • Nunca haga commit de claves en el control de versiones (Git, SVN)
  • Nunca transmita claves en parámetros de URL
  • Nunca comparta claves entre equipos o entornos
  • Nunca registre claves API en logs de la aplicación

Próximos pasos:

¿Te resultó útil esta página?