Protección de la configuración y las dependencias de una aplicación
La información de configuración de la aplicación se puede almacenar con la aplicación. Sin embargo, este no es el procedimiento recomendado. Considere la posibilidad de usar un sistema de administración de la configuración dedicado, como Azure App Configuration o Azure Key Vault. De este modo, se puede actualizar independientemente del código de la aplicación.
Las aplicaciones pueden incluir secretos, como cadenas de conexión de base de datos, claves de certificado, etc. No almacene secretos en archivos de código fuente o de configuración. En su lugar, guárdelos en un almacén seguro como Azure Key Vault. Identifique los secretos del código mediante herramientas de análisis de código estático. Agregue el proceso de análisis en la canalización de integración continua (CI).
Para obtener más información sobre la administración de secretos, consulte Administración de claves y secretos.
¿Se administran correctamente los errores y las excepciones sin exponer esa información a los usuarios?
Al administrar las excepciones de la aplicación, haga que la aplicación produzca un error y regístrelo. No proporcione información detallada relacionada con el error, como la pila de llamadas, las consultas SQL o los errores fuera de intervalo. Esta información puede proporcionar a los atacantes información valiosa sobre el funcionamiento interno de la aplicación.
El código y la configuración de la aplicación no deben compartir el mismo ciclo de vida para habilitar actividades operativas. En estas actividades, se incluyen las que cambian y actualizan configuraciones específicas sin intervención ni reimplementación del desarrollador.
¿Se ha eliminado la información específica de la plataforma de la comunicación entre el cliente y el servidor?
No revele información sobre la plataforma de la aplicación. Esta información (por ejemplo, X-Powered-By o X-ASPNET-VERSION) puede quedar expuesta mediante banners HTTP, encabezados HTTP, mensajes de error y pies de página de sitios web. Los actores malintencionados pueden utilizar esta información al asignar los vectores de ataque de la aplicación.
Acciones sugeridas
Considere la posibilidad de utilizar Azure Front Door o API Management para quitar encabezados HTTP específicos de la plataforma. En su lugar, utilice Azure CDN para separar la plataforma de hospedaje de los usuarios finales. Azure API Management ofrece directivas de transformación que permiten modificar encabezados HTTP y eliminar la información confidencial.
Más información
¿Se usan las directivas de Azure para controlar la configuración de los recursos de la solución?
Use Azure Policy para implementar la configuración cuando proceda. Bloquee los recursos que no cumplan los requisitos de seguridad adecuados definidos durante la habilitación del servicio.
Dependencias, marcos y bibliotecas
¿Qué marcos y bibliotecas usa la aplicación?
El proveedor o las comunidades actualizan y publican marcos de trabajo de la aplicación con frecuencia. Es fundamental supervisar los marcos y bibliotecas que usa la aplicación, incluidas las vulnerabilidades resultantes que presenten. En estos marcos y bibliotecas se incluyen los personalizados, de OSS, de terceros y otros. Comprenda y administre las tecnologías que usa la aplicación, como las siguientes:
- .NET Core
- Spring
- Node.js
Las soluciones automatizadas pueden ayudar con esta evaluación.
Puede usar los siguientes procedimientos recomendados:
Valide la seguridad de cualquier código abierto que se agregue a la aplicación. Entre las herramientas gratuitas para ayudar con esta evaluación se incluyen:
- OWASP Dependency-Check
- NPM audit
- WhiteSource Bolt
Estas herramientas buscan los componentes obsoletos y los actualizan a las versiones más recientes.
Mantenga una lista de marcos y bibliotecas como parte del inventario de la aplicación. Además, realice un seguimiento de las versiones en uso. Si se publican las vulnerabilidades, saberlo ayudará a identificar las cargas de trabajo afectadas.
Actualice los marcos y las bibliotecas como parte del ciclo de vida de la aplicación. Dé prioridad a las actualizaciones de seguridad críticas.
Es muy importante realizar el seguimiento de las fechas de expiración de los certificados SSL/TLS y renovarlos a su debido tiempo. Lo ideal es automatizar el proceso, aunque a menudo depende del uso de la CA utilizada para el certificado. Si no está automatizado, deben aplicarse alertas suficientes para garantizar que las fechas de expiración no pasen desapercibidas.
Más información
Servicios de Azure a los que se hace referencia
Pasos siguientes
- Aplicaciones y servicios
- Clasificación de la aplicación
- Análisis de amenazas para las aplicaciones
- Cumplimiento normativo
Recursos de la comunidad
La seguridad de una aplicación que se hospeda en Azure es responsabilidad compartida entre el usuario, como propietario de la aplicación, y Azure. En el caso de IaaS, el usuario es responsable de las configuraciones relacionadas con la VM, el sistema operativo y los componentes instalados en él. En el caso de PaaS, el usuario es responsable de la seguridad de las configuraciones del servicio de aplicación y de asegurarse de que las dependencias utilizadas por la aplicación también sean seguras.
Puntos clave
- No almacene secretos en archivos de código fuente o de configuración. En su lugar, guárdelos en un almacén seguro como Azure App Configuration o Azure Key Vault.
- No exponga información de error detallada al administrar las excepciones de la aplicación.
- No exponga información específica de la plataforma.
- Almacene la configuración de la aplicación fuera del código de la aplicación para actualizarla por separado y tener un control de acceso más estricto.
- Restrinja el acceso a los recursos de Azure que no cumplan los requisitos de seguridad.
- Valide la seguridad de cualquier código abierto que se agregue a la aplicación.
- Actualice los marcos y las bibliotecas como parte del ciclo de vida de la aplicación.
Seguridad de la configuración
Durante la fase de diseño, tenga en cuenta la forma de almacenar los secretos y administrar las excepciones. A continuación se incluyen algunos aspectos.
¿Cómo se almacena la configuración de la aplicación y cómo accede a esta la aplicación?