Building Trust Through Access Control

La mayoría de las aplicaciones creen que son seguras porque tienen una página de inicio de sesión.

El inicio de sesión es solo el primer paso. Una vez que un usuario entra, debes responder una pregunta: ¿Qué puede hacer este usuario?

Muchas personas confunden la autenticación con la autorización.

• La autenticación pregunta: ¿Quién eres? • La autorización pregunta: ¿Qué tienes permitido hacer?

Un usuario puede iniciar sesión con éxito. Esto no significa que deba ver todos los registros o editar todos los perfiles.

Utiliza el Control de Acceso Basado en Roles (RBAC) para que las reglas sean claras.

El RBAC funciona comparando el rol de un usuario con una lista de roles permitidos. Si no utilizas un control de acceso, te enfrentas a riesgos como:

  • Paneles de control sobreexpuestos
  • Demasiados permisos internos
  • Filtraciones accidentales de datos
  • Registros de auditoría deficientes
  • Pérdida de confianza

Sigue el principio de mínimo privilegio. Otorga a los usuarios solo el acceso que necesitan para su trabajo.

• El personal de soporte no debería ver todos los registros de clientes. • Los ingenieros no deberían tener acceso a producción de forma predeterminada. • Los datos de RR. HH. deben permanecer segmentados. • Los roles de administrador deben ser escasos y auditables.

A veces, los roles no son suficientes. Necesitas permisos basados en acciones. Un usuario puede ver un registro pero no puede eliminarlo. Esto te brinda un control granular.

También deberías separar los datos por sensibilidad: • Datos públicos: Nombre y foto. • Datos privados: Correo electrónico y teléfono. • Datos sensibles: Salario o números de identificación.

Trata estas categorías de forma diferente en tu código. Esto facilita la gestión de la seguridad.

La confianza también requiere rendición de cuentas. Cada vez que alguien toque datos sensibles, tu sistema debe crear un registro de auditoría. Las acciones sensibles deben dejar un rastro.

Antes de lanzar tu aplicación, verifica estos puntos:

  • ¿Son seguros los flujos de inicio de sesión y de sesión?
  • ¿Se basan los permisos en roles y acciones?
  • ¿Están segmentados los datos sensibles?
  • ¿Son restrictivos tus ajustes predeterminados?
  • ¿Registras todos los accesos?
  • ¿Puedes explicar los permisos a tus usuarios?

La autenticación permite la entrada de los usuarios. La autorización mantiene la confiabilidad de tu sistema. La confianza es una característica del producto.

Fuente: https://dev.to/samiatakande11/building-trust-into-authentication-practical-access-control-patterns-for-modern-apps-55pc