Conceptos básicos de autorización

La autorización (en ocasiones abreviada como AuthZ) se utiliza para configurar permisos que se usan para evaluar el acceso a recursos o funcionalidades. Por el contrario, la autenticación (abreviada a veces como AuthN) se centra en demostrar que una entidad como un usuario o servicio es quien dice ser.

La autorización puede incluir la especificación de a qué funcionalidad (o recursos) se le permite tener acceso a una entidad o a qué datos puede acceder esa entidad y qué puede hacer con esos datos. A eso se le suele denominar control de acceso.

Nota

La autenticación y la autorización son conceptos que no se limitan solo a los usuarios. Los servicios o las aplicaciones demonio se suelen crear para realizar solicitudes de recursos como ellos mismos en lugar de en nombre de un usuario específico. Al hablar sobre estos temas, el término "entidad" se usa para hacer referencia a un usuario o a una aplicación.

Enfoques de autorización

Hay varios enfoques comunes para administrar la autorización. El control de acceso basado en roles es actualmente el enfoque más común que usa la Plataforma de identidad de Microsoft.

Autenticación como autorización

Posiblemente, la forma más sencilla de autorización es conceder o denegar el acceso en función de si se ha autenticado la entidad que realiza una solicitud. Si el solicitante puede demostrar que es quien dice ser, puede acceder a los recursos o funcionalidades protegidos.

Listas de control de acceso

La autorización mediante listas de control de acceso (ACL) implica el mantenimiento de listas explícitas de entidades específicas que tienen o no acceso a un recurso o funcionalidad. Las ACL ofrecen un control más preciso sobre la autenticación como autorización, pero son difíciles de administrar a medida que aumenta el número de entidades.

Control de acceso basado en rol

El control de acceso basado en roles (RBAC) es posiblemente el enfoque más común para aplicar la autorización en las aplicaciones. Al usar RBAC, los roles se definen para describir los tipos de actividades que una entidad puede realizar. Un desarrollador de aplicaciones concede acceso a roles en lugar de a entidades individuales. A continuación, un administrador puede asignar roles a distintas entidades para controlar cuáles tienen acceso a qué recursos y funcionalidades.

En implementaciones avanzadas de RBAC, los roles se pueden asignar a colecciones de permisos, donde un permiso describe una acción o actividad concreta que se puede realizar. Después, los roles se configuran como combinaciones de permisos. Para procesar el conjunto general de permisos de las entidades para una aplicación, debe formar una intersección con los permisos concedidos a los distintos roles a los que se asigna la entidad. Un buen ejemplo de este enfoque es la implementación de RBAC que gobierna el acceso a los recursos de las suscripciones de Azure.

Nota

El RBAC de aplicación difiere del RBAC de Azure y del RBAC de Azure AD. Los roles personalizados de Azure y los roles integrados forman parte de RBAC de Azure, lo cual le ayuda a administrar los recursos de Azure. El RBAC de Azure AD permite administrar recursos de Azure AD.

Control de acceso basado en atributos

El control de acceso basado en atributos (ABAC) es un mecanismo de control de acceso más específico. En este enfoque, las reglas se aplican a los atributos de la entidad, a los recursos a los que se accede y al entorno actual para determinar si se permite el acceso a algunos recursos o funcionalidades. Un ejemplo podría ser permitir que solo los usuarios que sean administradores accedan a los archivos identificados con una etiqueta de metadatos de "administradores solo durante el horario laboral" de 9 a.m. a 5 p.m. en días laborables. En este caso, el acceso viene determinado por el examen del atributo del usuario (estado como administrador), el atributo del recurso (etiqueta de metadatos en un archivo) y también un atributo de entorno (la hora actual).

Una ventaja de ABAC es que se puede lograr un control de acceso más específico y dinámico mediante evaluaciones de reglas y condiciones sin necesidad de crear un gran número de roles muy específicos y asignaciones de RBAC.

Un método para obtener el control de acceso basado en atributos con Azure Active Directory es usar grupos dinámicos. Los grupos dinámicos permiten a los administradores asignar dinámicamente usuarios a grupos en función de atributos de usuario específicos con los valores deseados. Por ejemplo, se podría crear un grupo Autores en el que todos los usuarios con el puesto Autor se asignen dinámicamente al grupo Autores. Los grupos dinámicos se pueden usar en combinación con RBAC para la autorización allí donde se asignan roles a grupos y se asignan dinámicamente usuarios a grupos.

Azure ABAC es un ejemplo de una solución de ABAC que está disponible actualmente. Azure ABAC se basa en Azure RBAC con la adición de condiciones de asignación de roles basadas en atributos en el contexto de acciones específicas.

Implementación de la autorización

La lógica de autorización a menudo se implementa dentro de las aplicaciones o soluciones donde se requiere control de acceso. En muchos casos, las plataformas de desarrollo de aplicaciones ofrecen middleware u otras soluciones de API que simplifican la implementación de la autorización. Entre los ejemplos se incluye el uso de AuthorizeAttribute en ASP.NET o de Route Guards en Angular.

Para los enfoques de autorización que se basan en información sobre la entidad autenticada, una aplicación evaluará la información intercambiada durante la autenticación. Por ejemplo, mediante la información proporcionada dentro de un token de seguridad. Para la información no contenida en un token de seguridad, una aplicación podría realizar llamadas adicionales a recursos externos.

No es estrictamente necesario que los desarrolladores inserten la lógica de autorización completamente dentro de sus aplicaciones. En su lugar, se pueden usar servicios de autorización dedicados para centralizar la implementación y administración de autorizaciones.

Pasos siguientes