Automatizando o gerenciamento de mudanças
A automação da gestão de mudanças é uma parte importante da implementação de referência do pipeline do DevSecOps. Desenvolvedores, responsáveis pela aprovação e auditores podem monitorar os aspectos de conformidade das implantações. Toda implantação deve seguir a política de gestão de mudanças da organização.
A automação do gerenciamento de mudanças pode ser visualizada no fluxograma a seguir. O fluxograma ilustra uma automação de gerenciamento de mudanças padrão, gerenciamento de mudanças de emergência, um fluxo de solicitação de mudanças manual e o fluxo de automação de gerenciamento de mudanças quando há reversão em linha.
Antes de Iniciar
Familiarize-se com o processo e a terminologia antes de prosseguir. Para obter mais informações, consulte Gerenciamento de mudanças automatizado.
Fluxo padrão de gerenciamento de mudanças
O fluxo padrão de gerenciamento de mudanças é o caminho padrão que o pipeline de CD segue para todas as implementações que não têm um rótulo de emergência e não são fornecidas com uma solicitação de mudança manual pré-existente.
Avaliação da prontidão pré-implantação
Antes da criação de uma solicitação de mudança, o pipeline calcula a prontidão da implantação e define o sinalizador DEPLOYMENT_READY como true ou false. Esse sinalizador é derivado das
evidências coletadas nos estágios CI e CD. Se alguma verificação de evidência indicar um desvio, uma verificação, varredura ou teste ausente ou malsucedido relacionado ao conjunto de artefatos implantado, DEPLOYMENT_READY será
definido como false.
A solicitação de alteração é preparada com os seguintes campos provenientes do último PR de promoção mesclado com a ramificação de destino:
riskimpactpriorityassigneedescriptionpurposecustomer impactdeployment impactbackout plan
Criação de solicitação de mudança
A solicitação de modificação preparada é enviada em um dos dois estados iniciais, dependendo de DEPLOYMENT_READY:
DEPLOYMENT_READY |
Estado inicial do CR | Efeito |
|---|---|---|
true |
Aprovado | O pipeline prossegue para a implementação sem esperar pela aprovação manual. |
false |
Não aprovado | O CR é enviado para revisão humana. A implantação é bloqueada até que a aprovação seja concedida. |
O sistema de gerenciamento de mudanças também aprova automaticamente as solicitações de mudança quando a implementação não causa nenhum tempo de inatividade (a duração da interrupção é zero) e DEPLOYMENT_READY é true,
e o risco de implantação está dentro de limites aceitáveis.
Caso as mudanças exijam um tempo de inatividade planejado, deve-se criar manualmente uma solicitação de mudança e enviá-la para aprovação. Após a aprovação, é possível iniciar a implementação, fornecendo o ID da solicitação de mudança. O pipeline verifica seu estado de aprovação e, em seguida, executa a implantação. Para obter mais informações, consulte Manualmente aprovando solicitações de mudança.
Anexos de pré-implantação
Imediatamente após a criação da solicitação de mudança, o pipeline anexa os seguintes artefatos ao registro CR:
- Lista técnica de implantação- lista todos os componentes incluídos na implantação
- Resumo Delta- postura de evidência de todos os componentes que participam da implantação
- Arquivo de configuração de verificações de evidências - anexado somente se o bloqueio baseado em verificações de evidências necessário estiver configurado no pipeline
- Perfil SCC- anexado somente se uma Configuração de Segurança e Conformidade estiver configurada
Portão de aprovação
Se a solicitação de alteração tiver sido criada como Não aprovada, ela será colocada em um estado não aprovado e enviada para revisão humana. Nenhuma implantação ocorre até que a aprovação seja concedida.
Você pode verificar o ID da solicitação de alteração criada nos registros do pipeline, aguardar a aprovação e, em seguida, reiniciar a implantação usando o mesmo ID da solicitação de alteração. O pipeline verifica o estado de aprovação e continua a implementação.
Testes de implantação e aceitação
Com o CR no estado Implement, o pipeline é executado:
- Implementação de CD- promove o código para o ambiente de destino
- Testes de aceitação- validam o resultado da implementação
Esses dois são estágios de execução orientados pelo usuário.
Encerramento do CR pós-implantação
Quando os testes de implantação e aceitação são aprovados, o pipeline anexa os artefatos de fechamento e encerra a solicitação de alteração:
- Resumo de encerramento- um resumo das evidências de todos os registros de inventário no nível de compromisso de destino.
- SBOM mesclado- a lista de materiais do software pós-implantação em todos os componentes do inventário.
O CR é então fechado com um close_category com base em DEPLOYMENT_READY no momento do fechamento:
DEPLOYMENT_READY |
close_category |
|---|---|
true |
successful |
false |
successful with issues |
Fluxo CR manual
Se um CR manual foi fornecido no início do pipeline, ele será mantido aberto depois que os anexos pós-implantação forem adicionados.
Criando pedidos de mudança para implementações
Use o modelo de solicitação de pull fornecido no inventário para solicitações de pull de promoção a fim de preencher os campos da solicitação de alteração. Como esses campos não podem ser preenchidos automaticamente, você deve preenchê-los manualmente para promover as alterações. Ao fazer isso, você aciona a implantação e dá continuidade à coleta automática de dados para o restante da solicitação de mudança.
O modelo de solicitação de pull da promoção contém os seguintes campos:
- Prioridade obrigatória. A prioridade da mudança. Os valores válidos são:
critical,high,moderate,loweplanning. - É obrigatório indicar o responsável pela solicitação de mudança. O endereço de e-mail da pessoa à qual a solicitação de alteração foi atribuída.
- Descrição adicional: descreve o processo de mudança. O conteúdo adicional gerado pela automação é anexado aqui.
- Objetivo/Meta Descreve o objetivo da alteração.
- Explicação do impacto: descreve o possível impacto da alteração.
- Impacto do cliente necessário. Descreve o impacto para o cliente. Os valores válidos são:
critical,high,moderate,low,no_impact. - Impacto da Implementação Necessário Descreve o impacto sobre a implantação. Os valores válidos são:
small,large. - Plano de reversão Descreve o plano de reversão.
Você também deve definir dois campos adicionais nas propriedades do ambiente:
target-environment-purpose(Obrigatório) Os valores válidos são:production,pre_prod. Qualquer implantação que não seja de produção se qualifica comopre_prod.target-environment-detail(Obrigatório) Uma cadeia de caracteres que descreve o sitetarget-environmentonde a alteração é implementada.
Para obter mais informações sobre os dados da solicitação de mudança, veja Dados incluídos em solicitações de mudança.
Tipos de mudança
A Gestão de Solicitações de Mudança oferece suporte a dois tipos de mudança: de emergência ou regular.
Se a alteração atual for uma alteração de emergência, adicione a etiqueta “ emergency ” ao pull request da promoção.
Não há fluxo de emergência no lado do oleoduto da CI. No entanto, a configuração da propriedade CI pipeline/trigger skip-inventory-update-on-failure como um valor vazio ou 0 permite que o repositório de inventário
seja atualizado mesmo que os problemas sejam detectados na execução do pipeline de CI. Com esse inventário atualizado, uma mudança de emergência pode ser ativada.
Como responder a um evento de incidente crítico (CIE)
Um evento de incidente crítico (CIE) representa uma interrupção de serviço ou uma degradação grave que exige ação imediata. Isso é diferente de uma correção de segurança de rotina ou de um bug - uma CIE é declarada quando a restauração do serviço tem prioridade sobre todas as outras preocupações, inclusive sobre o processo padrão de aprovação e de bloqueio de evidências.
Depois que uma CIE é declarada e o escopo do incidente é entendido, há dois caminhos de recuperação com suporte. A escolha entre elas depende do fato de haver uma boa configuração conhecida disponível para ser revertida ou se uma nova correção deve ser criada e implantada.
Escolha de um caminho de recuperação
Caminho 1: reversão completa usando o ouvinte de reversão dedicado
Se houver uma configuração de último estado conhecido, ou seja, um estado implantado anteriormente que seja confirmado como estável, o caminho mais rápido para a restauração do serviço é uma reversão total. Isso usa um ouvinte de reversão dedicado, criado especificamente para esse cenário e que não exige uma nova compilação ou promoção.
Para obter instruções passo a passo e os parâmetros a serem configurados, consulte Reversão total usando o ouvinte de reversão dedicado.
Caminho 2: Fix-forward como uma mudança emergencial
Se não houver um alvo de reversão viável ou se a investigação já tiver produzido um patch, a correção poderá ser implementada como uma alteração de emergência. Esse caminho faz um curto-circuito na lógica padrão de bloqueio de evidências: o pipeline permite que a alteração seja implementada imediatamente, e a solicitação de alteração está sujeita a revisão e aprovação retroativas após a resolução do incidente.
Usar esse caminho significa aceitar que o código implantado na produção ainda pode conter vulnerabilidades não resolvidas ou lacunas de evidências abertas. A restauração do serviço é tratada como a prioridade mais alta, e os itens de conformidade pendentes devem ser tratados após o encerramento do incidente.
Esses dois caminhos não são mutuamente exclusivos. Na prática, as equipes podem iniciar uma reversão total primeiro para restaurar o serviço imediatamente e, em seguida, fazer uma correção quando o patch estiver pronto e validado. O sequenciamento é deixado a critério do operador com base na situação em questão.
Procedimento de fixação prévia
Para implementar uma correção como uma alteração de emergência durante uma CIE, siga estas etapas:
-
Reconstrua o componente afetado. Execute o pipeline de CI para criar uma nova versão do artefato contendo a correção. Se as verificações de evidências de IC estiverem falhando devido a condições de incidentes, defina o pipeline ou a propriedade de acionamento
skip-inventory-update-on-failurecomo um valor vazio ou0para permitir que o inventário seja atualizado apesar das falhas, de modo que a alteração de emergência possa prosseguir. -
Promover a correção por meio de ambientes. Crie solicitações pull de promoção a partir do ambiente mais baixo e promova o aumento em direção à produção. Se o tempo permitir, verifique a correção em cada estágio antes de prosseguir com a promoção. Se a situação for crítica, promova diretamente a produção e reconcilie os ambientes inferiores depois que o serviço for restaurado.
-
Aplique a etiqueta de emergência. No pull request de promoção direcionado à produção, adicione o rótulo
emergency. Isso sinaliza para o pipeline que o bloqueio de evidência padrão deve ser ignorado e a alteração deve ser tratada como uma implementação de emergência. -
Implementar na produção. Execute o pipeline do CD. O pipeline detecta o rótulo de emergência, ignora a espera pela aprovação e prossegue imediatamente para os testes de implantação e aceitação. A solicitação de mudança é criada e fechada com
close_category = successful with issues, refletindo que a mudança foi implementada em condições de emergência. -
Reconciliar ambientes inferiores. Depois que o incidente de produção for resolvido, implemente o mesmo artefato de correção de emergência em ambientes inferiores - preparação, pré-produção e assim por diante - para que todos os ambientes estejam em um estado consistente com a produção. Se os ambientes inferiores foram verificados antes da promoção para produção, confirme se a mesma versão do artefato está em vigor em todas as camadas.
Obrigações pós-CIE
Uma implementação de emergência incorre em obrigações de conformidade que devem ser tratadas após o encerramento do incidente:
- A solicitação de alteração deve ser revisada retroativamente e aprovada pelos aprovadores apropriados.
- Todas as lacunas de evidências aceitas durante a emergência - vulnerabilidades não resolvidas, varreduras incompletas ou verificações com falha - devem ser corrigidas e o pipeline deve ser executado novamente em condições padrão.
- Uma análise de causa raiz (RCA) deve ser conduzida e documentada.
O registro da solicitação de mudança, incluindo o Delta Summary, o Closing Summary e o Merged SBOM anexado pelo pipeline, serve como a principal trilha de auditoria para a revisão pós-CIE.
Fluxo de solicitação de mudança de emergência
O fluxo de solicitação de mudança emergencial oferece um caminho de implementação acelerado quando uma mudança não pode esperar pelo ciclo de aprovação padrão. Ele é ativado quando um CR está em um estado não aprovado no portão de aprovação e o usuário executa o pipeline com o rótulo Emergency anexado ao pull request de promoção.
Invocação do fluxo de emergência
O fluxo de emergência é iniciado pelo usuário:
- O usuário executa o pipeline com o rótulo
emergencyaplicado ao pull request de promoção. - O pipeline detecta a designação de emergência e os testes de implantação e aceitação prosseguem imediatamente, sem esperar pela aprovação padrão.
- O CR é encerrado com as notas finais conforme
successful with issues.
Se a alteração atual for uma alteração de emergência, adicione a etiqueta " emergency " ao pull request de promoção antes de executar o pipeline.
Implantação pós-emergência
Depois que o fluxo de emergência conclui a implementação e os testes, ele se junta novamente ao fluxo padrão no estágio pós-implementação:
- O Resumo de Encerramento e o SBOM Mesclado estão anexados ao CR.
- O CR é fechado seguindo a mesma lógica
DEPLOYMENT_READYbaseada emclose_categorydo fluxo padrão.
Se o tipo de CR for emergency, a solicitação de alteração deverá ser revisada e aprovada retroativamente após a implementação.
Fluxo de retorno em linha
O fluxo de reversão em linha é um subfluxo de recuperação acionado quando a implantação ou os testes de aceitação falham durante o fluxo padrão de gerenciamento de mudanças.
Condição de acionamento
O fluxo de reversão em linha é inserido quando a implantação ou os testes de aceitação não são aprovados. Em seguida, o pipeline avalia se o inline-rollback está ativado:
- Inline-Rollback não ativado: O CR é deixado aberto com
close_category = unsuccessfule o pipeline é encerrado. Não há tentativa de recuperação automática. - Reversão ativada: O script de reversão é executado para reverter o ambiente de destino, e os artefatos de reversão são reunidos e anexados ao CR.
Execução de reversão em linha
Quando a reversão em linha está ativada, o pipeline:
- Executa o script de reversão em linha se a implantação ou o teste de aceitação falhar no pipeline de CD.
- Coleta os seguintes artefatos:
- Logs de reversão- saída da execução do script de reversão
- Resumo de fechamento- reflete o resultado da reversão
- SBOM mesclado- lista de materiais do software pós-rollback
- Anexa todos os três artefatos ao registro CR aberto.
Encerramento do CR após a reversão
Após a reversão em linha e a anexação do artefato, o CR é deixado aberto com close_category = unsuccessful. Isso indica ao gerenciamento de mudanças que a implementação foi tentada, falhou e foi revertida automaticamente.
Um CR com close_category = unsuccessful é o resultado esperado e correto quando uma implantação é revertida, e não uma indicação de falha no processo. As equipes de operações devem usar os logs de reversão anexados para investigar
a causa raiz.
Executando implantações usando um ID de solicitação de alteração existente
Executar o pipeline com uma solicitação de alteração pré-aprovada
Você pode usar uma solicitação de mudança (CR) pré-aprovada para a implementação. Dois cenários são possíveis:
Quando o pipeline de CD reconhece que o CR foi criado por uma execução anterior do pipeline de CD, ele acelera o caminho da implantação:
- Reutilizando o delta pré-calculado e o resumo das evidências da evidência CR.
- Ignorando as etapas de revisão por pares e verificação de assinatura.
- Implantando o delta pré-calculado.
Quando o pipeline de CD não consegue determinar se o CR foi criado por uma execução anterior do pipeline de CD ou o CR fornecido não corresponde ao destino de implantação da execução atual:
- Não reutiliza nenhum delta pré-calculado ou resumos de evidências.
- Ele não ignora a revisão por pares nem a verificação da assinatura do artefato.
- Ele recalcula o delta e o resumo do zero.
- Ele não cria um novo CR, pois um já foi fornecido.
Reexecutar o pipeline em uma implantação com falha
Se você não quiser utilizar o gerenciamento automatizado de mudanças, pode apresentar, em vez disso, uma solicitação de mudança previamente criada e aprovada. A Rerun falhou implementações nos seguintes cenários:
- A última solicitação de alteração criada automaticamente não está pronta para implantação e não foi aprovada automaticamente. Você recebeu a aprovação e deve reiniciar a implementação usando a mesma solicitação de alteração.
- A implementação exige tempo de inatividade. Você criou a solicitação de mudança, ela foi aprovada e você seguiu a Política de Gerenciamento de Mudanças da sua organização.
- Não houve alteração em nenhum código ou configuração. Você criou a solicitação de mudança, explicou o que mudou, recebeu aprovação e iniciou uma implementação usando a solicitação de mudança aprovada.
A solicitação de alteração (CR) permanece aberta após a conclusão do pipeline de CD.
Você pode iniciar o pipeline de implantação contínua de referência do DevSecOps utilizando uma solicitação de alteração pré-aprovada e inserindo o ID da solicitação de alteração na propriedade change-request-id.
Se a propriedade change-request-id estiver definida, o pipeline ignora a coleta de dados para a solicitação de alteração e passa diretamente para a verificação do status de aprovação. Se o parâmetro **change-request-id**
estiver definido como notAvailable por padrão, uma solicitação de alteração será criada automaticamente pelo pipeline.
Comparação de fluxo
A tabela a seguir resume as principais características de cada fluxo de gerenciamento de mudanças:
| Característica | Fluxo padrão | Fluxo de retorno em linha | Fluxo de emergência |
|---|---|---|---|
| Acionador | Todo pipeline de CD padrão é executado | Falha no teste de implantação ou de aceitação | Reexecução do usuário com etiqueta de emergência |
| É necessária aprovação? | Sim, se DEPLOYMENT_READY=false |
N/A - nenhuma nova implementação | Não - ignora a espera pela aprovação |
| A implantação ocorre? | True | Tentada e depois revertida | Sim - imediatamente |
| Script de reversão usado? | Não | Sim, se estiver ativado | Não |
| Resultado da RC | successful ou successful with issues |
unsuccessful (CR deixado em aberto) |
successful ou successful with issues |
| Anexos pós-implantação | Resumo de encerramento, SBOM mesclado | Registros de reversão, resumo de encerramento, SBOM mesclado | Resumo de encerramento, SBOM mesclado |
| Estado final do pipeline | Termina em verde | Saídas (CR aberto, sem sucesso) | Termina em verde |