Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una firma de acceso compartido (SAS) proporciona una manera de conceder acceso limitado a los recursos del espacio de nombres de Event Hubs. SAS 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 de 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. Use el nombre y la clave de la regla a través de los clientes de Event Hubs o en su propio código para generar tokens de SAS. A continuación, el cliente puede pasar el token a Event Hubs para demostrar la autorización para la operación solicitada.
SAS es un mecanismo de autorización basado en reclamaciones que usa tokens simples. Cuando se usa SAS, nunca se pasan claves a través de la red. En su lugar, se usan claves para firmar criptográficamente la información que el servicio puede comprobar más adelante. Puede usar SAS similar a un esquema de nombre de usuario y contraseña en el que el cliente está en posesión inmediata de un nombre de regla de autorización y una clave coincidente. También puede usar SAS similar a un modelo de seguridad federado, donde el cliente recibe un token de acceso con tiempo limitado y firmado de un servicio de token de seguridad sin tener que entrar en posesión de la clave de firma.
Nota:
Azure Event Hubs también admite la autorización a los recursos de Event Hubs mediante Microsoft Entra ID. La autorización de usuarios o aplicaciones mediante el token de OAuth 2.0 devuelto por Microsoft Entra ID proporciona una seguridad superior y facilidad de uso en las firmas de acceso compartido (SAS). Al usar Microsoft Entra ID, no es necesario almacenar los tokens en el código y poner en riesgo 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 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 los compartas públicamente. Al compartir, si es necesario por motivos de solución de problemas, considere la posibilidad de usar una versión reducida de los archivos de registro o eliminar los tokens de SAS (si están presentes) de los archivos de registro. Asegúrese de que las capturas de pantalla tampoco contienen la 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, decides sobre tres informaciones: 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. El límite subraya que el almacén de directivas de SAS no está diseñado para ser un almacén de cuentas de usuarios o servicios. 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 están disponibles en el portal de Azure. 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. Trate esta regla como una cuenta raíz administrativa y no la use en la aplicación. Puede crear más reglas de directiva en la pestaña Configure del espacio de nombres en el portal, a través de PowerShell o CLI de Azure.
Procedimientos recomendados al usar SAS
Al usar firmas de acceso compartido en las aplicaciones, tenga en cuenta dos posibles riesgos:
- Si una SAS se filtra, cualquier persona que la obtenga puede usarla, lo que podría comprometer tus recursos de Event Hubs.
- Si una SAS proporcionada a una aplicación cliente expira y la aplicación no puede recuperar una nueva SAS del servicio, es posible que la funcionalidad de la aplicación se vea afectada.
Las siguientes recomendaciones para el uso de firmas de acceso compartido pueden ayudar a mitigar estos riesgos:
- Hacer que los clientes renueven automáticamente la SAS si es necesario: los clientes deben renovar la SAS antes de la expiración para permitir el tiempo de reintentos si el servicio que proporciona la SAS no está disponible. Si la SAS está pensada para un pequeño número de operaciones inmediatas y de corta duración que se espera que se completen dentro del período de expiración, la renovación podría ser innecesaria. Sin embargo, si tiene un cliente que realiza periódicamente solicitudes a través de SAS, entonces entra en juego la posibilidad de expiración. La consideración clave es equilibrar la necesidad de que la SAS sea de corta duración (como se indicó anteriormente) con la necesidad de garantizar que el cliente solicite la renovación lo suficientemente pronto (para evitar interrupciones debido a la expiración de SAS antes de una renovación correcta).
- Tenga cuidado con la hora de inicio de SAS: si establece la hora de inicio de SAS en ahora, debido a la asimetría del reloj (diferencias en la hora actual según diferentes máquinas), los errores pueden producirse de forma intermitente durante los primeros minutos. En general, fije la hora de inicio en al menos 15 minutos en el pasado. O bien, no lo establezcas en absoluto, lo que hace que sea válido 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.
- Ser específico con el recurso al que se va a acceder: un procedimiento recomendado de seguridad consiste en proporcionar a los usuarios los privilegios mínimos necesarios. Si un usuario solo necesita acceso de lectura a una sola entidad, concédale solo ese acceso, sin incluir permisos de lectura, escritura o eliminación para todas las entidades. Este enfoque también ayuda a reducir el daño si una SAS está en peligro porque la SAS tiene menos poder en manos de un atacante.
- No siempre use SAS: a veces los riesgos asociados a una operación determinada con Event Hubs superan las ventajas de 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.
- Usar siempre HTTPS: Use siempre HTTPS para crear o distribuir una firma de acceso compartido (SAS). 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 a los recursos de Event Hubs a los clientes. Son una parte fundamental del modelo de seguridad para 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: