Control de acceso
Aislamiento multi-tenant
Percus es una plataforma multi-tenant. Cada organización es un tenant completamente aislado. Los usuarios, proyectos, templates y credenciales de API pertenecen a una única organización y nunca son visibles para los usuarios de otras organizaciones.
No existe estado compartido entre organizaciones a nivel de aplicación. El Identity Service y el Campaign Service aplican scoping por organización en todas las consultas.
Control de acceso basado en roles
Cada usuario tiene exactamente un rol dentro de cada organización a la que pertenece. Los roles se asignan al momento de la invitación y pueden ser modificados por un OrganizationAdmin.
| Rol | Alcance | Qué puede hacer |
|---|---|---|
Viewer | Org | Acceso de solo lectura a proyectos, templates y canales |
Developer | Org | Subir y gestionar templates; ver todos los recursos |
ProjectManager | Org | Crear proyectos, publicar templates, gestionar páginas de aterrizaje y credenciales de API |
OrganizationAdmin | Org | Control total — todo lo anterior más invitar usuarios, cambiar roles y archivar proyectos |
Owner | Plataforma | Rol interno de Percus; acceso a todas las organizaciones |
Un usuario puede pertenecer a múltiples organizaciones con distintos roles en cada una.
Aplicación
La autorización se aplica en la capa de API, no en el frontend. El frontend reenvía el rol del usuario mediante las cabeceras de solicitud X-Percus-Forwarded-Org-Role y X-Percus-Forwarded-System-Role. El backend valida estas contra el JWT de sesión antes de procesar cualquier mutación.
Las operaciones sensibles — crear proyectos, publicar templates, gestionar credenciales, archivar — requieren rol ProjectManager u OrganizationAdmin y devuelven 403 Forbidden si la verificación de rol falla.
Qué controlan los clientes
| Control | Cómo |
|---|---|
| Quién tiene acceso a su organización | Gestionado por su OrganizationAdmin mediante invitaciones |
| Asignación de rol por usuario | El OrganizationAdmin puede cambiar roles en cualquier momento |
| Revocar acceso | El OrganizationAdmin puede desactivar a un usuario; los usuarios desactivados no pueden iniciar sesión |
| Ciclo de vida de credenciales de API | ProjectManager+ puede crear y revocar credenciales por proyecto |