Cada credencial de dispositivo —una API key, una PSK o un certificado de cliente X.509— tiene
un ciclo de vida. La rotación reemplaza una credencial mientras el dispositivo sigue funcionando;
la revocación anula una credencial en el instante en que crees que está comprometida. Las
dos son deliberadamente operaciones distintas con garantías distintas, y elegir
la correcta importa: rota cuando una credencial simplemente es antigua, revoca cuando se ha
filtrado.
Esta página cubre los flujos de API key y PSK. Para ver cómo se emiten y presentan
las credenciales por primera vez, consulta
Identidad y credenciales del dispositivo.
Una credencial pasa por un pequeño conjunto de estados. La rotación y la revocación son las
dos transiciones que tú impulsas como operador.
stateDiagram-v2
[*] --> active : emitida en el provisioning
active --> overlapping : rotar (nueva key emitida)
overlapping --> active : termina ventana de solapamiento\n(key antigua rechazada)
active --> revoked : revocar (inmediato)
overlapping --> revoked : revocar (inmediato)
revoked --> [*]
active — la credencial autentica con normalidad. Un dispositivo tiene exactamente una
credencial activa por tipo en estado estable.
overlapping — hay una rotación en curso. Tanto la credencial antigua como la nueva
autentican. Esta ventana existe para que el dispositivo pueda adoptar la nueva
credencial según su propio calendario sin un hueco en la conectividad.
revoked — la credencial está muerta. Toda petición futura que la use devuelve
UNAUTHENTICATED, y cualquier sesión de protocolo activa que haya autenticado se cierra
donde el transporte lo permita.
El objetivo central de la rotación es cero tiempo de inactividad. Cuando rotas, CORE-M:
Genera una credencial nueva y la devuelve una vez.
Mantiene válida la credencial antigua durante una ventana de solapamiento configurada.
Rechaza la credencial antigua en cuanto termina la ventana.
Durante la ventana de solapamiento ambas credenciales autentican, así que un dispositivo puede obtener
y aplicar su nueva credencial según su propio calendario —en el siguiente arranque, en un sondeo de
mantenimiento, o enviada vía device RPC— sin presentar
nunca una inválida. Configura la ventana más larga que el peor caso de intervalo de
check-in de tu dispositivo.
timeline
title Cronología de rotación de API key
Rotate issued : K1 active : K2 issued (returned once)
Overlap window : K1 valid : K2 valid
Window ends : K1 rejected : K2 active
Rota la credencial. Como admin del tenant (o un token con el
scope devices:write), llama al endpoint de rotación para el dispositivo. Indica la
ventana de solapamiento en segundos.
Captura la nueva key de la respuesta. Se devuelve una vez. El prefijo de la key
antigua se incluye para que puedas confirmar qué credencial se está retirando.
{
"device_id": "dev_8f3a",
"credential_type": "api_key",
"new_api_key": "sk_live_9Qk3pR2wXn7vJ4mB...",
"new_prefix": "sk_live_9Qk3",
"previous_prefix": "sk_live_2Ab7",
"overlap_expires_at": "2026-05-30T12:00:00Z"
}
Entrega la nueva key al dispositivo. Envíala como sea que tu flota recoja la
configuración — un atributo compartido, una RPC o el propio sondeo programado del
dispositivo. Hasta que el dispositivo cambie, sigue autenticando con la key antigua.
Deja que la ventana se cierre. En overlap_expires_at la key antigua (sk_live_2Ab7…)
deja de autenticar y devuelve UNAUTHENTICATED. No se necesita ninguna otra
acción.
Se escribe un evento de auditoría device.credential.rotated por cada rotación,
registrando el actor, el dispositivo y los prefijos de la credencial — nunca la key en bruto.
Las claves precompartidas (usadas por dispositivos CoAP/DTLS y LwM2M) rotan de la misma forma. La
diferencia está solo en el tipo de credencial y en lo que el dispositivo debe reconfigurar en
su pila DTLS.
La revocación es para el mal día: una key subida a un repositorio público, un dispositivo robado,
un contratista que se fue. No hay ventana de solapamiento — la credencial se rechaza de
inmediato.
Revoca la credencial. Identifícala por prefijo (la revocación nunca necesita el
valor en bruto).
Los efectos son inmediatos. A partir de este punto:
Toda petición que use la credencial revocada devuelve UNAUTHENTICATED.
Las sesiones de protocolo activas autenticadas con ella se desconectan donde el
transporte lo permita (un cliente MQTT se descarta, una sesión DTLS se cierra).
Se publica el evento profile.credential.revoked.{tenant}.{device} para que
los consumidores downstream (alertas, paneles) reaccionen en tiempo real.
Re-credencia el dispositivo. Un dispositivo revocado no puede enviar telemetry hasta que
tenga una credencial nueva. O bien rota un reemplazo (si una credencial de un
par sigue siendo buena) o reaprovisiona el dispositivo para emitir una nueva.
Según un calendario. Establece una edad máxima de credencial en la política de credenciales
de tu device profile y rota antes de que expire. La rotación rutinaria limita el
radio de impacto de una key que aún no sabes que se ha filtrado.
Ante un cambio de personal o de infraestructura. Rota después de que alguien con acceso al
material de provisioning se marche, o después de migrar los sistemas que guardan keys.
Tras un casi-incidente. Una key que podría haberse expuesto pero donde el dispositivo
sigue siendo de confianza: rota con un solapamiento corto, luego confirma que el prefijo antiguo deja
de aparecer en los metadatos de last_used antes de considerarla limpia.