🔐 Seguridad
Introducción
La seguridad es una prioridad máxima en Semaphore UI. Tanto si automatiza tareas de infraestructura críticas como si gestiona el acceso del equipo a sistemas sensibles, Semaphore UI está diseñado para ofrecer operaciones robustas y seguras desde el primer momento. Esta sección describe cómo Semaphore gestiona la seguridad y qué debe tener en cuenta al desplegarlo en producción.
Autenticación y autorización
Semaphore admite mecanismos de autenticación seguros y de autorización flexibles:
-
Métodos de inicio de sesión:
-
Usuario/contraseña
Método predeterminado que utiliza credenciales almacenadas en la base de datos de Semaphore. Las contraseñas se almacenan con hash mediante un algoritmo robusto (bcrypt). -
LDAP
Permite la integración con servicios de directorio empresariales. Admite filtrado de usuarios/grupos y conexiones seguras mediante LDAPS. -
OpenID Connect (OIDC)
Habilita el inicio de sesión único con proveedores de identidad como Google, Azure AD o Keycloak. Admite claims personalizados y asignaciones de grupos.
-
-
Autenticación de dos factores (2FA)
La 2FA basada en TOTP está disponible y se recomienda para todos los usuarios. Puede habilitarse por usuario y admite códigos de recuperación opcionales. Consulte las opciones de configuraciónauth.totp.enabledyauth.totp.allow_recovery. -
Control de acceso basado en roles
Puede asignar distintos roles a los usuarios, como Admin, Maintainer o Viewer, limitando el acceso según la responsabilidad. -
Gestión de sesiones
Las sesiones están protegidas con cookies HTTP seguras. Los mecanismos de expiración de sesión y cierre de sesión garantizan una exposición mínima.
Secretos y credenciales
La gestión segura de secretos es una funcionalidad esencial:
-
Almacén de claves cifrado
Las credenciales y las variables secretas se cifran en reposo mediante cifrado AES. -
Aislamiento del entorno
Los secretos solo se pasan a los trabajos en tiempo de ejecución y no se exponen directamente al entorno del contenedor. -
Claves SSH y tokens
Los usuarios son responsables de cargar claves SSH y tokens válidos. Estos se cifran y solo se utilizan al ejecutar tareas. -
Integración con HashiCorp Vault (Pro)
Los secretos pueden almacenarse en una instancia externa de Vault. Elija el almacenamiento para cada secreto al crearlo o editarlo.
Cifrado de datos
Los datos sensibles se almacenan en la base de datos de forma cifrada. Debe establecer la opción de configuración access_key_encryption en el archivo de configuración para habilitar el cifrado de las claves de acceso. Debe generarse con el comando:
head -c32 /dev/urandom | base64
Ejecución de código/playbooks no confiables
Semaphore ejecuta playbooks y comandos definidos por el usuario, lo que puede ser arriesgado:
-
Aislamiento en contenedores
Las tareas se ejecutan en contenedores Docker aislados. Estos contenedores no tienen acceso al sistema anfitrión. -
Mínimo privilegio
Los contenedores se ejecutan con permisos mínimos y pueden restringirse aún más mediante flags de Docker. -
Ejecución en chroot
Semaphore puede ejecutar tareas dentro de una jaula chroot para aislar aún más el entorno de ejecución del sistema anfitrión. -
Usuario del proceso de la tarea
Las tareas pueden ejecutarse bajo un usuario del sistema dedicado sin privilegios de root (p. ej.,semaphore) para reducir el impacto de posibles exploits. Esto es opcional y puede configurarse según las políticas del sistema.
Despliegue seguro
Para garantizar que Semaphore se despliegue de forma segura:
-
Use HTTPS
Semaphore admite HTTPS tanto mediante su soporte TLS integrado como a través de un proxy inverso como Nginx. Se recomienda encarecidamente habilitar HTTPS en producción.Para habilitar el soporte HTTPS integrado, añada el siguiente bloque a config.json:
{
...
"tls": {
"enabled": true,
"cert_file": "/path/to/cert/example.com.cert",
"key_file": "/path/to/key/example.com.key"
}
...
} -
Ejecútelo detrás de un cortafuegos
Limite el acceso a Semaphore UI y a la base de datos únicamente a IPs de confianza. -
Seguridad de la base de datos
Use contraseñas robustas y restrinja el acceso a la base de datos únicamente a Semaphore.
Actualizaciones y gestión de parches
Las actualizaciones de seguridad se publican con regularidad:
-
Manténgase actualizado
Use siempre la última versión estable. -
Registro de cambios
Revise los cambios en GitHub antes de actualizar. -
Actualizaciones automáticas
Si usa Docker, considere pipelines de automatización para actualizaciones periódicas.
Notificación de vulnerabilidades
¿Ha encontrado una vulnerabilidad? Ayúdenos a mantener Semaphore seguro:
- Divulgación responsable
Escríbanos a[email protected].
Plazos objetivo de resolución de vulnerabilidades
Nuestro objetivo es resolver las vulnerabilidades notificadas dentro de los siguientes plazos:
- Críticas: en un plazo de 30 días
- Altas: en un plazo de 60 días
- Medias: en un plazo de 90 días
- Bajas: según el mejor esfuerzo, normalmente en un plazo de 180 días
Pueden publicarse parches fuera de ciclo para problemas explotados activamente que afecten a las últimas versiones estables.
Herramientas de seguridad del código
Usamos CodeQL, Codacy, Snyk y Renovate para analizar el código base y las dependencias, y para automatizar las actualizaciones de dependencias.
-
Sin exploits públicos
No comparta vulnerabilidades públicamente hasta que se hayan corregido. -
Agradecimientos
Los investigadores de seguridad pueden ser mencionados en las notas de la versión si así lo desean.