|
| 1 | +--- |
| 2 | +title: Control de acceso basado en atributos (Attribute-based access control, ABAC) |
| 3 | +tags: [authorization] |
| 4 | +description: El control de acceso basado en atributos (ABAC) es un modelo de control de acceso que utiliza atributos (como roles de usuario, propiedades de recursos y condiciones ambientales) para tomar decisiones de control de acceso. Es una forma flexible y dinámica de gestionar el acceso a recursos protegidos. |
| 5 | +--- |
| 6 | + |
| 7 | +## ¿Qué es el control de acceso basado en atributos (ABAC)? |
| 8 | + |
| 9 | +ABAC es un modelo de <Ref slug="access-control" /> que utiliza atributos para tomar decisiones de control de acceso. Estos atributos pueden incluir varios factores, como: |
| 10 | + |
| 11 | +- Atributos de usuario: por ejemplo, roles, departamento, ubicación, etc. |
| 12 | +- Atributos de recursos: por ejemplo, nivel de sensibilidad, propietario, tipo, etc. |
| 13 | +- Atributos ambientales: por ejemplo, hora de acceso, ubicación, dispositivo, etc. |
| 14 | + |
| 15 | +Al evaluar estos atributos y ejecutarlos a través de un conjunto de reglas, ABAC puede determinar si un sujeto (por ejemplo, usuario, servicio) debe tener acceso a un recurso. Este enfoque permite un control de acceso detallado y una aplicación dinámica de políticas basadas en el contexto. |
| 16 | + |
| 17 | +## ¿Cómo funciona el ABAC? |
| 18 | + |
| 19 | +ABAC utiliza un enfoque basado en políticas para el control de acceso. Una política ABAC típica consta de: |
| 20 | + |
| 21 | +- **Subject**: La entidad que solicita acceso (por ejemplo, usuario, servicio, dispositivo). |
| 22 | +- **Action**: La operación que se realiza en el recurso (por ejemplo, leer, escribir, eliminar). |
| 23 | +- **Resource**: La entidad a la que se accede (por ejemplo, archivo, base de datos, API). |
| 24 | +- **Environment**: El contexto en el que se solicita el acceso (por ejemplo, hora, ubicación, dispositivo). |
| 25 | +- **Attributes**: Las propiedades del sujeto, recurso y entorno que se evalúan para tomar decisiones de acceso. |
| 26 | +- **Policies**: Un conjunto de reglas que definen las condiciones bajo las cuales se concede o se niega el acceso. |
| 27 | + |
| 28 | +Las políticas ABAC son más complejas que los modelos de control de acceso tradicionales como <Ref slug="rbac" />. Por otro lado, ABAC proporciona más flexibilidad y granularidad en las decisiones de control de acceso. |
| 29 | + |
| 30 | +### Ejemplo de políticas ABAC |
| 31 | + |
| 32 | +Por ejemplo, un sistema tiene varias políticas ABAC: |
| 33 | + |
| 34 | +1. **Política 1**: Permitir el acceso si: |
| 35 | + |
| 36 | + - (Subject) El rol del sujeto es `manager`. |
| 37 | + - (Attribute) El nivel de sensibilidad del recurso es `high`. |
| 38 | + - (Environment) La ubicación es `internal`. |
| 39 | + - (Action) Cualquier acción. |
| 40 | + - (Environment) El tiempo es entre las 9 AM y las 5 PM (horas de oficina). |
| 41 | + |
| 42 | +2. **Política 2**: Denegar el acceso si: |
| 43 | + |
| 44 | + - (Subject) El rol del sujeto no es `manager`. |
| 45 | + - (Attribute) El nivel de sensibilidad del recurso es `high`. |
| 46 | + - (Environment) Cualquier ubicación. |
| 47 | + - (Action) Cualquier acción. |
| 48 | + - (Environment) Cualquier momento. |
| 49 | + |
| 50 | +3. **Política 3**: Permitir el acceso si: |
| 51 | + |
| 52 | + - (Subject) El rol del sujeto es `employee` o `manager`. |
| 53 | + - (Attribute) El nivel de sensibilidad del recurso es `low`. |
| 54 | + - (Environment) Cualquier ubicación. |
| 55 | + - (Action) Acción `read`. |
| 56 | + - (Environment) Cualquier momento. |
| 57 | + |
| 58 | +El motor de evaluación de políticas verificará estas políticas en orden, y la primera política que coincida con las condiciones determinará la decisión de acceso. Mientras tanto, se aplica una política de denegación predeterminada si ninguna otra política coincide. |
| 59 | + |
| 60 | +Veamos algunos escenarios para entender cómo funciona el ABAC: |
| 61 | + |
| 62 | +> **Escenario 1**. Un usuario quiere acceder (realizar la acción `read`) a un documento de alto nivel de sensibilidad (recurso) fuera de la oficina (entorno). El usuario tiene el rol de `manager` almacenado en el sistema. |
| 63 | + |
| 64 | +**Decisión**: El acceso se niega porque el usuario está fuera de la oficina (la ubicación no es `internal`). |
| 65 | + |
| 66 | +> **Escenario 2**. Un usuario quiere acceder (realizar la acción `read`) a un documento de alto nivel de sensibilidad (recurso) durante las horas de oficina (entorno) en la red de la oficina (ubicación=`internal`). El usuario tiene el rol de `manager`. |
| 67 | +
|
| 68 | +**Decisión**: El acceso se concede porque se cumplen todas las condiciones de la Política 1. |
| 69 | + |
| 70 | +> **Escenario 3**. Todas las condiciones en el escenario 2 son las mismas, pero el usuario tiene el rol de `employee` en lugar de `manager`. |
| 71 | +
|
| 72 | +**Decisión**: El acceso se niega porque el rol del usuario no coincide con las condiciones de la Política 1. |
| 73 | + |
| 74 | +> **Escenario 4**. Un usuario quiere acceder (realizar la acción `read`) a un documento de bajo nivel de sensibilidad (recurso). El usuario tiene el rol de `employee`. |
| 75 | +
|
| 76 | +**Decisión**: El acceso se concede porque se cumplen todas las condiciones de la Política 3. |
| 77 | + |
| 78 | +> **Escenario 5**. Un usuario quiere eliminar (realizar la acción `delete`) un documento de bajo nivel de sensibilidad (recurso). El usuario tiene el rol de `employee`. |
| 79 | +
|
| 80 | +**Decisión**: El acceso se niega porque no hay ninguna política que permita la acción `delete` en documentos de bajo nivel de sensibilidad. |
| 81 | + |
| 82 | +Podrás notar que no se requieren todos los atributos en cada política. Esta flexibilidad permite un mecanismo de control de acceso más dinámico y consciente del contexto. |
| 83 | + |
| 84 | +## Consideraciones de implementación |
| 85 | + |
| 86 | +Si bien el ABAC ofrece una forma poderosa de gestionar el control de acceso, también presenta algunas consideraciones de implementación: |
| 87 | + |
| 88 | +- Complejidad del sistema: Las políticas ABAC pueden volverse complejas a medida que aumenta el número de atributos y reglas. La gestión y prueba adecuada de políticas son más laboriosas que los modelos de control de acceso más simples. |
| 89 | +- Rendimiento: Evaluar políticas ABAC complejas puede afectar el rendimiento del sistema. Las técnicas de almacenamiento en caché y optimización pueden ayudar a mitigar este problema. |
| 90 | +- Conflictos de políticas: Las políticas en conflicto pueden llevar a decisiones de acceso impredecibles. La revisión periódica de políticas y la resolución de conflictos deben ser parte del proceso de gestión de políticas. |
| 91 | + |
| 92 | +## ABAC vs. RBAC |
| 93 | + |
| 94 | +Comparar ABAC con <Ref slug="rbac" /> puede ayudarte a comprender las diferencias entre los dos modelos: |
| 95 | + |
| 96 | +| | RBAC | ABAC | |
| 97 | +|-----------------------|------------------------------------|------------------------------------------| |
| 98 | +| Política de control de acceso | Basada en roles | Basada en atributos | |
| 99 | +| Granularidad | Gruesa | Fina | |
| 100 | +| Flexibilidad | Limitada | Muy flexible | |
| 101 | +| Complejidad | Más simple | Más compleja | |
| 102 | +| Impacto en el rendimiento | Mínimo | Puede ser significativo | |
| 103 | +| Gestión de acceso | Gestión de roles | Gestión de políticas | |
| 104 | +| Mejor para | Estructuras de permisos bien definidas | Control de acceso dinámico y consciente del contexto | |
| 105 | + |
| 106 | +<SeeAlso slugs={["access-control", "rbac", "authorization"]} /> |
| 107 | + |
| 108 | +<Resources |
| 109 | + urls={[ |
| 110 | + "https://blog.logto.io/rbac-and-abac", |
| 111 | + "https://csrc.nist.gov/publications/detail/sp/800-162/final", |
| 112 | + ]} |
| 113 | +/> |
0 commit comments