Seguridad
Zenavo guarda credenciales de servidores que son tuyos, así que la seguridad va primero en su diseño.
Tus servidores
- Zenavo no guarda claves SSH, contraseñas ni credenciales del clúster de un servidor que funciona. Las credenciales SSH que introduces las usa la tarea de configuración y se borran cuando la configuración termina bien, o un día después de que falle (hasta entonces se guardan cifradas, para reintentar); no se añade nada a
authorized_keys. - Después de la configuración, el agente de Zenavo del servidor conecta hacia fuera con el plano de control por HTTPS. Ningún puerto del servidor tiene que estar abierto para Zenavo, y Zenavo solo guarda un hash del token del agente.
- Los permisos de Kubernetes del agente solo cubren los espacios de nombres de los proyectos, que aplican el nivel baseline de Pod Security: ni contenedores privilegiados, ni red del host, ni directorios del host. Lo aplica una política de admisión, y el agente no puede cambiarla (Cortafuegos y seguridad).
- Las claves de host se fijan en la primera conexión; la configuración se niega a ejecutarse si cambia la clave de host de un servidor.
- Cada servidor solo puede descargar del almacén de imágenes de Zenavo las imágenes de su propio equipo: recibe un token de cinco minutos para los repositorios de su equipo, y el registro es de solo lectura para todos. Las imágenes se guardan por servicio, así que eliminar un proyecto elimina sus imágenes.
Compilaciones
Las compilaciones de Git se ejecutan en máquinas de compilación dedicadas sin identidad en la nube, sin dirección pública y sin ruta hacia el plano de control ni hacia otros clientes. Los pasos de compilación no llegan al servicio de metadatos de la nube ni a redes privadas. BuildKit se ejecuta sin root y solo acepta el certificado de cliente de Zenavo. Las URL de repositorio se limitan a https:// y SSH en direcciones públicas, sin redirecciones.
Tus datos
- Las variables y otros secretos se cifran en reposo. Los valores de las variables se censuran en los registros y se ocultan a los Viewer.
- La base de datos del plano de control solo acepta conexiones cifradas y con certificado verificado.
- El acceso a GitHub usa tokens de instalación de corta duración limitados a los repositorios que elegiste.
Tu cuenta
- Las contraseñas se guardan como hash; las sesiones duran 12 horas y se pueden cerrar desde Account settings.
- Las cookies de sesión son
HttpOnly,Securey solo del host (__Host-), y cada cambio requiere una petición del mismo origen con la cabecera de petición de Zenavo. - Autenticación en dos pasos con una aplicación de autenticación, más códigos de recuperación de un solo uso. El secreto se cifra con la clave maestra; los códigos de recuperación se guardan como hashes. Los códigos son de un solo uso y los códigos incorrectos se limitan por cuenta.
- Llaves de acceso (WebAuthn), solas o junto a la aplicación. Solo se guardan claves públicas; los desafíos son de un solo uso, de corta duración y ligados a la sesión o al inicio de sesión en curso, y un contador de firmas que retrocede se rechaza y queda en el registro de auditoría.
- Las cuentas nuevas con contraseña verifican su dirección de correo antes de poder añadir servidores, desplegar o invitar a nadie. Cambiar el correo o la contraseña, o eliminar la cuenta, pide tu contraseña actual.
- Un registro de auditoría de solo añadir guarda los inicios de sesión, las credenciales, los servidores, los despliegues y los cambios del equipo, sin secretos ni valores de variables. La base de datos se niega a cambiar o eliminar sus entradas.
- La vista de base de datos llega a las bases de datos a través de la API exec de Kubernetes, nunca abriendo el puerto de la base de datos, con credenciales que no salen del contenedor. Los miembros solo pueden leer (transacciones SQL de solo lectura, una lista de comandos de lectura de Redis permitidos, búsquedas de MongoDB); los cambios necesitan un administrador del equipo, y los comandos de Redis que afectan a todo el servidor y el JavaScript del lado del servidor en MongoDB se rechazan siempre. Las peticiones tienen límites de tiempo y tamaño y se auditan sin su SQL, claves, valores ni documentos.
Informa de una vulnerabilidad
Escribe a info@zenavo.app. Danos la oportunidad de corregir el problema antes de hacerlo público.