Gestión de Claves API
La interfaz de Gestión de Claves API proporciona una interfaz web para crear, monitorear y gestionar claves API utilizadas para el acceso programático a la API de OmniCRM.
::: note ::: title Nota :::
Para conceptos generales de autenticación API y ejemplos de uso, consulta
concepts_api.
:::
Descripción General
Las claves API permiten una autenticación segura y de larga duración para:
- Integraciones de servidor a servidor
- Scripts de automatización
- Aplicaciones de terceros
- Tareas programadas y trabajos cron
- Sistemas de monitoreo externos
A diferencia de los tokens JWT (que expiran después de minutos/horas), las claves API permanecen válidas hasta que se revoquen manualmente o hasta su fecha de expiración.
Accediendo a la Gestión de Claves API
Navega a:
O directamente:
Permiso Requerido: MANAGE_API_KEYS (rol de administrador)
Vista de Lista de Claves API
La página principal muestra todas las claves API en un formato de tabla:
Columnas:
- Nombre - Etiqueta descriptiva para la clave API (por ejemplo, "Sistema de Aprovisionamiento", "Herramienta de Monitoreo")
- Creado Por - Nombre de usuario de la persona que creó la clave
- Clave API - La cadena de clave real (parcialmente enmascarada por seguridad)
- Estado - Activa, Expirada o Revocada
- Fecha de Creación - Cuando se generó la clave
- Fecha de Expiración - Cuando la clave expirará automáticamente
- Acciones - Botones Editar, Eliminar, Regenerar
Ejemplo de Visualización:
Widgets del Tablero
En la parte superior de la página, se muestran estadísticas resumidas:
- Total de Claves API - Conteo de todas las claves API (activas e inactivas)
- Claves Activas - Claves actualmente válidas
- Expirando Pronto - Claves que expiran en los próximos 30 días
- Claves Expiradas - Claves que han pasado su fecha de expiración
Creando una Clave API
Paso 1: Haz clic en "Agregar Clave API"
Haz clic en el botón + Agregar en la parte superior derecha de la lista de Claves API.
Paso 2: Completa los Detalles
Aparece un formulario modal solicitando:
Nombre: ________________________
: (por ejemplo, "Sistema de Aprovisionamiento")
Descripción: __________________
: (Opcional - propósito de esta clave)
Fecha de Expiración: [Selector de Fecha]
: (Opcional - dejar en blanco para no tener expiración)
Permisos: ☐ Ver Clientes ☐ Crear Clientes ☐ Ver Servicios ☐ Crear Servicios ☐ Aprovisionamiento ☐ Ver Inventario ☑ Administrador (todos los permisos)
[Cancelar] [Generar Clave]
Guías de Campo:
Nombre (requerido)
- Identificador corto y descriptivo
- Ejemplos: "Sistema de Aprovisionamiento", "Integración de Facturación", "Monitoreo"
- Usado en registros de auditoría y mostrado en la lista
Descripción (opcional)
- Explicación más detallada
- Ejemplos: "Usado por el servidor de aprovisionamiento de Ansible", "Sincronización de facturación de terceros"
- Ayuda a futuros administradores a entender el propósito de la clave
Fecha de Expiración (opcional)
- Si está en blanco: La clave nunca expira (no recomendado)
- Si se establece: La clave se vuelve automáticamente inválida después de esta fecha
- Recomendado: Establecer expiración por seguridad (90 días a 1 año)
Permisos
- Selecciona permisos específicos o marca "Administrador" para acceso completo
- Sigue el mismo modelo de permisos basado en roles que las cuentas de usuario
- Mejor Práctica: Asigna el mínimo de permisos necesarios
Paso 3: Generar y Copiar Clave
Después de hacer clic en "Generar Clave", el sistema muestra la nueva clave API creada:
⚠️ ¡Copia esta clave ahora - no se mostrará de nuevo!
sk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0
[Copiar al Portapapeles]
[Cerrar]
::: warning ::: title Advertencia :::
¡Guarda la clave API inmediatamente!
Una vez que cierres este diálogo, la clave completa no podrá ser recuperada nuevamente.
Solo verás una versión enmascarada (sk_live_...XYZ) en la vista de lista.
Si pierdes la clave, debes regenerarla, lo que invalida la clave antigua y puede romper integraciones existentes. :::
Paso 4: Configura Tu Aplicación
Usa la clave API en las solicitudes de tu aplicación:
curl -X GET "https://yourcrm.com/crm/customers" \
-H "X-API-KEY: sk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
O en variables de entorno:
export CRM_API_KEY="sk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
Gestionando Claves Existentes
Visualizando Detalles de la Clave
Haz clic en cualquier nombre de clave API para ver todos los detalles:
- Nombre completo de la clave y descripción
- Marca de tiempo de creación
- Nombre de usuario del creador
- Permisos asociados
- Estadísticas de uso (si están implementadas)
- Registros de acceso recientes
Regenerando una Clave API
Si una clave API está comprometida o perdida, regénérala:
- Haz clic en el ⋮ (tres puntos) en la columna de Acciones
- Selecciona "Regenerar Clave"
- Confirma la acción
::: warning ::: title Advertencia :::
Regenerar invalida la clave antigua inmediatamente.
Cualquier aplicación que use la clave antigua dejará de funcionar. Actualiza todas las integraciones con la nueva clave antes de regenerar. :::
Lo que Ocurre:
- La clave antigua es revocada
- Se genera una nueva clave con los mismos permisos
- Se muestra la nueva clave (cópiala inmediatamente)
- El nombre, la descripción y los permisos permanecen sin cambios
Revocando (Eliminando) una Clave API
Para eliminar permanentemente una clave API:
- Haz clic en el ⋮ (tres puntos) en la columna de Acciones
- Selecciona "Eliminar"
- Confirma la eliminación
Lo que Ocurre:
- La clave es revocada inmediatamente
- Todas las solicitudes que usen esta clave devuelven
401 Unauthorized - La clave es eliminada de la base de datos
- No se puede deshacer - la clave no puede ser recuperada
Cuándo Revocar:
- La integración ya no es necesaria
- La clave ha sido comprometida
- El sistema que usa la clave ha sido desmantelado
- Reemplazando con una nueva clave con diferentes permisos
Editando Detalles de la Clave API
Para modificar los detalles de una clave API:
- Haz clic en el ⋮ (tres puntos) en la columna de Acciones
- Selecciona "Editar"
- Actualiza el nombre, la descripción, la expiración o los permisos
- Haz clic en "Guardar Cambios"
Campos Editables:
- Nombre
- Descripción
- Fecha de expiración
- Permisos
No Editables:
- El valor de la clave en sí (usa Regenerar para cambiar)
- Fecha de creación
- Creado por usuario
Estado de la Clave API
Las claves API pueden tener varios estados:
Activa
- La clave es válida y puede ser utilizada
- Dentro de la fecha de expiración (o sin expiración establecida)
- No revocada manualmente
- Mostrada con insignia verde
Expirando Pronto
- Activa pero expirará en los próximos 30 días
- Mostrada con insignia naranja/de advertencia
- Considera rotar antes de la expiración
Expirada
- Pasada la fecha de expiración
- Ya no acepta autenticación
- Mostrada con insignia roja
- Puede ser eliminada o la expiración extendida
Revocada
- Eliminada/deshabilitada manualmente
- Permanentemente inválida
- Ya no se muestra en la lista activa
Filtrado y Búsqueda
La lista de Claves API soporta:
Búsqueda:
Buscar por nombre, descripción o clave parcial:
Filtrar por Estado:
Desplegable de filtro para mostrar:
- Todas las Claves
- Solo Activas
- Expirando Pronto (próximos 30 días)
- Expiradas
Ordenar:
Haz clic en los encabezados de columna para ordenar por:
- Nombre
- Fecha de Creación
- Fecha de Expiración
- Creado Por
Mejores Prácticas de Seguridad
Generación de Claves API
- Longitud: Las claves deben tener al menos 32 caracteres (el sistema lo impone)
- Aleatoriedad: Generadas utilizando generadores de números aleatorios criptográficamente seguros
- Formato: Generalmente prefijadas (por ejemplo,
sk_live_) para identificación
Almacenamiento de Claves API
En el CRM:
- Las claves son encriptadas antes de ser almacenadas (como contraseñas)
- La clave completa solo se muestra una vez durante la creación
- La base de datos almacena el hash para verificación
- Incluso los administradores no pueden recuperar la clave completa más tarde
En Tu Aplicación:
- Almacena en variables de entorno, no en el código
- Usa sistemas de gestión de secretos (AWS Secrets Manager, HashiCorp Vault)
- Nunca comités claves en el control de versiones
- Rota las claves periódicamente (cada 90-365 días)
Gestión de Permisos
- Principio de Menor Privilegio - Solo otorga los permisos necesarios
- Evita crear claves de administrador a menos que sea absolutamente necesario
- Usa claves separadas para diferentes sistemas/purposes
- Revisa los permisos regularmente
Monitoreo y Auditoría
- Monitorea el uso de claves API a través de registros de actividad
- Configura alertas para patrones de acceso inusuales
- Revisa las marcas de tiempo de "último uso" regularmente
- Elimina claves no utilizadas
Rotación de Claves
Establece una política de rotación de claves:
- Crea una nueva clave con los mismos permisos
- Actualiza las aplicaciones para usar la nueva clave
- Monitorea para asegurar que la clave antigua ya no se use
- Revoca la clave antigua después del período de gracia
Resolución de Problemas
"401 Unauthorized" al usar la clave API
- Causa: Clave inválida, expirada o incorrecta
- Solución:
- Verifica que la clave esté copiada correctamente (sin espacios adicionales)
- Verifica el estado de la clave (Activa vs. Expirada)
- Confirma que la clave tenga los permisos requeridos
- Asegúrate de usar el encabezado
X-API-KEY(noAuthorization)
"Clave API no encontrada" después de la creación
- Causa: La clave puede haber sido creada pero no almacenada correctamente
- Solución:
- Verifica la lista de claves API para la nueva entrada
- Si falta, crea una nueva clave
- Reporta el problema al administrador
Clave API expirando pronto
- Causa: La fecha de expiración se acerca (dentro de 30 días)
- Solución:
- Crea una nueva clave con expiración extendida
- Actualiza las aplicaciones para usar la nueva clave
- Revoca la clave antigua después de la migración
No se puede eliminar la clave API
- Causa: Puede estar protegida o en uso
- Solución:
- Asegúrate de tener permisos de administrador
- Verifica si la clave está bloqueada/protegida
- Contacta al administrador si el problema persiste
Puntos Finales de API (para Gestión Programática)
Las claves API también pueden ser gestionadas a través de la API (requiere permisos de administrador):
Listar Claves API
GET /crm/api-keys
Authorization: Bearer <admin-token>
Crear Clave API
POST /crm/api-keys
Authorization: Bearer <admin-token>
Content-Type: application/json
{
"name": "Nueva Integración",
"description": "Sincronización de facturación de terceros",
"expiry_date": "2026-01-10",
"permissions": ["view_customer", "view_service"]
}
Respuesta:
{
"api_key_id": 123,
"name": "Nueva Integración",
"api_key": "sk_live_a1b2c3d4e5f6g7h8i9j0",
"status": "active",
"created": "2025-01-10T10:00:00Z",
"expiry_date": "2026-01-10T23:59:59Z"
}
Revocar Clave API
DELETE /crm/api-keys/{api_key_id}
Authorization: Bearer <admin-token>
Actualizar Clave API
PATCH /crm/api-keys/{api_key_id}
Authorization: Bearer <admin-token>
Content-Type: application/json
{
"name": "Nombre Actualizado",
"expiry_date": "2026-12-31"
}
Casos de Uso Comunes
Caso de Uso 1: Integración del Sistema de Aprovisionamiento
Crea una clave API para tu servidor de aprovisionamiento de Ansible:
- Navega a Claves API → Agregar
- Nombre: "Servidor de Aprovisionamiento de Ansible"
- Descripción: "Usado por la automatización de aprovisionamiento"
- Permisos: Aprovisionamiento, Ver/Criar Servicios, Ver/Actualizar Inventario
- Expiración: 1 año
- Copia la clave y añádela a
crm_config.yamlde Ansible
Caso de Uso 2: Integración de Facturación de Terceros
Crea una clave de solo lectura para la exportación de facturación:
- Nombre: "Sincronización de Facturación - QuickBooks"
- Permisos: Ver Clientes, Ver Transacciones, Ver Facturas
- Expiración: 90 días (rotar trimestralmente)
- Usar en el script de exportación programada
Caso de Uso 3: Monitoreo y Alertas
Crea una clave para la recolección de métricas de Prometheus/Grafana:
- Nombre: "Monitoreo - Grafana"
- Permisos: Ver Servicios, Ver Aprovisionamiento
- Expiración: Nunca (el monitoreo necesita acceso continuo)
- Configura en la fuente de datos de Grafana
Caso de Uso 4: API del Portal del Cliente
Crea una clave para el portal de autoservicio del cliente:
- Nombre: "Backend del Portal del Cliente"
- Permisos: Ver Propio Cliente, Ver Propios Servicios, Crear Pagos
- Expiración: 180 días
- Usar en llamadas a la API del backend del portal
Documentación Relacionada
concepts_api- Conceptos y ejemplos de autenticación APIrbac- Control de acceso basado en roles y permisos2fa- Autenticación de dos factores para seguridad adicional