Roles y alcance de permisos
OpenFactory almacena roles independientes a nivel de organización, unidad y equipo. Un nombre de rol describe un alcance; no es un permiso universal que se aplique automáticamente a cada API o feature del producto.
Modelo de alcance
organization membership: owner | admin | member
└── unit membership: unit_admin | base_creator | base_approver | member
└── team membership: team_lead | variant_creator | variant_deployer | variant_userLa membresía de organización es el límite exterior. Un usuario debe ser miembro de la organización antes de que un administrador pueda añadirlo a una de sus unidades o equipos. La membresía se comprueba de forma independiente en cada nivel; no infieras un rol de unidad o equipo desde un rol de organización mostrado en otro contexto.
Roles de organización
La API actual de gestión de organizaciones aplica estos permisos:
| Operación | Owner | Admin | Member |
|---|---|---|---|
| Ver organización, miembros, grupos, unidades y equipos | Sí | Sí | Sí |
| Editar nombre o descripción de la organización | Sí | Sí | No |
| Crear, editar o eliminar grupos y gestionar miembros de grupo | Sí | Sí | No |
| Invitar o eliminar miembros ordinarios | Sí | Sí | No |
| Cambiar roles de miembro/admin ordinarios | Sí | Sí | No |
| Invitar o promover un owner | Sí | No | No |
| Cambiar o eliminar un owner existente | Sí | No | No |
| Crear o eliminar unidades | Sí | Sí | No |
| Eliminar la organización | Sí | No | No |
| Abandonar la organización | Sí, salvo único owner | Sí | Sí |
Una organización puede tener más de un owner. La API impide que el único owner abandone hasta que exista otro owner o se elimine la organización. No hay una acción aparte de «transfer ownership» en esta API; un owner cambia el rol de otro miembro a owner, luego puede cambiar o eliminar al owner anterior según corresponda.
Roles de unidad
Los owners y admins de organización pueden gestionar toda unidad. Dentro de una unidad, la API actual de gestión de organizaciones concede a unit_admin estas operaciones administrativas:
- editar la unidad;
- añadir, eliminar y cambiar roles de miembros de unidad;
- crear, editar y eliminar equipos en esa unidad;
- añadir y gestionar miembros de equipo en esa unidad.
Solo un owner o admin de organización puede eliminar la unidad en sí.
base_creator, base_approver y member de unidad son etiquetas de rol almacenadas para política de flujo de imágenes base. Las rutas CRUD de organización por sí solas no prueban que cada acción de crear, aprobar o desplegar en otro sitio aplique esas etiquetas. Verifica el comportamiento de autorización del flujo de compilación o aprobación concreto antes de usarlo como control.
Roles de equipo
Los owners/admins de organización y el unit_admin de la unidad padre pueden gestionar membresía de equipo. Un team_lead puede:
- editar nombre o descripción del equipo;
- añadir y eliminar miembros del equipo;
- cambiar roles de miembros del equipo.
Un team_lead no puede eliminar el equipo mediante la API de organización actual; esa operación está reservada a un owner/admin de organización o al unit_admin padre.
variant_creator, variant_deployer y variant_user expresan las responsabilidades previstas del flujo de variant. No deben leerse como prueba de que cada endpoint de variant aplique una matriz completa crear/editar/desplegar. Prueba el flujo exacto y rutas denegadas en la versión desplegada.
Los grupos son distintos
Los grupos son colecciones de compartir a nivel de organización, no otra jerarquía de roles. Owners y admins crean grupos y gestionan membresía de grupo; todos los miembros de organización pueden listar grupos y sus miembros. La membresía en un grupo no convierte a un usuario en admin de organización, admin de unidad ni team lead.
Cambiar un rol con seguridad
- Confirma la organización, unidad o equipo objetivo.
- Registra las membresías efectivas actuales del usuario en los tres alcances.
- Aplica un cambio de rol.
- Prueba una operación permitida y una denegada con la sesión propia de ese usuario.
- Comprueba que el estado cacheado de la UI y las sesiones existentes reflejan el cambio.
- Conserva un registro de auditoría fuera de la etiqueta de rol si tu política lo exige.
Cambiar una etiqueta sin una prueba de ruta denegada no es evidencia suficiente de que se aplique mínimo privilegio.
Casos límite habituales
- Un admin no puede promover a nadie a owner ni cambiar el rol de un owner existente.
- Un usuario no puede añadirse a una unidad o equipo hasta pertenecer a la organización.
- Los miembros de unidad y equipo pueden eliminarse a sí mismos; la membresía de organización permanece salvo que se elimine por separado.
- Eliminar membresía de organización debe comprobarse por efectos obsoletos en unidad, equipo, grupo, share y sesión en tu versión.
- Los colores de badge en la UI son presentación, no un control de seguridad. Confía siempre en autorización del lado servidor y pruebas de ruta denegada.