SEC11-BP06 Desplegar software mediante programación - Pilar de seguridad

SEC11-BP06 Desplegar software mediante programación

Siempre que sea posible, realice los despliegues de software mediante programación. Con este enfoque se reduce la probabilidad de que se produzca un error en el despliegue o de que surja un problema inesperado debido a un error humano.

Resultado deseado: Mantener a las personas alejadas de los datos es un principio clave para crear de forma segura en la Nube de AWS. Este principio incluye la forma de desplegar el software.

La ventaja de no depender de personas para desplegar el software es que tendrá mayor confianza en que se ha probado lo que se despliega, y que el despliegue se realice siempre de forma coherente. No tendrá que modificar el software para que funcione en distintos entornos. El uso de los principios del desarrollo de aplicaciones de doce factores, en concreto la externalización de la configuración, le permite desplegar el mismo código en varios entornos sin necesidad de realizar cambios. La firma criptográfica de los paquetes de software es una buena forma de verificar que no ha cambiado nada entre entornos. El resultado general de este método es que se reduce el riesgo en el proceso de cambio y mejorar la coherencia de las versiones de software.

Patrones comunes de uso no recomendados:

  • Despliegue manual del software en producción.

  • Realización manual de cambios en el software para adaptarlo a distintos entornos.

Beneficios de establecer esta práctica recomendada:

  • Mayor confianza en el proceso de lanzamiento de software.

  • Reducción del riesgo de que un cambio erróneo afecte a las funciones de la empresa.

  • Aumento de la cadencia de lanzamiento debido al menor riesgo del cambio.

  • Capacidad de reversión automática en caso de imprevistos durante el despliegue.

  • Capacidad para demostrar criptográficamente que el software probado es el software desplegado.

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

Guía para la implementación

Cree su estructura de cuenta de Cuenta de AWS de forma que elimine el acceso humano persistente desde los entornos y utilice herramientas de CI/CD para realizar los despliegues. Diseñe las aplicaciones de manera que los datos de configuración específicos del entorno se obtengan de un origen externo, como el Parameter Store de AWS Systems Manager. Firme los paquetes después de probarlos y valide estas firmas durante el despliegue. Configure las canalizaciones de CI/CD para que envíen el código de la aplicación y utilice valores controlados para confirmar que el despliegue ha tenido lugar como corresponde. Utilice herramientas como AWS CloudFormation o AWS CDK para definir su infraestructura y, a continuación, use AWS CodeBuild y AWS CodePipeline para realizar las operaciones de CI/CD.

Pasos para la aplicación

  • Cree canalizaciones de CI/CD bien definidas para agilizar el proceso de despliegue.

  • Proporcione capacidad de CI/CD para simplificar la integración de las pruebas de seguridad en las canalizaciones con AWS CodeBuild y AWS Code Pipeline.

  • Siga las directrices sobre separación de entornos del documento técnico Organizing Your AWS Environment Using Multiple Accounts (Organización del entorno de AWS con varias cuentas).

  • Verifique que no haya acceso humano persistente a los entornos donde se ejecutan las cargas de trabajo de producción.

  • Diseñe las aplicaciones de modo que admitan la externalización de datos de configuración.

  • Piense en la posibilidad de llevar a cabo el despliegue mediante un modelo de despliegue azul-verde.

  • Implemente valores controlados para validar el despliegue correcto del software.

  • Utilice herramientas criptográficas como AWS Signer o AWS Key Management Service (AWS KMS) para firmar y verificar los paquetes de software que está desplegando.

Recursos

Prácticas recomendadas relacionadas:

Documentos relacionados:

Vídeos relacionados:

Ejemplos relacionados: