docs Usuarios y RBAC
Usuarios y RBAC
Dos capas de roles: un rol global para la instancia y un rol por proyecto.
Cómo funciona el acceso
Cada usuario tiene un rol global (Admin, Operator o Viewer) y, por separado, un rol de proyecto en cada proyecto del que es miembro. El rol global gobierna las acciones de toda la instancia; el rol de proyecto gobierna todo lo que ocurre dentro de un proyecto. La pertenencia al proyecto es obligatoria: un Operator o Viewer global que no es miembro de un proyecto no puede verlo en absoluto, y el proyecto no aparece en su lista.
Roles globales
Admin
Superusuario. Es Admin en todos los proyectos automáticamente (esto no se puede reducir por proyecto). Es el único rol que puede gestionar usuarios, servidores y claves SSH, eliminar proyectos, leer el registro de auditoría, registrar la GitHub App, exportar o importar toda la instancia y cambiar los ajustes de la instancia.
Operator
Puede crear proyectos (y pasa a ser Admin de los proyectos que crea) y crear o editar reglas de alerta (eliminarlas es exclusivo de Admin). Es necesario, junto con un rol de proyecto Operator o Admin, para editar los ajustes del proyecto y la página de estado, abrir un terminal web, definir o ejecutar tareas programadas, gestionar canales de notificación y usar las consolas, archivos y mods de los servidores de juegos.
Viewer
El rol por defecto de los usuarios nuevos. Sin permisos a nivel de instancia. Lo que pueden hacer dentro de un proyecto depende por completo de su rol de proyecto, pero las acciones que además requieren el rol global Operator (ajustes del proyecto, terminal, tareas, notificaciones, consola y archivos de servidores de juegos) siguen vetadas aunque sean Operators del proyecto.
Roles de proyecto
Cada nivel incluye todo lo del nivel anterior de esta tabla:
| Rol | Qué puede hacer en el proyecto |
|---|---|
| Viewer | Ver el proyecto, sus aplicaciones, stacks, bases de datos y servidores de juegos, con sus despliegues, logs, métricas, listas de backups y ejecuciones de tareas. Los valores de las variables de entorno, las cadenas de conexión, la salida de las tareas y los archivos de los servidores de juegos permanecen ocultos. |
| Operator | Crear, configurar, desplegar, hacer rollback, iniciar y detener aplicaciones, stacks, bases de datos y servidores de juegos; editar variables de entorno y dominios; gestionar backups (incluida la restauración); activar el modo de mantenimiento; leer secretos y la salida de tareas, y exportar la configuración del proyecto. |
| Admin | Eliminar aplicaciones, stacks, bases de datos y servidores de juegos, y añadir, cambiar o quitar miembros del proyecto. |
Cuando un usuario sin acceso a un proyecto solicita uno de sus recursos, la API responde "not found" en lugar de "forbidden", de modo que los ids de otros proyectos no revelan nada.
Gestionar usuarios y miembros
- La primera cuenta registrada en una instancia nueva pasa a ser el Admin global; a partir de ahí, el registro público se cierra
- Los Admins globales crean usuarios, cambian su rol global, restablecen sus contraseñas y los eliminan desde la página Users (no puedes cambiar tu propio rol ni eliminarte a ti mismo)
- Los Admins de proyecto añaden usuarios existentes a un proyecto con un rol, lo cambian o los quitan desde la sección Members de la página del proyecto
- Los Admins globales no pueden añadirse como miembros: ya son Admin en todos los proyectos
- Cada usuario puede cambiar su propia contraseña y su email desde la página Settings
- Los cambios de rol surten efecto en la siguiente petición; el rol se lee de la base de datos, nunca del token
Ejemplo: para permitir que un colaborador externo despliegue una aplicación sin ver nada más, créalo como Viewer global y añádelo como Operator solo en ese proyecto. Podrá desplegar y configurar las aplicaciones de ese proyecto, pero no abrir un terminal ni ejecutar tareas: eso requiere además el rol global Operator.
Autenticación
DeployKit usa autenticación JWT con tokens de acceso de corta duración (15 minutos) y refresh tokens (7 días). Los refresh tokens se almacenan en Redis y se rotan: cada uso emite uno nuevo y revoca el anterior. Las contraseñas se hashean con bcrypt y deben tener al menos 8 caracteres. El login y el registro están limitados a 10 intentos por minuto por IP.