RBAC

  • Control de acceso basado en roles (Role-Based Access Control)
  • autenticacion
  • ciberseguridad
  • [¿Qué es el control de acceso basado en roles (RBAC)? Cloudflare](https://www.cloudflare.com/es-es/learning/access-management/role-based-access-control-rbac/)

Conceptos Clave

  • Roles: Conjunto de permisos asignados según funciones dentro de la organización.
  • Permisos: Acciones específicas que un usuario puede realizar sobre recursos.
  • Usuarios: Entidades que reciben uno o varios roles.
  • Sesiones: Contexto en el que un usuario actúa con los roles asignados.
  • Principio de menor privilegio: Cada usuario debe tener solo los permisos necesarios para realizar su trabajo.

Tipos de RBAC

  • RBAC plano (Flat RBAC): Roles simples, sin jerarquías.
  • RBAC jerárquico: Roles con herencia de permisos; roles superiores incluyen permisos de roles inferiores.
  • RBAC basado en reglas/atributos: Extensión donde roles se asignan dinámicamente según atributos del usuario o condiciones contextuales.

Beneficios

  • Simplificación de la gestión de permisos.
  • Mayor seguridad al limitar el acceso innecesario.
  • Facilita auditorías y cumplimiento normativo.
  • Escalabilidad en organizaciones grandes con múltiples roles.

Implementación

  • Definir roles claros y sus permisos asociados.
  • Asignar roles a los usuarios según funciones y responsabilidades.
  • Revisar periódicamente los roles y permisos para mantener la seguridad.
  • Integración con sistemas de IAM Gestión de Identidades y Acceso para gestión centralizada de identidades y accesos.

Ejemplo de RBAC en código

Definición de roles y permisos en Python

roles = {
	"admin": ["crear_usuario", "eliminar_usuario", "modificar_usuario"],
	"editor": ["modificar_contenido", "publicar_contenido"],
	"lector": ["ver_contenido"]
}

usuarios = {
	"alice": "admin",
	"bob": "editor",
	"carol": "lector"
}

def puede(usuario, permiso):
	rol = usuarios.get(usuario)
	return permiso in roles.get(rol, [])

print(puede("alice", "eliminar_usuario"))  # True
print(puede("bob", "eliminar_usuario"))    # False

`

Buenas prácticas

  • Mantener roles lo más simples y generales posible.
  • Evitar asignar permisos directamente a usuarios; siempre usar roles.
  • Documentar roles, permisos y criterios de asignación.
  • Integrar RBAC con SSO Single Sign-On para consistencia y facilidad de gestión.