SEC11-BP06 Implantar software programaticamente
Faça implantações de software de forma programática quando possível. Essa abordagem diminui a probabilidade de falha em uma implantação ou da introdução de um problema inesperado devido a erro humano.
Resultado desejado: a versão da workload que você testa é a versão que você implanta, e a implantação é sempre executada de forma consistente. Você externaliza a configuração da sua workload, o que ajuda você a implantar em diferentes ambientes sem alterações. Assinar de maneira criptográfica os pacotes de software é uma boa maneira de garantir que nada seja alterado entre os ambientes.
Práticas comuns que devem ser evitadas:
-
Implantar software manualmente em produção.
-
Realizar alterações manualmente no software para suprir diferentes ambientes.
Benefícios de implementar esta prática recomendada:
-
Maior confiança no processo de lançamento de software.
-
Redução do risco de uma alteração com falha afetar a funcionalidade dos negócios.
-
Maior cadência de lançamentos devido ao menor risco de alterações.
-
Recurso de reversão automática para eventos inesperados durante a implantação.
-
Capacidade de comprovar de forma criptográfica que o software testado é o software implantado.
Nível de risco exposto se esta prática recomendada não for estabelecida: Alto
Orientação para implementação
Para manter uma infraestrutura de aplicações robusta e confiável, implemente práticas de implantação seguras e automatizadas. Essa prática envolve remover o acesso humano persistente dos ambientes de produção, usar ferramentas de CI/CD para implantações e externalizar dados de configuração específicos do ambiente. Ao seguir essa abordagem, você pode aprimorar a segurança, reduzir o risco de erros humanos e simplificar o processo de implantação.
Você pode criar uma estrutura de Conta da AWS para remover o acesso humano persistente dos ambientes de produção. Essa prática minimiza o risco de alterações não autorizadas ou modificações acidentais, o que melhora a integridade de seus sistemas de produção. Em vez do acesso humano direto, você pode usar ferramentas de CI/CD como AWS CodeBuild
Para aprimorar ainda mais a segurança e a rastreabilidade, é possível assinar pacotes de aplicações depois de testados e validar essas assinaturas durante a implantação. Para fazer isso, use ferramentas criptográficas como AWS Signer ou AWS Key Management Service (AWS KMS)
Além disso, sua equipe pode arquitetar a workload para obter dados de configuração específicos do ambiente de uma fonte externa, como o AWS Systems Manager Parameter Store. Essa prática separa o código da aplicação dos dados de configuração, o que ajuda você a gerenciar e atualizar as configurações de maneira independente, sem modificar o código da aplicação em si.
Para simplificar o provisionamento e o gerenciamento da infraestrutura, considere usar ferramentas de infraestrutura como código (IaC), como AWS CloudFormation
Considere as implantações canário para validar a implantação bem-sucedida do software. As implantações canário envolvem a implementação de alterações em um subconjunto de instâncias ou usuários antes da implantação em todo o ambiente de produção. Em seguida, você pode monitorar o impacto das mudanças e revertê-las, se necessário, o que minimiza o risco de problemas generalizados.
Siga as recomendações descritas no whitepaper Organizando seu ambiente AWS usando várias contas. Este whitepaper fornece orientação sobre como separar ambientes (como desenvolvimento, preparação e produção) em Contas da AWS distintas, o que aumenta ainda mais a segurança e o isolamento.
Etapas de implementação
-
Configure a estrutura de Conta da AWS:
-
Siga as orientações no whitepaper Organizing Your AWS Environment Using Multiple Accounts para criar Contas da AWS separadas para diferentes ambientes (por exemplo, desenvolvimento, preparação e produção).
-
Configure os controles e permissões de acesso apropriados para cada conta para restringir o acesso humano direto aos ambientes de produção.
-
-
Implemente um pipeline de CI/CD:
-
Configure um pipeline de CI/CD usando serviços, como AWS CodeBuild
e AWS CodePipeline . -
Configure o pipeline para criar, testar e implantar automaticamente o código da aplicação nos respectivos ambientes.
-
Integre repositórios de código com o pipeline de CI/CD para controle de versão e gerenciamento de código.
-
-
Assine e verifique pacotes de aplicações:
-
Use o AWS Signer ou o AWS Key Management Service (AWS KMS)
para assinar os pacotes de aplicações depois de testados e validados. -
Configure o processo de implantação para verificar as assinaturas dos pacotes de aplicações antes de implantá-los nos ambientes de destino.
-
-
Externalize os dados de configuração:
-
Armazene dados de configuração específicos do ambiente no AWS Systems Manager Parameter Store.
-
Modifique o código da aplicação para recuperar dados de configuração do Parameter Store durante a implantação ou o runtime.
-
-
Implemente a infraestrutura como código (IaC):
-
Use ferramentas de IaC como AWS CloudFormation
ou AWS CDK para definir e gerenciar sua infraestrutura como código. -
Crie modelos do CloudFormation ou scripts de CDK para provisionar e configurar os recursos da AWS necessários para a aplicação.
-
Integre a IaC ao seu pipeline de CI/CD para implantar automaticamente as alterações na infraestrutura com as alterações no código da aplicação.
-
-
Implemente implantações canário:
-
Configure o processo de implantação para oferecer suporte a implantações canário, em que as alterações são implementadas em um subconjunto de instâncias ou usuários antes de serem implantadas em todo o ambiente de produção.
-
Use serviços, como o AWS CodeDeploy
ou o AWS ECS , para gerenciar implantações canário e monitorar o impacto das mudanças. -
Implemente mecanismos de reversão para reverter para a versão estável anterior se forem detectados problemas durante a implantação canário.
-
-
Monitore e audite:
-
Configure mecanismos de monitoramento e registro em log para rastrear implantações, desempenho de aplicações e mudanças na infraestrutura.
-
Use serviços, como o Amazon CloudWatch
e o AWS CloudTrail , para coletar e analisar logs e métricas. -
Implemente verificações de auditoria e conformidade para verificar a adesão às práticas recomendadas de segurança e aos requisitos regulatórios.
-
-
Melhore continuamente:
-
Analise e atualize regularmente suas práticas de implantação e incorpore feedback e lições aprendidas em implantações anteriores.
-
Automatize o máximo possível do processo de implantação para reduzir a intervenção manual e possíveis erros humanos.
-
Colabore com equipes multifuncionais (por exemplo, operações ou segurança) para alinhar e melhorar continuamente as práticas de implantação.
-
Seguindo essas etapas, você pode implementar práticas de implantação seguras e automatizadas em seu ambiente AWS, o que aumenta a segurança, reduz o risco de erros humanos e simplifica o processo de implantação.
Recursos
Práticas recomendadas relacionadas:
Documentos relacionados:
Vídeos relacionados:
Exemplos relacionados: