SEC11-BP06 Implementación de software mediante programación - Marco de AWS Well-Architected

SEC11-BP06 Implementación de software mediante programación

Siempre que sea posible, lleve a cabo las implementaciones de software mediante programación. Con este enfoque se reduce la probabilidad de que se produzca un error en la implementación 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 implementar el software.

La ventaja de no depender de personas para implementar el software es que tendrá mayor confianza en que se ha probado lo que se implementa, y que la implementación se lleve a cabo 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 implementar el mismo código en varios entornos sin necesidad de hacer 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:

  • Implementar manualmente el software en producción.

  • Hacer cambios manualmente 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 la implementación.

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

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 llevar a cabo las implementaciones. Diseñe las aplicaciones de manera que los datos de configuración específicos del entorno se obtengan de una fuente externa, como el Almacén de parámetros de AWS Systems Manager. Firme los paquetes después de probarlos y valide estas firmas durante la implementación. Configure las canalizaciones de CI/CD para que envíen el código de la aplicación y utilice canarios para confirmar que la implementación haya tenido lugar como corresponde. Utilice herramientas como AWS CloudFormation o AWS CDK para definir su infraestructura y, a continuación, utilice AWS CodeBuild y AWS CodePipeline para llevar a cabo operaciones de CI/CD.

Pasos para la implementación

  • Cree canalizaciones de CI/CD bien definidas para agilizar el proceso de implementación.

  • 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.

  • 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 usar un modelo de implementación azul/verde.

  • Implemente canarios para validar la implementación correcta 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 va a implementar.

Recursos

Prácticas recomendadas relacionadas:

Documentos relacionados:

Videos relacionados:

Ejemplos relacionados: