SEC11-BP02 Automatizar 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 problemas de forma temprana y frecuente a lo largo del ciclo de vida de 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.
-
Realizar 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:
-
Menor 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
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 CodeWhisperer
El taller de seguridad para desarrolladores
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 recogidos 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 aplicació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.
-
El taller de seguridad para desarrolladores
ofrece un ejemplo de integración de pruebas estáticas y dinámicas en un proceso de lanzamiento. -
La realización de pruebas o análisis de código mediante herramientas automatizadas, como Amazon CodeWhisperer
integrado con los IDE de los desarrolladores y Amazon CodeGuru Reviewer para escanear código al confirmar, ayuda a los desarrolladores a obtener información en el momento adecuado. -
Si usa AWS Lambda para la compilación, puede utilizar Amazon Inspector
para analizar el código de la aplicación en sus funciones. -
El taller de CI/CD de AWS
proporciona un punto de partida la crear canalizaciones de CI/CD en AWS. -
Cuando se incluyen pruebas automatizadas en las canalizaciones de CI/CD, es preciso utilizar un sistema de tickets para realizar un seguimiento de la notificación y corrección de problemas de software.
-
En el caso de las pruebas de seguridad que puedan generar hallazgos, 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.
Recursos
Documentos relacionados:
-
Socios con competencia en seguridad de AWS
para la seguridad de las aplicaciones -
Choosing a Well-Architected CI/CD approach
(Elección de un enfoque CI/CD bien diseñado) -
Monitoring CodeCommit events in Amazon EventBridge and Amazon CloudWatch Events (Supervisión de eventos de CodeCommit en Amazon EventBridge y Amazon CloudWatch Events)
-
Secrets detection in Amazon CodeGuru Review (Revisión de la detección de secretos en Amazon CodeGuru)
-
Accelerate deployments on AWS with effective governance
(Acelerar los despliegues en AWS con una gobernanza eficaz) -
How AWS approaches automating safe, hands-off deployments
(Cómo AWS aborda la automatización de despliegues seguros y sin intervención)
Vídeos relacionados:
-
Hands-off: Automating continuous delivery pipelines at Amazon
(Sin intervención: automatización de canalizaciones de entrega continua en Amazon) -
Automating cross-account CI/CD pipelines
(Automatización de canalizaciones CI/CD entre cuentas)
Ejemplos relacionados:
-
Industry awareness for developers
(Concienciación del sector para desarrolladores) -
AWS CodePipeline Governance
(Gobernanza de AWS CodePipeline) (GitHub) -
Security for Developers workshop
(Taller de seguridad para desarrolladores) -
AWS CI/CD Workshop
(Taller de CI/CD de AWS)