Pregunta de entrevista para Desarrollador backend

¿Cómo diseñas la autorización de un sistema donde los permisos varían por equipo, recurso y plan?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Separa autenticación de autorización y luego elige un modelo: el control de acceso basado en roles es simple y funciona cuando los permisos se agrupan en un puñado de roles, mientras que las reglas basadas en atributos encajan con condiciones sobre el recurso, como propietario, equipo o plan. Aplícalo en un único sitio, idealmente una capa de políticas que llamen los manejadores, mantén las comprobaciones cerca de los datos para que una consulta no pueda filtrar filas, y registra cada decisión para auditoría.

Por qué lo preguntan los entrevistadores

El entrevistador comprueba si esparcirías condicionales por los controladores o diseñarías algo revisable. Quiere oír hablar de centralizar la política, denegar por defecto y del clásico fallo de autorización a nivel de objeto, donde un endpoint comprueba que el usuario ha iniciado sesión pero no que el registro sea suyo. La multitenencia lo agudiza, porque un filtro que falta filtra datos de otro cliente.

Cómo estructurar tu respuesta

  • Separa explícitamente autenticación de autorización.
  • Elige un modelo y justifícalo por cómo se agrupan los permisos en la práctica.
  • Pon la aplicación de la política en una sola capa, denegando por defecto.
  • Cubre las comprobaciones a nivel de objeto y la auditabilidad.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

La autenticación responde a quién eres y ocurre una vez en el borde; la autorización responde a qué puedes hacer y ocurre en cada petición contra un recurso concreto. Como modelo empiezo con roles, porque son fáciles de razonar y de explicar a soporte, y luego añado condiciones por atributos donde los roles no llegan, cosas como este usuario está en el plan que incluye exportaciones, o este registro pertenece a su equipo. Más que el modelo importa que haya exactamente un sitio que decide. Quiero una función de política por tipo de recurso que llamen los manejadores, denegando por defecto, para que añadir un endpoint nuevo que olvide la comprobación sea una omisión visible y no un agujero silencioso. En cualquier cosa multiinquilino además empujo el filtro de inquilino a la capa de datos, para que una consulta no pueda físicamente devolver filas de otro inquilino, porque confiar en que todo desarrollador recuerde una cláusula where falla tarde o temprano. Y cada decisión se registra con sujeto, recurso y resultado, ya que la primera pregunta en cualquier incidente es quién podía ver qué.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿Qué es el fallo de autorización a nivel de objeto y cómo lo pruebas?
  • ¿Cómo gestionarías permisos que un administrador del cliente puede configurar?
  • ¿Dónde cacheas decisiones de autorización sin que queden obsoletas?

Más preguntas para Desarrollador backend

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot