SEC11-BP02 Automatización de las pruebas a lo largo del ciclo de vida de desarrollo y lanzamiento - Marco de AWS Well-Architected

SEC11-BP02 Automatización de las pruebas a lo largo del ciclo de vida de desarrollo y lanzamiento

Automatice las pruebas de las propiedades de seguridad a lo largo del ciclo de vida de desarrollo y lanzamiento. La automatización facilita la identificación coherente y repetible de posibles problemas en el software antes de su lanzamiento, lo que reduce el riesgo de problemas de seguridad en el software suministrado.

Resultado deseado: el objetivo de las pruebas automatizadas es proporcionar una forma programática de detectar posibles problemas de forma temprana y frecuente a lo largo del ciclo de vida del desarrollo. Al automatizar las pruebas de regresión, puede volver a ejecutar pruebas funcionales y no funcionales para verificar que el software probado previamente siga funcionando como se esperaba después de un cambio. Cuando se definen pruebas unitarias de seguridad para detectar errores de configuración habituales, como autenticación dañada o ausente, es posible identificar y solucionar estos problemas en una fase temprana del proceso de desarrollo.

La automatización de pruebas utiliza casos de prueba creados específicamente para la validación de aplicaciones, basados en los requisitos de la aplicación y la funcionalidad deseada. El resultado de las pruebas automatizadas se basa en la comparación de los resultados de las pruebas generados con los resultados esperados, lo que agiliza el ciclo de vida de las pruebas. Las metodologías de pruebas como las pruebas de regresión y los conjuntos de pruebas unitarias son las más adecuadas para la automatización. La automatización de las pruebas de las propiedades de seguridad permite a los creadores recibir información automatizada sin tener que esperar a una revisión de seguridad. Las pruebas automatizadas en forma de análisis de código estático o dinámico permiten aumentar la calidad del código y contribuyen a detectar posibles problemas de software en una fase temprana del ciclo de vida de desarrollo.

Patrones comunes de uso no recomendados:

  • No comunicar los casos de prueba y los resultados de las pruebas automatizadas.

  • Llevar a cabo las pruebas automatizadas solo justo antes del lanzamiento.

  • Automatizar casos de prueba con requisitos que cambian con frecuencia.

  • No proporcionar orientación sobre cómo abordar los resultados de las pruebas de seguridad.

Beneficios de establecer esta práctica recomendada:

  • Se ha reducido la dependencia de las personas que evalúan las propiedades de seguridad de los sistemas.

  • La obtención de resultados coherentes en numerosos flujos de trabajo mejora la coherencia general.

  • Menos probabilidades de que se introduzcan problemas de seguridad en el software de producción.

  • Reducción del intervalo de tiempo entre la detección y la corrección gracias a la detección temprana de los problemas de software.

  • Mayor visibilidad del comportamiento sistémico o repetido en numerosos flujos de trabajo, que puede servir para impulsar mejoras en toda la organización.

Nivel de riesgo expuesto si no se establece esta práctica recomendada: medio

Guía para la implementación

A medida que crea el software, adopte diversos mecanismos de prueba de software para asegurarse de probar tanto los requisitos funcionales, basados en la lógica empresarial, como los requisitos no funcionales, que se centran en la fiabilidad, el rendimiento y la seguridad de su aplicación.

Las pruebas de seguridad de aplicaciones estáticas (SAST) analizan el código fuente para revelar patrones de seguridad anómalos y proporcionan indicios de código propenso a errores. Las pruebas SAST se basan en datos estáticos, como la documentación (especificación de requisitos, documentación de diseño y especificaciones de diseño) y el código fuente de la aplicación, con objeto de encontrar una serie de problemas de seguridad conocidos. Los analizadores de código estático pueden ayudar a agilizar el análisis de grandes volúmenes de código. El NIST Quality Group ofrece una comparación de analizadores de seguridad del código fuente, que incluye herramientas de código abierto para analizadores de código de bytes y analizadores de código binario.

Complemente las pruebas estáticas con metodologías de pruebas de seguridad de análisis dinámico (DAST), que efectúan pruebas de la aplicación en ejecución a fin de identificar comportamiento potencialmente inesperado. Las pruebas dinámicas pueden utilizarse para detectar problemas potenciales que no son evidentes mediante el análisis estático. Las pruebas en las etapas de repositorio de código, compilación y canalización le permiten comprobar si existen diferentes tipos de problemas potenciales que podrían introducirse en el código. Amazon Q Developer proporciona recomendaciones de código, incluido el análisis de seguridad, en el IDE del creador. Amazon CodeGuru Security puede identificar problemas cruciales, problemas de seguridad y errores difíciles de detectar durante el desarrollo de la aplicación, y proporciona recomendaciones para mejorar la calidad del código. La extracción de la lista de materiales del software (SBOM) también le permite extraer un registro formal que contiene los detalles y las relaciones de los distintos componentes utilizados en la creación del software. Esto le permite informar sobre la gestión de vulnerabilidades e identificar rápidamente las dependencias del software o los componentes y los riesgos de la cadena de suministro.

El taller Security for Developers usa herramientas de desarrollo de AWS, como AWS CodeBuild, AWS CodeCommit y AWS CodePipeline, para la automatización de canalizaciones de lanzamiento que incluye las metodologías de prueba SAST y DAST.

A medida que avance en el SDLC, establezca un proceso iterativo que incorpore revisiones periódicas de las aplicaciones con su equipo de seguridad. Los comentarios recopilados en estas revisiones de seguridad deben abordarse y validarse como parte de la revisión de la preparación para el lanzamiento. Estas revisiones establecen una sólida postura de seguridad de la aplicación y proporcionan a los desarrolladores información práctica para afrontar posibles problemas.

Pasos para la implementación

  • Implemente herramientas coherentes de IDE, revisión de código y CI/CD que incluyan pruebas de seguridad.

  • Considere en qué momento del SDLC es apropiado bloquear las canalizaciones en lugar de limitarse a notificar a los creadores que es necesario solucionar los problemas.

  • Automated Security Helper (ASH) es un ejemplo de herramienta de análisis de seguridad de código abierto.

  • La ejecución de pruebas o el análisis de código mediante herramientas automatizadas, como Amazon Q Developer integrado con los IDE de los desarrolladores y el Amazon CodeGuru Security para escanear el código al confirmar, ayuda a los creadores a obtener información en el momento adecuado.

  • Si usa AWS Lambda para la compilación, puede usar Amazon Inspector para analizar el código de la aplicación en sus funciones.

  • Cuando se incluyen pruebas automatizadas en las canalizaciones de CI/CD, es preciso utilizar un sistema de tickets para hacer un seguimiento de la notificación y corrección de problemas de software.

  • En el caso de las pruebas de seguridad que puedan generar resultados, la vinculación a orientaciones para la corrección ayuda a los creadores a mejorar la calidad del código.

  • Analice periódicamente los resultados de las herramientas automatizadas para dar prioridad a la siguiente automatización, la formación de los creadores o la campaña de concienciación.

  • Para extraer la SBOM como parte de las canalizaciones de CI/CD, utilice el generador de SBOM de Amazon Inspector para obtener SBOM de archivos, imágenes de contenedores, directorios, sistemas locales y binarios compilados de Go y Rust en el formato SBOM de CycloneDX.

Recursos

Prácticas recomendadas relacionadas:

Documentos relacionados:

Videos relacionados:

Ejemplos relacionados: