ABAC

  • Control de acceso basado en atributos (Attribute-Based Access Control)
  • autenticacion
  • ciberseguridad
  • [¿Qué es el control de acceso basado en rol de Azure (RBAC)? Microsoft Learn](https://learn.microsoft.com/es-es/azure/role-based-access-control/overview)

Conceptos Clave

  • Atributos de usuario: Características del usuario, como departamento, nivel jerárquico, ubicación, etc.
  • Atributos de recurso: Propiedades del recurso a proteger, como tipo de archivo, confidencialidad, propietario.
  • Atributos ambientales/contextuales: Factores externos como hora del día, ubicación geográfica, dispositivo utilizado.
  • Políticas de acceso: Reglas que combinan atributos para determinar permisos dinámicamente.
  • Evaluación en tiempo real: Acceso otorgado o denegado basado en atributos actuales y contexto de la solicitud.

Beneficios

  • Mayor flexibilidad y granularidad que RBAC.
  • Adaptable a entornos dinámicos y complejos.
  • Mejora la seguridad al considerar contexto y condiciones adicionales.
  • Facilita cumplimiento de políticas de seguridad avanzadas.

Comparativa ABAC vs RBAC

  • RBAC: Basado en roles predefinidos; más simple de administrar pero menos flexible.
  • ABAC: Basado en atributos; mayor granularidad y control dinámico, pero más complejo de implementar.
  • Posible integración: ABAC puede complementarse con RBAC para crear un modelo híbrido más seguro y eficiente.

Ejemplo de política ABAC en Python

usuarios = {
	"alice": {"departamento": "finanzas", "nivel": "senior"},
	"bob": {"departamento": "marketing", "nivel": "junior"}
}

recursos = {
	"reporte_finanzas": {"tipo": "confidencial", "departamento": "finanzas"},
	"blog_publico": {"tipo": "publico", "departamento": "marketing"}
}

def puede_acceder(usuario, recurso):
	u = usuarios.get(usuario, {})
	r = recursos.get(recurso, {})
	return u.get("departamento") == r.get("departamento") and r.get("tipo") != "confidencial"

print(puede_acceder("alice", "reporte_finanzas"))  # True
print(puede_acceder("bob", "reporte_finanzas"))    # False

`

Buenas Prácticas

  • Definir atributos claros y consistentes para usuarios y recursos.
  • Mantener políticas de acceso centralizadas y auditables.
  • Revisar periódicamente atributos y políticas según cambios organizativos.
  • Integrar ABAC con IAM Gestión de Identidades y Acceso para gestión eficiente de identidades y accesos dinámicos.