Seguridad de Functions sin servidor

En este artículo se describen los servicios y las actividades que el personal de seguridad de Azure puede implementar para Functions sin servidor. Estas instrucciones y recursos ayudan a desarrollar código seguro e implementar aplicaciones seguras en la nube.

Planificación

Los principales objetivos de un entorno seguro de aplicaciones Azure Functions sin servidor son proteger las aplicaciones en ejecución, identificar y solucionar problemas de seguridad rápidamente y evitar problemas similares en el futuro.

El artículo OWASP Servelss Top 10 describe las vulnerabilidades de seguridad de la aplicación sin servidor más comunes y proporciona técnicas básicas para identificarlos y protegerlos frente a ellos.

En muchos sentidos, la planeación del desarrollo, la implementación y el funcionamiento seguros de las funciones sin servidor es muy similar a la de cualquier aplicación hospedada en la nube o basada en web. Azure App Service proporciona la infraestructura de hospedaje para las aplicaciones de funciones. En el artículo Protección de Azure Functions se proporcionan estrategias de seguridad para ejecutar el código de función y cómo App Service puede facilitar la protección de las funciones.

Para obtener más información sobre la seguridad de Azure, los procedimientos recomendados y las responsabilidades compartidas, consulte:

Implementación

Para preparar las aplicaciones de Functions sin servidor para producción, el personal de seguridad debe:

  • Realizar revisiones de código regulares para identificar vulnerabilidades de código y de biblioteca
  • Definir los permisos de recursos que Functions necesita ejecutar
  • Configurar reglas de seguridad de red para la comunicación entrante y saliente
  • Identificar y clasificar el acceso a datos confidenciales

El artículo Base de referencia de seguridad de Azure para Azure Functions contiene más recomendaciones que le ayudarán a mejorar la posición de seguridad de la implementación.

Mantener el código seguro

Buscar vulnerabilidades de seguridad y errores en el código y administrar las vulnerabilidades de seguridad en los proyectos y las dependencias

Para más información, consulte:

Realización de la validación de entrada

Existen distintos orígenes de los eventos que pueden desencadenar Functions sin servidor, como Blob Storage, bases de datos NoSQL de Azure Cosmos DB, centros de eventos, colas o eventos de Graph. Las inyecciones no se limitan estrictamente a las entradas que provienen directamente de las llamadas a la API. Las funciones pueden consumir otra entrada de los posibles orígenes de eventos.

En general, no confíe en la entrada ni haga ninguna suposición sobre su validez. Use siempre las API seguras que corrijan o validen la entrada. Si es posible, utilice las API que enlazan o parametrizan variables, como el uso de instrucciones preparadas para consultas SQL.

Para más información, consulte:

Puntos de conexión HTTP seguros para desarrollo, pruebas y producción

Azure Functions permite usar claves para dificultar el acceso a los puntos de conexión de función HTTP. Para proteger totalmente los puntos de conexión de función en producción, considere la posibilidad de implementar una de las opciones de seguridad siguientes de nivel de aplicación de función:

Para más información, consulte Proteger un punto de conexión HTTP en producción.

Configuración del control de acceso basado en rol de Azure (Azure RBAC)

El control de acceso basado en rol de Azure (Azure RBAC) tiene varios roles de Azure integrados que se pueden asignar a usuarios, grupos, entidades de servicio e identidades administradas para controlar el acceso a los recursos de Azure. Si los roles integrados no satisfacen las necesidades específicas de la organización, puede crear sus propios roles personalizados de Azure.

Revise cada aplicación de Functions antes de la implementación para identificar los permisos excesivos. Examine cuidadosamente las funciones para aplicar los permisos de "privilegios mínimos", lo que permite a cada función solo lo que necesita para ejecutarse correctamente.

Puede usar Azure RBAC para asignar permisos a los usuarios, los grupos y las aplicaciones en un ámbito determinado. El ámbito de una asignación de roles puede ser una suscripción, un grupo de recursos o un único recurso. Evite el uso de caracteres comodín siempre que sea posible.

Para más información sobre Azure RBAC, consulte:

Uso de identidades administradas y almacenes de claves

Un desafío común al compilar aplicaciones en la nube consiste en el modo de administrar las credenciales para autenticar los servicios en la nube en el código. Las credenciales nunca deben aparecer en el código de aplicación, las estaciones de trabajo de los desarrolladores ni el control de código fuente. Por el contrario, utilice un almacén de claves para almacenar y recuperar claves y credenciales. Azure Key Vault proporciona una manera de almacenar de forma segura las credenciales, los secretos y otras claves. El código se autentica en Key Vault para recuperar las credenciales.

Para más información, consulte Uso de referencias de Key Vault para App Service y Azure Functions.

Las identidades administradas permiten a las aplicaciones de Functions acceder a recursos como los almacenes de claves y las cuentas de almacenamiento sin necesidad de claves de acceso o cadenas de conexión específicas. Una pista de auditoría completa en los registros muestra qué identidades ejecutan solicitudes a los recursos. Use Azure RBAC e identidades administradas para controlar de forma pormenorizada los recursos a los que pueden acceder las aplicaciones de Azure Functions.

Para más información, consulte:

Uso de tokens de firma de acceso compartido (SAS) para limitar el acceso a los recursos

Una firma de acceso compartido (SAS) ofrece acceso delegado a los recursos en la cuenta de almacenamiento sin poner en peligro la seguridad de los datos. Con una SAS, tiene control granular sobre la forma en que un cliente puede tener acceso a los datos. Puede controlar a qué recursos puede tener acceso el cliente, qué permisos tienen en esos recursos y cuánto tiempo es válida la SAS, entre otros parámetros.

Para obtener más información, consulte Otorgar acceso limitado a recursos de Azure Storage con firmas de acceso compartido (SAS).

Almacenamiento de blobs seguro

Identifique y clasifique los datos confidenciales y minimice el almacenamiento de datos confidenciales a solo lo necesario. Para el almacenamiento de datos confidenciales, agregue la autenticación multifactor y cifrado de datos en tránsito y en reposo. Otorgue acceso limitado a recursos de Azure Storage mediante tokens de SAS.

Para más información, consulte Recomendaciones de seguridad para Blob Storage.

Optimization

Cuando una aplicación esté en producción, el personal de seguridad puede ayudar a optimizar el flujo de trabajo y prepararse para el escalado.

Uso de Microsoft Defender for Cloud y aplicación de recomendaciones de seguridad

Microsoft Defender for Cloud es una solución de examen de seguridad para la aplicación que identifica posibles vulnerabilidades de seguridad y crea recomendaciones. Las recomendaciones le guiarán para configurar los controles necesarios para reforzar y proteger los recursos.

Para más información, consulte:

Aplicación de directivas de gobierno de aplicaciones

Aplique fuerzas y medidas de seguridad centralizadas y coherentes a la aplicación a escala. Para más información, consulte Definiciones de directiva integradas de Azure Policy.

Pasos siguientes