Protección de Azure Functions con Event Hubs
Al configurar el acceso a los recursos de Azure, debe aplicar un control específico sobre los permisos a los recursos. El acceso a estos recursos debe basarse en los principios de seguridad de necesidad de conocer y privilegios mínimos para garantizar que los clientes solo pueden realizar el conjunto limitado de acciones que tienen asignadas.
Autorización del acceso a Event Hubs
La autorización del acceso a los recursos de Azure Event Hubs se puede realizar mediante las siguientes construcciones de seguridad:
Microsoft Entra ID: Microsoft Entra ID proporciona control de acceso basado en roles (RBAC) para un control pormenorizado sobre el acceso de un cliente a los recursos de Event Hubs. En función de los roles y los permisos concedidos, Microsoft Entra ID autorizará las solicitudes mediante un token de acceso de OAuth 2.0.
Firma de acceso compartido: una firma de acceso compartido (SAS) ofrece la capacidad de proteger los recursos de Event Hubs en función de reglas de autorización. Las directivas de autorización se definen seleccionando una o varias reglas de directiva, como la capacidad de enviar mensajes, escuchar mensajes y administrar las entidades en el espacio de nombres.
Consideraciones sobre la firma de acceso compartido
Al usar una firma de acceso compartido con Event Hubs y Azure Functions, se deben revisar las siguientes consideraciones:
Evite el derecho Administrar: además de poder administrar las entidades de un espacio de nombres de Event Hubs, el derecho Administrar incluye los derechos Enviar y Escuchar. Lo ideal es que a una aplicación de funciones solo se le conceda una combinación de los derechos Enviar y Escuchar, en función de las acciones que realicen.
No use la regla Administrar predeterminada: evite usar la regla de directiva predeterminada denominada RootManageSharedAccessKey a menos que la aplicación de funciones la necesite, lo que es un escenario poco frecuente. Otra advertencia a esta regla predeterminada es que se crea en el nivel del espacio de nombres y concede permisos a todos los centros de eventos subyacentes.
Revise los ámbitos de la directiva de acceso compartido: las directivas de acceso compartido se pueden crear en el nivel del espacio de nombres y por centro de eventos. Considere la posibilidad de crear directivas de acceso granular que se adapten a cada cliente para limitar su alcance y permisos.
Identidad administrada
Una identidad de Active Directory se puede asignar a un recurso administrado de Azure, como una aplicación de funciones o una aplicación web. Una vez que una identidad se ha asignado, tiene las capacidades para trabajar con otros recursos que usan Microsoft Entra ID para la autorización, de forma muy parecida a una entidad de servicio.
Las aplicaciones de funciones pueden tener asignada una identidad administrada y aprovechar las conexiones basadas en identidades para un subconjunto de servicios, incluido Event Hubs. Las conexiones basadas en identidades proporcionan compatibilidad con las extensiones de desencadenador y enlace de salida, y deben usar la extensión Event Hubs 5.x y posteriores para la compatibilidad.
Red
De forma predeterminada, los espacios de nombres de Event Hubs son accesibles desde Internet, siempre que la solicitud venga con una autenticación y una autorización válidas. Hay tres opciones para limitar el acceso de red a los espacios de nombres de Event Hubs:
- Permitir el acceso desde determinadas direcciones IP
- Permitir el acceso desde determinadas redes virtuales (puntos de conexión de servicio)
- Permitir el acceso a través de puntos de conexión privados
En todos los casos, es importante tener en cuenta que se especifica al menos una regla de firewall de IP o una regla de red virtual para el espacio de nombres. De lo contrario, si no se especifica ninguna dirección IP o regla de red virtual, se puede acceder al espacio de nombres a través de la red pública de Internet (mediante la clave de acceso).
Azure Functions se puede configurar para consumir eventos de centros de eventos o publicar eventos allí, que se configuran con puntos de conexión de servicio o puntos de conexión privados. La integración de redes virtuales regionales es necesaria para que la aplicación de funciones se conecte a un centro de eventos mediante un punto de conexión de servicio o un punto de conexión privado.
Al integrar Functions con una red virtual y habilitar vnetRouteAllEnabled
, todo el tráfico saliente de la aplicación de función se fuerza a través de la red virtual. Esto es particularmente importante para aquellos escenarios en los que desee proteger su aplicación de función garantizando que todo el tráfico, incluido el tráfico a los servicios de Azure, pase por su red virtual para su inspección y control. Si desea bloquear completamente la aplicación de funciones, también debe restringir la cuenta de almacenamiento.
Para desencadenar (consumir) eventos en un entorno de red virtual, la aplicación de funciones debe hospedarse en un plan de Premium, un plan Dedicado (App Service) o una instancia de App Service Environment (ASE).
Además, la ejecución en un plan de Azure Functions Premium y el consumo de eventos desde una instancia de Event Hubs restringida de red virtual requiere compatibilidad con desencadenadores de red virtual, también denominada supervisión de escalado de entorno de ejecución. La supervisión de escalado de entorno de ejecución se puede configurar a través de Azure Portal, la CLI de Azure u otras soluciones de implementación. La supervisión de escalado de entorno de ejecución no está disponible cuando la función se ejecuta en un plan Dedicado (App Service) o en una instancia de ASE.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.
Autor principal:
- David Barkol | Especialista en soluciones principales GBB
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.
Pasos siguientes
Antes de continuar, considere la posibilidad de revisar estos artículos relacionados: