Autorización del acceso a recursos de Event Hubs mediante firmas de acceso compartido
Una firma de acceso compartido (SAS) le proporciona una manera de conceder acceso limitado a los recursos en el espacio de nombres de Event Hubs. La firma de acceso compartido protege el acceso a los recursos de Event Hubs en función de las reglas de autorización. Estas reglas se configuran en un espacio de nombres o en un centro de eventos. En este artículo se proporciona información general sobre el modelo SAS y se revisan los procedimientos recomendados de SAS.
Nota:
En este artículo se explica cómo autorizar el acceso a los recursos de Event Hubs mediante SAS. Para más información sobre la autenticación del acceso a los recursos de Event Hubs mediante SAS, consulte Autenticación con SAS.
¿Qué son las firmas de acceso compartido?
Una firma de acceso compartido (SAS) proporciona acceso delegado a los recursos de Event Hubs en función de las reglas de autorización. Una regla de autorización tiene un nombre, se asocia con unos derechos específicos e incluye un par de claves criptográficas. Para generar tokens de SAS, debe usar el nombre y la clave de la regla a través de los clientes de Event Hubs o en su propio código. A continuación, el cliente puede pasar el token a Event Hubs para demostrar la autorización para la operación solicitada.
La firma de acceso compartido es un mecanismo de autorización basado en notificaciones que utiliza tokens simples. Al usar SAS, las claves nunca se pasan en la conexión. Las claves se utilizan para firmar criptográficamente información que más adelante pueda verificar el servicio. El uso de SAS es similar a un esquema de nombre de usuario y contraseña donde el cliente está en posesión inmediata de un nombre de regla de autorización y una clave coincidente. SAS puede utilizarse de manera similar a un modelo de seguridad federado, donde el cliente recibe un token de acceso firmado y de tiempo limitado de un servicio de token de seguridad sin poseer en ningún momento la clave de firma.
Nota:
Azure Event Hubs también admite la autorización a los recursos de Centros de eventos mediante Microsoft Entra ID. La autorización de usuarios o aplicaciones mediante token OAuth 2.0 devuelto por Microsoft Entra ID proporciona una seguridad y facilidad de uso superiores a las firmas de acceso compartido (SAS). Con Microsoft Entra ID, no hay necesidad de almacenar los tokens en su código y arriesgarse a posibles vulnerabilidades de seguridad.
Microsoft recomienda utilizar Microsoft Entra ID con sus aplicaciones Azure Event Hubs siempre que sea posible. Para obtener más información, consulte Autorizar el acceso al recurso Azure Event Hubs mediante Microsoft Entra ID.
Importante
Los tokens de SAS (firmas de acceso compartido) son fundamentales para proteger los recursos. A la vez que proporciona granularidad, SAS concede a los clientes acceso a los recursos de Event Hubs. No se deben compartir públicamente. Si resulta necesario compartirla para solucionar problemas, considere la posibilidad de usar una versión reducida de los archivos de registro o eliminar los tokens de SAS (si existen) de dichos archivos, y asegúrese de que las capturas de pantalla tampoco incluyan información de SAS.
Directivas de autorización de acceso compartido
Cada espacio de nombres y entidad de Event Hubs (un centro de eventos o un tema de Kafka) tiene una directiva de autorización de acceso compartido que se compone de reglas. La directiva a nivel de espacio de nombres se aplica a todas las entidades del espacio de nombres, independientemente de su configuración de directiva individual.
Para cada regla de directiva de autorización, decida tres tipos de información: nombre, ámbito y derechos. El nombre es un nombre único en ese ámbito. El ámbito es el URI del recurso en cuestión. Para un espacio de nombres de Event Hubs, el ámbito es el nombre de dominio completo (FQDN), como https://<yournamespace>.servicebus.windows.net/
.
Los derechos proporcionados por la regla de directiva pueden ser una combinación de:
- Enviar: otorga el derecho a enviar mensajes a la entidad.
- Escucha: otorga el derecho a escuchar o recibir mensajes de la entidad.
- Administración: otorga el derecho a administrar la topología del espacio de nombres, incluidas la creación y la eliminación de entidades. El derecho Administrar incluye los derechos Enviar y Escuchar.
Una directiva de espacio de nombres o entidad puede contener hasta 12 reglas de autorización de acceso compartido, lo que proporciona espacio para tres conjuntos de reglas, y cada una de ellas cubre los derechos básicos y la combinación de Enviar y Escuchar. Este límite subraya que el almacén de directivas de SAS no pretende ser un almacén de la cuenta de usuario o servicio. Si la aplicación necesita conceder acceso a Event Hubs en función de las identidades de usuario o servicio, debe implementar un servicio de token de seguridad que emita tokens de SAS después de una comprobación de acceso y autenticación.
A la regla de autorización se le asigna una clave principal y una clave secundaria. Estas claves son claves de alta seguridad criptográfica. No las pierda ni las filtre. Siempre estarán disponibles en Azure Portal. Puede usar cualquiera de las claves generadas y regenerarlas en cualquier momento. Si vuelve a generar o cambia una clave en la directiva, todos los tokens emitidos previamente en base a esa clave dejan de ser válidos inmediatamente. Sin embargo, las conexiones en curso creadas con esos tokens seguirán funcionando hasta que el token expire.
Cuando se crea un espacio de nombres de Event Hubs, se crea automáticamente una regla de directiva denominada RootManageSharedAccessKey para el espacio de nombres. Esta directiva tiene permisos de administración para todo el espacio de nombres. Se recomienda tratar esta regla como una cuenta raíz administrativa, así que no la use en la aplicación. Puede crear más reglas de directivas en la pestaña Configurar para el espacio de nombres en el portal, a través de PowerShell o la CLI de Azure.
Procedimientos recomendados al usar SAS
Cuando use firmas de acceso compartido en sus aplicaciones, debe tener en cuenta dos posibles riesgos:
- Si se filtró una SAS, cualquier persona que la consiga puede usarla, lo que puede poner en riesgo sus recursos de Event Hubs.
- Si una SAS proporcionada para una aplicación cliente expira y la aplicación no puede recuperar una nueva SAS del servicio y, luego, la funcionalidad de la aplicación puede verse afectada.
Las siguientes recomendaciones para el uso de firmas de acceso compartido pueden ayudar a mitigar estos riesgos:
- Haga que los clientes renueven automáticamente la SAS si fuese necesario: los clientes deben renovar la SAS correctamente antes de la expiración para que exista tiempo para los reintentos si el servicio que ofrece la SAS no está disponible. Si la firma de acceso compartido se ha creado para usarse en un número reducido de operaciones de corta duración e inmediatas, que se espera que se completen en un plazo de expiración determinado, es posible que ese procedimiento no sea necesario, ya que no se espera la renovación de la firma de acceso compartido. Sin embargo, si dispone de un cliente que realice solicitudes de forma rutinaria a través de la SAS, existe la posibilidad de la expiración. La consideración clave es equilibrar la necesidad de que la SAS sea de corta duración (como se ha indicado antes) con el requisito de garantizar que el cliente solicitan la renovación con antelación suficiente (para evitar la interrupción debida a la expiración de SAS antes de una renovación correcta).
- Tenga cuidado con la hora de inicio de la SAS: si establece la hora de inicio de la SAS en ahora, se pueden producir errores intermitentes durante los primeros minutos debido al desplazamiento del reloj (diferencias en la hora actual según las distintas máquinas). En general, establezca la hora de inicio sea al menos 15 minutos en el pasado. O bien, no establezca esta opción en absoluto, lo que hace que sea válida inmediatamente en todos los casos. Lo mismo suele aplicarse también a la hora de expiración. Recuerde que puede observar hasta 15 minutos de sesgo de reloj en cualquier dirección de cualquier solicitud.
- Sea específico con el recurso al que se va a tener acceso: un procedimiento recomendado de seguridad es proporcionar al usuario los privilegios mínimos necesarios. Si un usuario solo necesita acceso de lectura en una única entidad, concédale acceso de lectura a esa única entidad y no acceso de lectura, escritura o eliminación a todas las entidades. También ayuda a reducir los daños si se pone en peligro una SAS porque la SAS tiene menos poder en manos de un atacante.
- No use siempre la SAS: en algunas ocasiones, los riesgos asociados a una operación determinada en Event Hubs superan a las ventajas del uso de la SAS. Para esas operaciones, cree un servicio de nivel intermedio que escriba en la instancia de Event Hubs después de llevar a cabo una auditoría, autenticación o validación de la regla de negocio.
- Siempre use HTTPS: use siempre HTTPS para crear una SAS o distribuirla. Si se pasa una SAS a través de HTTP y se intercepta, un atacante que realice un ataque de tipo "Man in the middle" puede leer la SAS y, luego, usarla como lo podría hacer el usuario previsto. Esto puede poner en riesgo la información confidencial o permitir que un usuario malintencionado provoque daños en los datos.
Conclusión
Las firmas de acceso compartido son útiles para proporcionar permisos limitados para los recursos de Event Hubs a los clientes. Son parte fundamental del modelo de seguridad de cualquier aplicación que use Azure Event Hubs. Si sigue los procedimientos recomendados que se describen en este artículo, puede usar SAS para ofrecer una mayor flexibilidad de acceso a los recursos sin que se ponga en riesgo la seguridad de la aplicación.
Contenido relacionado
Consulte los artículos relacionados siguientes: