Uso de conjuntos de alterações sensíveis a desvios - AWS CloudFormation

Uso de conjuntos de alterações sensíveis a desvios

Os conjuntos de alterações sensíveis a desvios são conjuntos de alterações aprimorados do CloudFormation que permitem identificar e gerenciar o desvio de pilha de maneira segura. As pilhas se desviam da configuração de modelo esperada quando os recursos da pilha são alterados fora do CloudFormation, usando o Console de gerenciamento da AWS, a AWS CLI ou o SDK dos serviços subjacentes. Os conjuntos de alterações sensíveis a desvios comparam os modelos com o estado real dos recursos da pilha e alinham os recursos desviados com suas definições de modelo. Quando a definição do modelo de um recurso é atualizada para corresponder ao seu estado real, os conjuntos de alterações sensíveis a desvios redefinem o status de desvio do recurso sem modificar o recurso.

Os benefícios de usar conjuntos de alterações sensíveis ao desvio incluem:

  • Pré-visualizar substituições de desvio: detecte se uma implantação reverterá as alterações críticas fora de banda feitas durante a resposta a incidentes.

  • Reconciliação sistemática de desvios: alinhe com segurança os recursos desviados com as definições de modelos compatíveis, seja substituindo as propriedades desviadas pelos valores do modelo ou atualizando o modelo para corresponder ao estado real do recurso.

  • Recursos aprimorados de reversão: se uma implantação falhar, restaure os recursos para seu estado real de pré-implantação, não para o estado anterior do modelo.

  • Visibilidade completa: veja exatamente como sua implantação afetará as configurações reais dos recursos antes de fazer alterações.

Os conjuntos de alterações tradicionais fornecem uma comparação do seu novo modelo com o modelo anterior para uma pilha, mas não levam em conta o desvio da pilha. Os conjuntos de alterações sensíveis a desvios resolvem esse problema fornecendo uma comparação tripla entre:

  • Estado real: a configuração ativa de seus recursos. O CloudFormation lerá a configuração dos recursos em sua conta no momento da criação do conjunto de alterações por meio das APIs de serviço subjacentes.

  • Estado de implantação anterior: a configuração definida no modelo da sua última implantação do CloudFormation.

  • Estado desejado: a configuração definida em seu novo modelo.

Os conjuntos de alterações sensíveis ao desvio atualizarão o estado real de todos os recursos da pilha para corresponder ao estado desejado, mesmo que um recurso não tenha sido alterado explicitamente no modelo.

Considerações

  • Suporte ao tipo de recurso: os conjuntos de alterações sensíveis a desvios são compatíveis com a comparação do estado desejado com o estado real de centenas de tipos de recursos. Para tipos de recursos não compatíveis, os conjuntos de alterações sensíveis a desvios recorrem à comparação do estado de implantação anterior com o estado desejado. Para obter detalhes, consulte a seção Tipos de recursos compatíveis.

  • Propriedades somente para gravação: para propriedades que contêm dados sensíveis (senhas, segredos), os conjuntos de alterações sensíveis a desvios se comparam aos valores de implantação anteriores, em vez dos valores reais.

  • Propriedades gerenciadas pela AWS: os conjuntos de alterações sensíveis a desvios preservam as alterações fora de banda feitas pelos serviços da AWS nas propriedades gerenciadas, como a capacidade desejada de um grupo do Amazon EC2 Auto Scaling. Para obter detalhes, consulte a seção de propriedades gerenciadas pela AWS.

  • Chaves de tags externas: conjuntos de alterações sensíveis a desvios não removem nem modificam chaves de tags que não foram especificadas no modelo, evitando conflitos com sistemas de controle de acesso por atributo (ABAC).

  • Substituição de recursos desviados: conjuntos de alterações sensíveis a desvios não são compatíveis com a reconciliação de desvios para propriedades imutáveis.

  • Anexos de pilha cruzada: alguns tipos de recursos, como AWS::IAM::Policy, podem influenciar o estado real de outros tipos de recursos, como AWS::IAM::Role. Os conjuntos de alterações sensíveis a desvios lidam com a anexação de recursos em uma pilha. Se um recurso for modificado por meio da anexação de um recurso secundário de uma pilha diferente, os conjuntos de alterações sensíveis a desvios detectarão a modificação como desvio e poderão reverter o anexo. Os recursos anexáveis conhecidos incluem AWS::IAM::Policy, AWS::IAM::ManagedPolicy, AWS::EC2::SecurityGroupIngress e AWS::EC2::SecurityGroupEgress.

Propriedades gerenciadas pela AWS

Você pode configurar propriedades específicas de recursos para o gerenciamento ativo da AWS. Por exemplo, é possível permitir que o Amazon Relational Database Service (Amazon RDS) atualize automaticamente a versão secundária do mecanismo de uma tabela do Amazon RDS. Essas alterações podem aparecer como um desvio de pilha no CloudFormation. Os conjuntos de alterações sensíveis a desvios reconhecem que o desvio é esperado para propriedades gerenciadas pela AWS e deixam seu valor real inalterado se você não tiver modificado a propriedade em seu modelo. Os principais exemplos de propriedades gerenciadas pela AWS são:

  • Habilitar a propriedade AutoMinorVersionUpgrade de uma tabela do Amazon RDS para permitir atualizações automáticas da versão do mecanismo.

  • Uso do recurso AWS::ApplicationAutoScaling::ScalableTarget para habilitar o ajuste de escala automático de propriedades como as unidades de capacidade de leitura/gravação de uma tabela do Amazon DynamoDB e a contagem desejada de um cluster do Amazon Elastic Container Service.

  • Uso da AWS::AutoScaling::ScalingPolicy para grupos do Amazon EC2 Auto Scaling.

Os conjuntos de alterações com sensíveis a desvios esclarecem as propriedades que foram identificadas como gerenciadas pela AWS. Para obter detalhes, consulte a seção da AWS CLI.

Uso de conjuntos de alterações sensíveis a desvios (console)

Você pode criar e gerenciar conjuntos de alterações sensíveis a desvios por meio do console do CloudFormation usando o mesmo fluxo de trabalho dos conjuntos de alterações tradicionais, com opções adicionais para modos de implantação.

Criação de conjuntos de alterações sensíveis a desvios

Para criar um conjunto de alterações sensíveis a desvios (console)
  1. Faça login no Console de gerenciamento da AWS e abra o console CloudFormation em https://console.aws.amazon.com/cloudformation.

  2. Na página Pilhas, selecione a pilha que você deseja atualizar.

  3. Escolha Ações de pilhas e depois Criar conjunto de alterações para a pilha atual.

  4. Na página Criar conjunto de alterações, em Tipo de conjunto de alterações, escolha Conjunto de alterações sensível a desvios.

  5. Escolha Criar conjunto de alterações.

  6. Na página de detalhes do conjunto de alterações, revise a comparação tripla que mostra a implantação atual, anterior e o estado desejado para cada recurso afetado.

  7. Se as alterações estiverem adequadas para você, escolha Executar conjunto de alterações.

Análise de conjuntos de alterações sensíveis a desvios

Ao visualizar um conjunto de alterações sensível a desvios no console, você verá informações aprimoradas em comparação com os conjuntos de alterações tradicionais:

  • Status de desvio da pilha: indica se a pilha foi desviada de sua última implantação.

  • Comparação de propriedades: mostra uma diferença JSON entre o estado real e o estado desejado de um recurso afetado.

  • Indicadores de desvio: marca claramente as propriedades do diferencial JSON que foram desviadas. Clique em Visualizar desvio para ver o valor da implantação anterior de uma propriedade.

  • Indicadores da fonte de valor: mostra se os valores anteriores de uma propriedade vêm do estado real ou do estado de implantação anterior.

Uso de conjuntos de alterações sensíveis a desvios (AWS CLI)

Você pode criar e gerenciar conjuntos de alterações sensíveis a desvios usando a AWS CLI, adicionando o parâmetro --deployment-mode REVERT_DRIFT ao comando create-change-set.

Criação de conjuntos de alterações sensíveis a desvios

Para criar um conjunto de alterações sensível a desvios

Use o comando create-change-set com o parâmetro --deployment-mode REVERT_DRIFT para criar um conjunto de alterações sensível ao desvio.

aws cloudformation create-change-set \ --stack-name my-stack \ --change-set-name my-drift-aware-changeset \ --template-body file://updated-template.yaml \ --deployment-mode REVERT_DRIFT \ --capabilities CAPABILITY_IAM

Análise de conjuntos de alterações sensíveis a desvios

Para revisar os detalhes de um conjunto de alterações sensível a desvios

Use o comando describe-change-set para revisar os detalhes de um conjunto de alterações sensível a desvios:

aws cloudformation describe-change-set \ --change-set-name my-drift-aware-changeset \ --stack-name my-stack

A resposta inclui informações aprimoradas para conjuntos de alterações sensíveis a desvios:

  • StackDriftStatus: mostra se a pilha foi desviada (DRIFTED, IN_SYNC, NOT_CHECKED ou UNKNOWN).

  • ResourceDriftStatus: mostra o status de desvio de cada recurso (DELETED, MODIFIED, IN_SYNC ou NOT_CHECKED).

  • BeforeValueFrom: indica se o valor anterior de uma propriedade vem de ACTUAL_STATE ou PREVIOUS_DEPLOYMENT_STATE.

  • Drift: contém os detalhes do desvio de uma propriedade, incluindo PreviousValue, ActualValue e DriftDetectionTimestamp.

  • ResourceDriftIgnoredProperties: contém as propriedades de um recurso para o qual o conjunto de alterações não reverterá o desvio e os motivos para ignorar o desvio.

Para obter mais informações, consulte DescribeChangeSet na Referência de APIs do AWS CloudFormation.

Execução de conjuntos de alterações sensíveis a desvios

Para executar um conjunto de alterações sensível a desvios

Depois de analisar o conjunto de alterações, use o comando execute-change-set para aplicar as alterações:

aws cloudformation execute-change-set \ --change-set-name my-drift-aware-changeset \ --stack-name my-stack

Se a implantação falhar, o CloudFormation reverterá os recursos para seu estado real de pré-implantação e preservará as alterações fora de banda feitas desde a última implantação.

Tipos de recursos compatíveis

Os conjuntos de alterações sensíveis são compatíveis com uma comparação tripla do estado real, do estado anterior da implantação e do estado desejado para todos os tipos de recursos compatíveis com a detecção de desvios, exceto os seguintes tipos de recursos:

  • AWS::SageMaker::MlflowTrackingServer

  • AWS::Route53Resolver::FirewallRuleGroup

  • AWS::MediaLive::Multiplexprogram

  • AWS::VpcLattice::ResourceConfiguration

  • AWS::S3::StorageLensGroup

  • AWS::Bedrock::AgentAlias

  • AWS::MSK::Cluster

  • AWS::RDS::DBProxy

  • AWS::Redshift::ClusterParameterGroup

  • AWS::QBusiness::Index

  • AWS::NetworkManager::CoreNetwork

  • AWS::IAM::OIDCProvider

  • AWS::Organizations::ResourcePolicy

  • AWS::SNS::TopicInlinePolicy

  • AWS::Route53::KeySigningKey

  • AWS::DataZone::PolicyGrant

  • AWS::Transfer::Certificate

  • AWS::SageMaker::ImageVersion

  • AWS::Neptune::DBParameterGroup

  • AWS::ODB::CloudVmCluster

  • AWS::RolesAnywhere::TrustAnchor

  • AWS::Evidently::Launch

  • AWS::Detective::Graph

  • AWS::Maester::DocumentType

  • AWS::SageMaker::ModelPackageGroup

  • AWS::S3Express::BucketPolicy

  • AWS::Panorama::PackageVersion

  • AWS::S3Tables::TableBucketPolicy

Os conjuntos de alterações sensíveis a desvios recorrem a uma comparação do estado de implantação anterior e do estado desejado para recursos não compatíveis com a comparação tripla.