Diseño de matriz de permisos para herramientas internas: roles y ámbitos
El diseño de una matriz de permisos te ayuda a mapear roles, ámbitos y excepciones antes de construir pantallas y APIs, reduciendo retrabajo y errores de acceso.

Qué problema resuelve una matriz de permisos
Una herramienta interna es el software que tu equipo usa para operar el negocio día a día. Piensa en paneles de administración, dashboards de operaciones, consolas de soporte, pantallas de revisión financiera y las pequeñas apps que ayudan a las personas a aprobar trabajo, corregir datos o responder a clientes.
Estas herramientas manejan datos sensibles y acciones potentes. Un agente de soporte puede necesitar ver el perfil de un cliente pero nunca ver los detalles completos de pago. Un usuario de finanzas puede exportar facturas pero no debería editar la configuración de cuentas. Un líder de operaciones puede hacer ambas cosas, pero solo para su región.
Los permisos se enredan rápido porque las herramientas internas crecen por capas. Aparecen nuevos roles, los antiguos se dividen y se acumulan excepciones puntuales: “Permitir a María reembolsar”, “Bloquear a contratistas de las notas”, “Dejar que líderes aprueben solo hasta $500”. Cuando las reglas viven solo en la cabeza de la gente (o en tickets dispersos), las pantallas y los endpoints de la API se desalinean y aparecen brechas de seguridad.
El diseño de una matriz de permisos arregla eso creando un mapa único y compartido de quién puede hacer qué, sobre qué datos y con qué límites. Se convierte en la fuente de la verdad tanto para decisiones de UI (qué pantallas, botones y campos aparecen) como para decisiones backend (qué permite realmente el servidor, incluso si alguien intenta saltarse la UI).
No es solo para desarrolladores. Una buena matriz es un documento vivo en el que producto, operaciones y quienes construyen pueden ponerse de acuerdo. Si construyes con una plataforma no-code como AppMaster, la matriz sigue siendo esencial: guía cómo configurar roles, definir recursos y mantener la coherencia entre pantallas visuales y endpoints generados.
Una matriz simple te ayuda a:
- Hacer las reglas explícitas antes de construir
- Reducir el caos de “casos especiales”
- Mantener alineados los permisos de UI y API
- Revisar cambios de acceso sin conjeturas
Términos clave: roles, recursos, acciones, ámbitos, excepciones
Un buen diseño empieza por tener un vocabulario compartido. Si tu equipo usa estas palabras con el mismo significado, evitarás reglas confusas más adelante.
Un rol es un grupo de personas basado en su trabajo que suele necesitar el mismo acceso. Piensa en Soporte, Finanzas, Operaciones o Responsable. Los roles deberían describir lo que alguien hace la mayor parte del tiempo, no su antigüedad. Una persona puede tener más de un rol, pero mantenlo raro.
Un recurso es aquello que proteges. En herramientas internas, recursos comunes son clientes, tickets, facturas, informes, integraciones y configuraciones. Nombra los recursos como sustantivos. Esto ayuda cuando conviertas reglas en pantallas y endpoints.
Una acción es lo que alguien puede hacer sobre un recurso. Mantén los verbos consistentes para que la matriz sea legible. Acciones típicas incluyen:
- view
- create
- edit
- delete
- approve
- export
Un ámbito responde “¿qué registros?” sin crear más roles. Los ámbitos muchas veces marcan la diferencia entre acceso seguro y no seguro. Ámbitos comunes son:
- own (registros que creaste o que te asignaron)
- team (tu equipo)
- region (tu territorio)
- all (todo)
Una excepción es una sobrescritura que rompe las reglas normales de rol y ámbito. Las excepciones pueden ser temporales (cobertura de turno), específicas por usuario (un especialista necesita una acción extra) o específicas por registro (un cliente VIP está bloqueado). Trata las excepciones como deuda controlada: registra quién las aprobó, por qué existen y cuándo expiran.
Ejemplo: Un agente de soporte puede “ver tickets” con ámbito “team”, pero obtiene una excepción de corta duración para “exportar tickets” por una revisión de incidente. En una herramienta construida con AppMaster, este tipo de regla es más fácil de mantener si nombras roles, recursos, acciones y ámbitos de forma consistente desde el inicio.
Decisiones que tomar antes de dibujar la matriz
Empieza acordando qué vas a proteger realmente. Lista las áreas de la herramienta interna como recursos, no como pantallas. Una pantalla puede mostrar “Pedidos”, “Reembolsos” y “Clientes” en un mismo lugar, pero son recursos diferentes con riesgos distintos.
Antes de escribir un permiso, estandariza tus verbos de acción. Pequeñas diferencias de redacción crean reglas duplicadas después (edit vs update, remove vs delete, view vs read). Elige un conjunto corto y compártelo en todos los recursos. Para la mayoría de herramientas internas, un conjunto simple como view, create, update, delete, approve, export es suficiente.
Los ámbitos son la siguiente decisión y deberían coincidir con cómo ya piensa tu empresa. Demasiados ámbitos hacen la matriz ilegible; muy pocos crean excepciones constantes. Busca un conjunto pequeño que encaje con tu estructura organizativa, por ejemplo:
- own (registros que creaste)
- team (registros de tu equipo)
- location (una sucursal o región)
- all (todo)
- none (sin acceso)
También necesitas una regla clara para el “no”. Decide qué está explícitamente prohibido frente a lo que se niega implícitamente. La denegación implícita (todo lo no listado está denegado) es más segura y simple. Prohibir explícito es útil cuando tienes acceso amplio pero quieres bloquear una acción concreta, por ejemplo “Finanzas puede acceder a todas las facturas excepto eliminar”.
Marca las acciones sensibles desde temprano, antes de que se entierren en la cuadrícula. Exportaciones, eliminaciones, pagos, cambios de roles y acceso a datos personales merecen atención adicional, registro y a menudo un paso de aprobación. Por ejemplo, podrías permitir que un líder de soporte actualice un perfil de cliente, pero requerir aprobación de finanzas antes de que se cree o exporte un pago.
Si construyes en AppMaster, estas decisiones se mapean limpiasmente a endpoints backend y lógica de Business Process más adelante, pero la matriz debe estar clara primero.
Paso a paso: construye la matriz de permisos desde cero
Comienza por el trabajo que hace la gente, no por las pantallas que planeas construir. Si empiezas por pantallas, copiarás la UI actual y perderás las reglas reales (como quién puede aprobar reembolsos o quién puede editar un registro de cliente después de que esté bloqueado).
Una forma simple de diseñar la matriz es tratarla como un mapa de tareas hacia acceso, y luego convertir eso en tu app.
Orden práctico de construcción
-
Lista tareas del negocio en lenguaje claro. Ejemplo: “Emitir un reembolso”, “Cambiar el email de un cliente”, “Exportar facturas del mes pasado”. Manténlo breve y real.
-
Convierte tareas en recursos y acciones. Los recursos son sustantivos (Invoice, Ticket, Customer), las acciones son verbos (view, create, edit, approve, export). Asigna un propietario para cada recurso: una persona que pueda explicar casos límite y que diga “sí, eso es correcto”.
-
Define roles basados en equipos estables. Usa grupos como Soporte, Finanzas, Operaciones, Team Lead. Evita títulos que cambian a menudo (Senior, Junior) a menos que realmente afecten el acceso.
-
Rellena la matriz con el acceso mínimo que cada rol necesita para completar las tareas. Si Soporte solo necesita ver facturas para responder preguntas, no des por defecto “export”. Siempre puedes añadir acceso luego, pero quitarlo más tarde rompe hábitos.
-
Añade ámbitos solo donde importen. En lugar de un permiso único “edit”, indica ámbitos como “edit own”, “edit assigned” o “edit all”. Esto mantiene las reglas claras sin crear 50 roles.
Captura las excepciones en una tabla separada, no como notas desordenadas dentro de la matriz. Cada excepción necesita un campo de razón claro (cumplimiento, riesgo de fraude, separación de funciones) y un único responsable que la apruebe.
Una vez hecho esto, herramientas como AppMaster facilitan convertir la matriz en endpoints protegidos y pantallas de administración sin adivinar las reglas al construir.
Cómo estructurar la matriz para que siga siendo usable
Una matriz de permisos es útil solo si la gente puede leerla rápido. Si se convierte en un muro gigante de celdas, los equipos dejan de usarla y los permisos se desvían de lo que pretendías.
Empieza dividiendo la matriz por dominio. En lugar de una hoja para todo, usa una pestaña por área del negocio, como Clientes, Facturación y Contenido. La mayoría de los roles solo tocan unos pocos dominios, así las revisiones son rápidas y se reducen cambios accidentales.
Usa un patrón de nombres que sea consistente entre pestañas. Un formato simple como Resource.Action.Scope hace obvio qué significa cada permiso y evita duplicados que se ven distintos pero son lo mismo. Por ejemplo, Invoice.Approve.Department lee igual que Customer.Edit.Own.
Cuando aparezca un caso límite, resiste la tentación de crear un nuevo rol. Añade una nota corta junto a la celda describiendo la excepción y cuándo aplica. Ejemplo: Soporte puede ver facturas, pero solo después de que el cliente verifique su identidad. La nota también puede apuntar al paso adicional de UI que necesitas, sin cambiar el modelo de roles.
Marca permisos de alto riesgo para que destaquen en las revisiones. Son acciones como reembolsos, aprobaciones, exportaciones y eliminación de datos. Señala las celdas y escribe qué control extra se requiere, como aprobación de dos personas o confirmación solo por manager.
Para mantener la matriz sostenible en el tiempo, versiona como un artefacto real:
- v1, v2, etc. más fecha
- owner (una persona responsable)
- resumen corto del cambio
- qué disparó el cambio (nuevo flujo, hallazgo de auditoría)
Una vez la matriz está estable, es mucho más fácil construir pantallas y endpoints en una herramienta como AppMaster, porque cada botón y acción de API se mapea a un nombre de permiso claro.
Convierte la matriz en pantallas y endpoints
Una matriz de permisos es útil solo si se convierte en reglas reales en dos lugares: tu API y tu UI. Empieza tratando cada recurso de la matriz (como Tickets, Invoices, Users) como un grupo de endpoints. Mantén las acciones alineadas con tus verbos de la matriz: view, create, edit, approve, export, delete.
En el lado de la API, aplica permisos en cada request. Las comprobaciones en la UI ayudan a la claridad, pero no son seguridad. Un botón oculto no detiene una llamada directa a la API.
Una forma simple de traducir la matriz a permisos de API es nombrar permisos de forma consistente y adjuntarlos en el límite donde ocurre la acción:
tickets:view,tickets:edit,tickets:exportinvoices:view,invoices:approve,invoices:deleteusers:view,users:invite
Luego usa los mismos nombres de permiso para controlar la UI: elementos de menú, acceso a páginas, botones e incluso campos. Por ejemplo, un agente de Soporte puede ver la lista de Tickets y abrir un ticket, pero el campo “Refund” será de solo lectura a menos que también tenga invoices:approve.
Ten cuidado con el acceso a listas vs detalle. Los equipos a menudo necesitan “ver que algo existe” sin ver el registro completo. Eso significa que puedes permitir resultados de lista con columnas limitadas, pero bloquear la apertura del detalle a menos que el usuario tenga permiso de detalle (o pase una comprobación de ámbito como “assigned to me”). Decide esto temprano para no construir una pantalla de lista que filtre datos sensibles.
Finalmente, mapea el registro de auditoría a las acciones que importan. Exportaciones, eliminaciones, aprobaciones, cambios de rol y descargas de datos deben crear eventos de auditoría con quién, qué, cuándo y el registro objetivo. Si construyes en AppMaster, puedes reflejar esto en la lógica de endpoints y en Business Process para que la misma regla dispare tanto la acción como su entrada de auditoría.
Errores comunes y trampas
La forma más rápida de romper el diseño de una matriz es modelar la UI en vez del negocio. Una pantalla puede mostrar varias cosas y lo mismo puede aparecer en varias pantallas. Si tratas cada pantalla como un recurso separado, terminas duplicando reglas, perdiendo casos límite y discutiendo sobre nombres en vez de acceso.
Otra trampa común es la proliferación de roles. Los equipos siguen añadiendo roles (Soporte Nivel 1, Soporte Nivel 2, Soporte Manager, etc.) cuando un conjunto más pequeño de roles más un ámbito claro resolvería el problema. Ámbitos como “equipo propio”, “región asignada” o “cuentas que gestionas” suelen explicar la diferencia mejor que un nuevo rol.
Aquí algunos errores habituales que aparecen en herramientas internas reales:
- Definir solo “view” y “edit” y olvidar acciones como export, bulk edit, refund, impersonate o “change owner”.
- Usar excepciones como parche a largo plazo. Concesiones puntuales (“dar acceso a Sam a Finanzas por una semana”) se vuelven permanentes y ocultan un modelo de roles roto.
- Ocultar botones en la UI y asumir que el sistema es seguro. La API debe rechazar la solicitud incluso si un usuario encuentra el endpoint.
- No decidir qué pasa cuando cambia el ámbito de alguien, como una transferencia de equipo o un cambio de región. Los permisos deben actualizarse de forma predecible, no derivarse.
- Tratar a “administrador” como ilimitado sin salvaguardas. Incluso los administradores a menudo necesitan separación, por ejemplo “puede gestionar usuarios” pero “no puede aprobar pagos”.
Las excepciones merecen especial precaución. Son útiles para situaciones temporales, pero deberían expirar o revisarse. Si las excepciones siguen creciendo, es señal de que tus roles o ámbitos no están bien mapeados.
Un ejemplo rápido: en una herramienta de soporte y finanzas, Soporte puede ver perfiles de clientes y crear tickets, pero Finanzas puede exportar facturas y emitir reembolsos. Si solo aseguras las páginas, un agente de Soporte aún podría llamar directamente a un endpoint de exportación. Ya sea que construyas con código personalizado o con una plataforma como AppMaster que genera endpoints backend, la regla debe vivir en el lado del servidor, no solo en la UI.
Lista de comprobación rápida antes de empezar a construir
Una matriz de permisos es útil solo si se convierte en reglas claras y aplicables. Antes de crear tu primera pantalla o endpoint, repasa esta lista. Te ayudará a evitar configuraciones “casi seguras” que fallan cuando aparece un nuevo rol o caso límite.
Construye las reglas, después la UI
Empieza con una mentalidad de denegación por defecto: todo lo que no esté explícitamente permitido está bloqueado. Esta es la base más segura y evita accesos inesperados cuando añades nuevas funciones.
Asegúrate de tener una única fuente de verdad para los permisos. Ya esté en un documento, una tabla de la base de datos o tu configuración no-code, todo el equipo debe saber dónde están las reglas actuales. Si la hoja de cálculo dice una cosa y la app otra, introducirás errores.
Aquí tienes una lista compacta previa a la construcción que puedes usar para diseñar la matriz de permisos:
- La denegación por defecto se aplica en todas partes (botones UI, endpoints API, exportaciones, jobs en segundo plano).
- Cada acción tiene una definición clara de ámbito (registro propio, equipo, región, todo o un subconjunto nombrado).
- Las capacidades de administrador están separadas de las acciones del negocio (gestión de roles no es lo mismo que “aprobar reembolso”).
- Las acciones sensibles requieren controles más fuertes (pasos de aprobación, registro y, idealmente, alertas por actividad inusual).
- Las excepciones tienen un responsable y fecha de expiración para que el “acceso temporal” no se haga permanente.
Después de eso, valida las reglas con un escenario realista. Por ejemplo: “Un agente de soporte puede ver un pedido y añadir una nota para su región, pero no puede editar precios ni emitir reembolsos. Finanzas puede emitir reembolsos, pero solo tras aprobación del manager, y cada reembolso se registra.” Si no puedes explicarlo en una o dos frases, tus ámbitos y excepciones aún no están claros.
Si construyes en AppMaster, trata estos puntos como requisitos tanto para tus pantallas como para tu lógica de negocio, no solo para la UI. Los botones pueden ocultar acciones, pero solo las reglas del backend las hacen efectivas.
Escenario de ejemplo: una herramienta interna de soporte y finanzas
Imagina una empresa de tamaño medio con una herramienta interna usada por Soporte y Finanzas. La misma base de datos contiene Customers, Tickets, Refunds, Payouts y un área pequeña de Settings (plantillas e integraciones). Este tipo de app no se arregla con una simple comprobación de login.
Aquí están los roles con los que deciden empezar:
- Agente de Soporte: trabaja tickets en una cola
- Líder de Soporte: ayuda entre colas y aprueba ciertas acciones
- Finanzas: maneja tareas relacionadas con dinero
- Ops Admin: dueño del control de acceso y configuraciones del sistema
Un diseño práctico empieza escribiendo acciones por recurso y luego acotándolas con ámbitos.
Para Tickets, los Agentes de Soporte pueden ver y actualizar el estado solo para tickets en su cola asignada. Pueden añadir notas, pero no pueden cambiar el propietario del ticket. Los Líderes de Soporte pueden hacer todo lo que un Agente puede, además de reasignar tickets dentro de su región.
Para Refunds, Finanzas puede crear y aprobar reembolsos, pero solo hasta un monto establecido. Soporte puede crear una solicitud de reembolso, pero no aprobarla. La aprobación del reembolso es una acción separada de la creación, así que permanece visible en la matriz y no puede concederse por accidente.
Para Payouts y Settings, la herramienta se mantiene estricta: solo Finanzas puede ver payouts y solo Ops Admin puede cambiar Settings. Soporte ni siquiera ve estas pantallas, lo que reduce tentaciones y errores.
Ahora añade una regla de excepción: un Líder de Soporte cubre otra región por dos semanas. En lugar de darle un rol amplio como Ops Admin, la matriz puede incluir una expansión de ámbito temporal (Líder de Soporte + Región B, expira en fecha). Esa excepción única es más segura que copiar permisos entre roles.
Si construyes esto en AppMaster, la misma matriz puede guiar qué páginas aparecen en la UI y qué permiten los endpoints en el backend, para que nadie acceda a Payouts o Settings adivinando una llamada API.
Cómo probar y mantener permisos con el tiempo
Los permisos suelen fallar de formas pequeñas y aburridas: una pantalla olvida ocultar un botón, un endpoint omite una verificación, una regla de ámbito es demasiado amplia. Un buen diseño de matriz se vuelve mucho más útil cuando lo conviertes en tests repetibles y en una rutina simple de mantenimiento.
Empieza con un conjunto pequeño de usuarios de prueba. No necesitas docenas de cuentas. Crea un usuario por rol y un usuario “límite” para cada excepción común (por ejemplo “Agente de Soporte con aprobación de reembolso”). Mantén esas cuentas estables para que el equipo las reutilice sprint a sprint.
Luego convierte la matriz en casos de prueba. Para cada regla, escribe un camino “permitido” y uno “denegado”. Haz que el camino denegado sea específico (qué debe ocurrir) para que no se pase por alto.
- Rol: Agente de Soporte. Acción: Refund. Esperado: denegado con mensaje claro, sin cambios en datos.
- Rol: Finanzas. Acción: Refund. Esperado: permitido, crea registro de reembolso, registra actor y motivo.
- Rol: Manager. Acción: View tickets. Ámbito: equipo. Esperado: puede ver tickets de su equipo, no puede abrir tickets de otros equipos.
Prueba la misma regla dos veces: en la UI y en la API. Si la UI bloquea una acción pero la API aún la permite, alguien puede saltarse la pantalla. Si usas AppMaster, comprueba que la lógica de UI y los endpoints backend aplican ambas la regla.
Los ámbitos necesitan datos reales para probarse. Crea registros de prueba que difieran por propiedad, equipo y región. Verifica que no puedas “adivinar” un ID de otro ámbito y accederlo.
Finalmente, decide qué registrar para acciones sensibles (reembolsos, exportaciones, cambios de rol). Registra quién lo hizo, qué cambió, cuándo y desde dónde. Revisa registros según un calendario y añade alertas para acciones raras, como ediciones de permisos o exportaciones masivas.
Próximos pasos: pasar de la matriz a una herramienta interna funcional
Trata la matriz de permisos como un plan de construcción, no como un documento archivado. La forma más rápida de obtener valor es confirmar lo básico con quienes poseen los datos y los procesos.
Empieza con un taller corto (30 minutos basta) con un representante por rol y los “propietarios de recursos” (personas responsables de customers, invoices, payouts, tickets, etc.). Recorred roles, recursos, acciones y ámbitos, y señalad los “casos especiales”. Si una excepción suena común, puede que falte un ámbito.
Luego redacta una matriz v1 y haz una revisión focalizada con los propietarios de recursos. Manténlo práctico: “¿Puede Soporte ver facturas?” “¿Puede Finanzas editar datos del cliente?” Si alguien duda, captura la regla en lenguaje claro primero. Puedes formalizarla después.
Una vez acordada la v1, construye un dominio completo antes de expandir. Elige una porción delgada que toque datos, lógica y UI (por ejemplo: Ticketing o aprobaciones de Invoice). Debes poder responder: quién puede ver, quién puede cambiar y qué ocurre cuando lo intentan.
Si usas AppMaster, mapea la matriz a las partes del producto antes de generar nada:
- Data Designer: alinea recursos con entidades (tablas) y campos clave que afectan ámbitos (como team_id, region_id)
- Business Processes: aplica las reglas donde ocurren los cambios (create, update, approve, export)
- Reglas de visibilidad UI: oculta acciones que los usuarios no pueden ejecutar y muestra mensajes claros cuando se deniega acceso
- Endpoints: expone solo lo que cada rol necesita y separa operaciones solo para admins
Un ejemplo simple: crea un flujo de “Solicitud de reembolso” con dos roles (Soporte crea, Finanzas aprueba). Cuando eso funcione, añade casos límite como “Soporte puede cancelar solo dentro de 30 minutos”.
Prueba una pequeña herramienta interna en AppMaster para validar roles y flujos temprano y luego itera desde la matriz. El objetivo es detectar malentendidos antes de tener 20 pantallas y una pila de correcciones de permisos.


