• authz
  • authn
  • concept

¿Qué es AuthZ (Autorización)?

Explora la definición de AuthZ, AuthN vs AuthZ, cómo funciona AuthZ y las mejores prácticas de autorización.

Guamian
Guamian
Product & Design

¿Qué es AuthZ y en qué se diferencia de AuthN?

AuthZ es la abreviatura de autorización. La autorización es un mecanismo separado de la autenticación. Mientras que la autenticación identifica quién eres, la autorización determina si puedes acceder a recursos específicos y qué acciones puedes realizar sobre ellos.

En ejemplos del mundo real, los recursos pueden incluir software, sistemas, documentos, pedidos y activos. La autorización agrega una capa extra de control, especificando quién puede acceder a estos recursos y bajo qué condiciones.

¿Cómo funciona AuthZ?

La autorización es separada de la autenticación, pero a menudo se conecta con ella. Por ejemplo, protocolos estándar como OAuth 2.0, OIDC y SAML incorporan mecanismos de autorización basados en tokens.

En un sistema de autorización basado en tokens, un servidor de autorización otorga un token de acceso a los usuarios. Este token, que incluye permisos, determina si el usuario puede acceder a ciertos recursos.

Asignar permisos directamente a los usuarios puede ser ineficiente, especialmente cuando se requieren condiciones más detalladas. Por ejemplo, el acceso podría depender de circunstancias específicas, como la ubicación del usuario, lo que hace que las políticas de control de acceso sean necesarias para una mejor gestión de permisos.

Aquí tienes un flujo de alto nivel paso a paso de cómo funciona la autorización:

  1. Iniciar autenticación: El usuario inicia sesión seleccionando un identificador y un método, como usar un correo electrónico y una contraseña.
  2. Solicitud de autorización: Después de iniciar sesión, el usuario solicita acceso a un recurso, incluyendo detalles como su ID de usuario y roles.
  3. Validación de control de acceso: El sistema verifica la solicitud contra políticas de autorización predefinidas, como reglas basadas en roles o atributos.
  4. Decisión de autorización: El sistema determina si otorga o niega el acceso basado en las políticas y permisos.

Para entender el flujo de solicitudes de autorización de OAuth 2.0 en detalle, consulta la solicitud de autorización

¿Cuáles son los tipos de autorización?

Control de acceso basado en roles y cómo funciona

Control de Acceso Basado en Roles (RBAC) utiliza roles para gestionar el acceso. A cada usuario se le asigna uno o más roles predefinidos, y cada rol incluye un conjunto de permisos. La clave de RBAC es entender la relación entre sujetos (o usuarios), roles y permisos.

Para entender cómo funciona el Control de Acceso Basado en Roles (RBAC), necesitas conocer sobre:

  1. Sujetos: Estos pueden ser usuarios o entidades no humanas, como usuario o aplicación máquina a máquina.
  2. Roles: Representan funciones laborales o responsabilidades. por ejemplo, admin miembro
  3. Permisos: Especifican qué acciones están permitidas en recursos específicos, por ejemplo, leer: pedido.

RBAC-diagram.png

Control de acceso basado en atributos y cómo funciona

Control de Acceso Basado en Atributos (ABAC) se utiliza ampliamente en la autorización y apoya escenarios más complejos usando atributos específicos de una entidad, más allá de solo roles.

Por ejemplo, una empresa gestiona una plataforma global de intercambio de documentos donde los empleados necesitan acceso controlado a archivos sensibles según su rol laboral, ubicación y nivel de clasificación del documento.

Los atributos pueden diseñarse de las siguientes maneras:

  1. Atributos de usuario: Rol (por ejemplo, “Gerente”, “Ingeniero”), ubicación (por ejemplo, “EE. UU.”, “Europa”).
  2. Atributos de recursos: Tipo de documento (por ejemplo, “Informe Financiero”, “Archivo de Diseño”), nivel de clasificación (por ejemplo, “Confidencial”).
  3. Atributos de entorno: Hora de acceso (por ejemplo, “Durante Horas Laborales”), tipo de dispositivo (por ejemplo, “Portátil de Empresa”).

También existen otros modelos de control de acceso, como control de acceso basado en políticas (PBAC) . Cada modelo tiene sus fortalezas y debilidades, y la elección del modelo depende de tu caso de uso y requisitos.

Casos de uso y ejemplos de AuthZ

Software B2C

El software B2C a menudo requiere roles específicos según las necesidades del negocio. Por ejemplo, una aplicación de gestión de librería podría incluir roles con diferentes responsabilidades, como gestionar recursos y servicios.

Aplicación multi-inquilino B2B

Las aplicaciones B2B a menudo utilizan una arquitectura multi-inquilino, donde cada inquilino representa una organización. Dentro de la organización, se necesitan roles como admin y miembro. Aquí es donde la Autorización (AuthZ) juega un papel clave en la gestión de usuarios a nivel organizacional, a menudo usando Control de Acceso Basado en Roles (RBAC).

Autorización máquina a máquina

La comunicación máquina a máquina ocurre directamente entre servicios sin interacción humana. Por ejemplo, al llamar a servicios de API. A menudo involucra tokens (por ejemplo, tokens de acceso OAuth 2.0) para garantizar un acceso seguro, dinámico y granular.

¿Cuáles son las mejores prácticas para AuthZ?

Aquí tienes algunas mejores prácticas para la autorización (AuthZ) para garantizar un control de acceso seguro y efectivo:

  • Principio del menor privilegio

    Esto asegura que el riesgo de acceso no autorizado o daños por cuentas comprometidas se minimice. Los usuarios y sistemas solo deben acceder a los recursos y acciones necesarios para su rol.

  • Emplear autorización basada en tokens

    El control de acceso basado en tokens ofrece más flexibilidad y control detallado mientras se adhieren a estándares abiertos. Utiliza tokens seguros (por ejemplo, OAuth 2.0, JWTs) para otorgar acceso sensible al tiempo y al alcance.

  • Auditar y monitorear regularmente

    Revisar regularmente los registros de acceso y políticas de autorización es necesario para detectar anomalías o permisos desactualizados.

  • Aplicar separación de funciones

    Comienza implementando permisos granulares, como definir acciones específicas y recursos (por ejemplo, leer, escribir, eliminar). Al crear roles, utiliza nombres de roles claros y aplica la separación de funciones para minimizar el riesgo de fraude o errores por un solo usuario.

  • Soportar multi-inquilinato (si aplica)

    Para sistemas multi-inquilinos, la aislamiento de inquilinos es importante. Al combinarlo con el control de acceso basado en roles, puedes lograr la separación de recursos de datos, asegurando que los roles apropiados puedan acceder a recursos solo dentro de su inquilino. Esto previene el acceso accidental o malicioso a los recursos de otros inquilinos.

  • Revocar acceso dinámicamente

    Al diseñar tu sistema AuthZ, asegúrate de que los permisos puedan actualizarse o revocarse inmediatamente si cambian las condiciones (por ejemplo, actualizaciones de roles, o finalización del empleo). Esto puede lograrse a través de comprobaciones dinámicas de API, webhooks, u otros métodos. El objetivo es prevenir el acceso no autorizado en tiempo real.

¿Cuál es la diferencia entre AuthZ(Autorización) vs AuthN(Autenticación)?

La diferencia entre autenticación y autorización radica en su propósito y proceso dentro de la gestión de identidades y accesos.

AuthN (Autenticación) responde a la pregunta: “¿Quién eres y qué identidad posees?” Es el proceso de verificar la identidad de un usuario, servicio o dispositivo. La autenticación asegura que la entidad que intenta acceder a un sistema o recurso sea genuina. Los métodos comunes incluyen contraseñas, biometría y autenticación de dos factores (2FA). Por ejemplo, cuando inicias sesión en una cuenta usando tu correo electrónico y contraseña, el sistema confirma tu identidad a través de la autenticación.

AuthZ (Autorización) responde a la pregunta: “¿Qué estás permitido a hacer?” Es el proceso de otorgar o denegar acceso a recursos según los permisos o roles del usuario. La autorización ocurre después de la autenticación y determina qué acciones puede realizar el usuario autenticado. Por ejemplo, después de iniciar sesión, un usuario admin puede tener acceso para modificar configuraciones, mientras que un usuario regular solo puede verlas.

En resumen, AuthN (autenticación) confirma la identidad, mientras que AuthZ (autorización) define el acceso. La autenticación ocurre primero, seguida de la autorización para garantizar el uso seguro y apropiado de los recursos.

Construye AuthZ (Autorización) con Logto

Logto Cloud ofrece servicios clave de autorización basados en protocolos de estándares abiertos como OIDC, OAuth 2.0 y SAML. Las características incluyen Control de Acceso Basado en Roles, Organizaciones (Multi-Inquilinato) y Reclamaciones Personalizadas de Token para satisfacer tus necesidades de autorización desde diversas perspectivas.