Control de acceso basado en atributos

El control de acceso basado en atributos (ABAC) es un modelo de autorización que evalúa los atributos para determinar el acceso. Los atributos pueden referirse al sujeto (el usuario o entidad que solicita el acceso), al objeto (el recurso o archivo al que el sujeto quiere acceder) o incluso al entorno (otros parámetros como la hora del día, la dirección IP, etc.). 

Las políticas ABAC funcionan junto con el RBAC (control de acceso basado en roles) y las divisiones para proporcionar más granularidad de control de acceso. Estas políticas son sentencias de lógica booleana en las que una condición se evalúa con un resultado verdadero o falso. Cada política se dirige a un grupo específico de llamadas a la API (conocido como objetivo) y se aplica a un subconjunto específico de usuarios (conocidos como sujetos).

Para empezar a utilizar ABAC, habilite primero el control de acceso basado en atributos.

Actualmente, se admiten las siguientes políticas:

  • No se pueden conceder nuevas funciones - Impide a los usuarios que no son administradores conceder funciones que ellos mismos no tienen.
  • No se pueden actualizar ciertos campos del perfil de usuario - Impide que los campos definidos del perfil de usuario sean modificados excepto por supervisores o administradores.

Definiciones utilizadas en ABAC

Término Descripción
Nombre de la política Nombre de la política establecido por el creador de la política al crearla o actualizarla. 
Descripción (Opcional) Breve descripción de la política establecida por el creador de la política.
Objetivo

El recurso al que se aplica la política. Los objetivos de recursos adoptan la forma de domain:entity:action y reflejan la acción que el sujeto intenta realizar (directory:userprofile:edit). 

El objetivo refleja lo que el usuario está intentando hacer y normalmente equivale a una llamada a la API para editar, ver o eliminar un recurso. Las políticas están asociadas a objetivos.

Tema

El sujeto de una política es el usuario, grupo o cliente al que se aplica la política. Las políticas sólo pueden tener un tema. El sujeto tiene los siguientes miembros:

  • tipo: Indica si una política se aplica a un único usuario, a un grupo de usuarios, a un cliente OAuth específico o a todos los usuarios/clientes que acceden al recurso. El atributo type debe ser uno de los siguientes: usuario, grupo, cliente o todos.
  • id: El GUID del usuario/grupo/cliente. Cuando el tipo de asunto es all este valor se ignora.
Efecto

El efecto de una política indica si la política permite el acceso cuando se cumplen sus condiciones, o deniega inmediatamente el acceso cuando se cumplen las condiciones. Si un usuario cumple las condiciones de una política ALLOW, tiene los permisos necesarios y no está bloqueado por una política DENY, se le permite el acceso al recurso.

ABAC no sustituye a los actuales controles de acceso basados en funciones y en divisiones. Trabaja junto a ellos para proporcionar un control de acceso más preciso. Si el resultado de la evaluación de una política ABAC es PERMITIR, el sistema comprueba si el sujeto tiene el permiso necesario antes de permitir el acceso.

Las políticas con efecto DENY especifican las condiciones en las que se debe denegar el acceso al recurso. Si un usuario cumple las condiciones de una política DENY, se le deniega el acceso independientemente de si también cumple las condiciones de una política ALLOW en el mismo recurso.

Si un recurso tiene al menos una política adjunta pero el usuario no cumple las condiciones de ninguna de las políticas, se le deniega el acceso al recurso por defecto.

Condición

(Opcional) Establece las condiciones específicas en las que la política permite o deniega el acceso.

Cada condición evaluada se representa mediante el siguiente patrón básico (representado en JSON): "attribute.one": { "comparison_operation": "attribute.two" }

Cuando se evalúa la política, el sistema recupera los atributos correspondientes a los nombres de atributos suministrados y los compara utilizando la operación suministrada.

También se pueden anidar múltiples condiciones dentro de una estructura Any (que representa OR lógico) o All (que representa AND lógico), para permitir una lógica de condiciones más compleja.

Atributos predefinidos

(Opcional) Un mapa de atributos estáticos predefinidos que se comparan con los datos de atributos del sistema. Por ejemplo, el creador de la política puede querer permitir el acceso a cualquier usuario con un ID de rol específico, y proporcionaría el ID de rol en cuestión como un atributo preestablecido en la política.

El creador de la política establece los nombres de los atributos predefinidos. Los nombres que entren en conflicto con atributos existentes suministrados por el sistema serán rechazados en la validación. Los nombres de atributos predefinidos pueden contener caracteres alfanuméricos, puntos (.) y guiones bajos ( _ ), pero no espacios ni caracteres especiales distintos de los enumerados.

Cada entrada del mapa tiene una clave, que es el nombre del atributo preestablecido, y un valor, que es un objeto TypedAttribute, con los siguientes miembros:

  • tipo: Tipo de datos básico del atributo.
  • valor: Una representación de cadena del valor del atributo.

Para obtener más información, consulte Crear políticas de acceso.