Alertas y suscripciones

Envía eventos de la PKI a personas y sistemas externos.

Las suscripciones convierten los eventos de Lamassu en notificaciones accionables. Puedes avisar a un equipo, alimentar un sistema de incidentes o activar una automatización cuando cambia una CA, un certificado o un dispositivo.

Cómo funciona

  1. Un servicio publica un evento de dominio.
  2. Lamassu evalúa las suscripciones asociadas a ese tipo de evento.
  3. El filtro de cada suscripción decide si debe notificarse.
  4. Lamassu entrega el evento al canal configurado.

El inventario de eventos muestra cuándo se observó cada tipo por última vez, cuántas veces ha ocurrido y cuántas suscripciones tiene. Puedes expandir un evento para inspeccionar un ejemplo de su payload JSON antes de crear el filtro.

Canales disponibles

  • Email envía avisos a una persona o lista operativa. Solo requiere la dirección de destino. El contenido del evento se entrega como texto HTML escapado, nunca como marcado.
  • Microsoft Teams publica la notificación en un canal mediante su URL de webhook.
  • Webhook entrega el evento a una automatización, SIEM o sistema de incidentes mediante POST o PUT.

Los canales Microsoft Teams y Webhook aceptan un bloque opcional http_client que autentica la llamada al receptor. auth_mode selecciona noauth (por defecto), apikey, jwt o mtls; cada modo exige sus propias opciones:

  • apikey_options necesita header y key.
  • jwt_options necesita oidc_client_id, oidc_client_secret y un oidc_well_known absoluto http o https.
  • mtls_options necesita cert_content y key_content como PEM codificado en Base64, como el resto de certificados de la API; también se acepta el PEM en claro. Los valores que referencian archivos del servidor se rechazan, y el par debe corresponder a un certificado y una clave privada coincidentes.

La referencia de la API de Alerts documenta el esquema completo de http_client.

Crea una suscripción

Elige el evento

Abre Alerts, localiza el tipo de evento y selecciona Subscribe. Revisa el último ejemplo JSON para identificar los campos que necesitarás filtrar.

Configura el destino

Selecciona Email, Microsoft Teams o Webhook e introduce los datos del canal.

Limita las notificaciones

Añade un filtro si no quieres recibir todas las instancias del evento.

  • None notifica todas las instancias del evento.
  • JSON Path evalúa uno o varios campos concretos.
  • JSON Schema acepta únicamente payloads con una estructura determinada.
  • JavaScript permite expresar lógica personalizada. Cada filtro se ejecuta como máximo durante 100 milisegundos; un filtro que supera ese límite hace fallar la condición y la notificación se omite con el error javascript filter execution timed out.

Por ejemplo, function (event) { return event.data.status == "NO_IDENTITY"; } limita una suscripción a dispositivos sin identidad.

Revisa y activa

Comprueba el evento, el canal y el filtro en el resumen. Selecciona Confirm Subscription para comenzar la entrega.

Configura el cliente HTTP del webhook

Los canales Webhook y Microsoft Teams muestran esta configuración en el formulario de suscripción, en el paso del canal, y de nuevo al editar una suscripción; Email no la utiliza. Los campos se corresponden con el bloque opcional http_client descrito arriba:

  • Log Level selecciona debug, info, warn o error; info es el valor por defecto.
  • Call Timeout es de 10 segundos por defecto. La consola rechaza un valor superior a 30 segundos con Webhook timeout must be at most 30s.; la API ajusta ese mismo valor al tope en lugar de rechazarlo (ver Las llamadas están limitadas).
  • No hay interruptor de verificación TLS para estos canales, porque el servicio siempre verifica el certificado del receptor (ver TLS siempre se verifica).
  • HTTP Authentication selecciona No Authentication (por defecto), API Key (valor de la API key y Header Name, X-API-Key por defecto), OIDC Client Credentials (Client ID, Client Secret y Well-Known URL) o Mutual TLS (Client Certificate y Client Private Key pegados como PEM). Una clave privada guardada permanece oculta hasta que seleccionas Show.
  • Una URL http:// muestra en la consola la advertencia Unencrypted HTTP connection (ver la llamada Credenciales sobre http:// más abajo).

Los campos se validan en línea con las mismas reglas de entrega: la URL del webhook y la Well-Known URL de OIDC deben ser URLs absolutas http o https, una cabecera API-key no puede usar un nombre reservado y el certificado y la clave mTLS deben ser contenido PEM, no rutas de ficheros.

El resumen del paso de confirmación muestra la autenticación como None, OIDC client credentials, API key o Mutual TLS. Los detalles de la suscripción muestran la autenticación, el nombre de la cabecera API-key (nunca el valor), la URL del emisor OIDC, mTLS como Configured y una fila fija TLS verification: Verified. La API key, el client secret y la clave privada no se muestran en los detalles de la suscripción.

Reglas de entrega del webhook

Las notificaciones enviadas por los canales Microsoft Teams y Webhook siguen una política HTTP fija:

  • TLS siempre se verifica. El certificado del receptor se comprueba contra el almacén de confianza del sistema. insecure_skip_verify se aplica siempre como false — también cuando se establece en true — así que un receptor con certificado propio o no confiable falla la entrega.
  • No se siguen redirecciones. Una respuesta 3xx falla con unexpected status code: <n>: redirects are not followed. Configura webhook_url con la URL final absoluta http o https: una dirección http:// que un ingress redirige a https:// deja de funcionar.
  • Las llamadas están limitadas. Una llamada tiene por defecto un timeout de 10 segundos; un call_timeout configurado se limita a 30 segundos. Los valores por encima del tope se ajustan, no se rechazan.
  • El cuerpo de la respuesta se ignora. La entrega comprueba solo el código de estado, así que el receptor puede responder con cualquier cuerpo.
  • Las cabeceras API-key están restringidas. Un apikey_options.header propio no puede usar nombres en los que la plataforma o los servicios receptores confían — por ejemplo X-Principal-Id, X-Request-Id, Host, Content-Type o Forwarded — y ningún nombre puede empezar por X-Forwarded-, X-Envoy- o X-Lms-. La comparación no distingue mayúsculas.
  • Las configuraciones inválidas se rechazan al suscribir. Una configuración de canal que fallaría en cada entrega devuelve HTTP 400 con un cuerpo que empieza por struct validation error: y la suscripción no se crea.

Credenciales sobre http://

Las credenciales se envían sea cual sea el esquema de la URL. Con un webhook_url http://, la API key o el bearer token viajan en texto claro y mTLS no tiene efecto. Prefiere https:// para webhook_url, oidc_well_known y el token endpoint que anuncia.

Gestiona una suscripción

Abre una suscripción existente para consultar su destino y filtro, modificar la configuración o seleccionar Unsubscribe. Elimina las suscripciones que ya no tengan un propietario operativo para evitar entregas ignoradas o endpoints obsoletos.

Las suscripciones creadas con versiones anteriores de la consola pueden guardar el destino del webhook en url y method en lugar de webhook_url y webhook_method. El servicio entrega solo a través de webhook_url y webhook_method, así que una suscripción así no entrega aunque los detalles de la suscripción muestren el destino guardado. Abre la suscripción y vuelve a guardarla: el formulario de edición precarga el destino guardado, y al guardar se reescribe la configuración del canal con el formato actual.

Familias de eventos

  • Autoridades: ca.create, ca.import, ca.reissue y ca.delete.
  • Certificados: ca.sign.certificate y certificate.delete.
  • Perfiles: profile.issuance.create, profile.issuance.update y profile.issuance.delete.
  • Enrolamiento: dms.create, dms.update, dms.enroll y dms.reenroll.
  • Dispositivos: device.create, device.identity.update y device.status.update.
  • Validación: va.role.crl.create.
  • Claves: kms.create, kms.import, kms.sign y kms.delete.

Utiliza el catálogo que muestra la consola como fuente para los tipos disponibles en la versión que tienes desplegada.

En esta página