Implantação segura de atribuições do Azure Policy

À medida que seu ambiente se expande, a demanda por um pipeline de CD (implantação contínua) controlada com controle de exposição progressiva também se expande. Portanto, a Microsoft recomenda que as equipes de DevOps sigam a estrutura SDP (práticas de implantação seguras). A implantação segura de definições e atribuições do Azure Policy ajuda a limitar o impacto de comportamentos não intencionais de recursos de política.

A abordagem de alto nível da implementação da SDP com o Azure Policy é implementar gradualmente atribuições de política por anéis para detectar alterações de política que afetam o ambiente em estágios iniciais antes que elas afetem a infraestrutura de nuvem crítica.

Os anéis de implantação podem ser organizados de diversas maneiras. Neste tutorial de instruções, os anéis são divididos por diferentes regiões do Azure. O Anel 0 representa locais de tráfego baixo e não críticos e o Anel 5 indica os locais de tráfego mais alto e críticos.

Etapas para a implantação segura das atribuições do Azure Policy com efeitos de negação ou acréscimo

Use o fluxograma a seguir como referência enquanto trabalhamos em como aplicar a estrutura SDP a atribuições do Azure Policy que usam os efeitos de política deny ou append.

Observação

Para saber mais sobre os efeitos da política do Azure, confira Entender como os efeitos funcionam.

Flowchart with steps one through eight showing safe deployment practices deployment of a new Azure Policy definition.

Números da etapa do fluxograma:

  1. Depois de selecionar sua definição de política, atribua a política no escopo de nível mais alto, incluindo todos os anéis de implantação. Aplique seletores de recursos para restringir a aplicabilidade ao anel menos crítico usando a propriedade "kind": "resource location". Configure o tipo de efeito audit usando substituições de atribuição. Seletor de amostras com eastUSlocalização e efeito comoaudit:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "overrides":[{ 
      "kind": "policyEffect", 
      "value": "Audit" 
    }] 
    
  2. Depois que a atribuição for implantada e a verificação de conformidade inicial for concluída, valide se o resultado da conformidade é o esperado.

    Você também deve configurar testes automatizados que executam verificações de conformidade. Uma verificação de conformidade deve abranger a seguinte lógica:

    • Coletar resultados de conformidade
    • Se os resultados de conformidade forem os esperados, o pipeline deverá continuar
    • Se os resultados de conformidade não forem os esperados, o pipeline deverá falhar e você deverá iniciar a depuração

    Por exemplo, você pode configurar a verificação de conformidade usando outras ferramentas em seu pipeline específico de CI/CD (integração contínua/implantação contínua).

    Em cada estágio de distribuição, as verificações de integridade do aplicativo devem confirmar a estabilidade do serviço e o impacto da política. Se os resultados não forem os esperados devido à configuração do aplicativo, refatore o aplicativo conforme apropriado.

  3. Repita expandindo os valores de propriedade do seletor de recursos para incluir os próximos anéis. localizações e validação dos resultados de conformidade esperados e da integridade do aplicativo. Seletor de exemplo com um valor de local adicionado:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS", "westUS"] 
      }]
    }]
    
  4. Depois de atribuir com êxito a política a todos os anéis usando o modo audit, o pipeline deve disparar uma tarefa que altera o efeito de política para deny e redefinir os seletores de recursos para o local associado ao Anel 0. Seletor de exemplo com uma região e um efeito definidos para negar:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "overrides":[{ 
      "kind": "policyEffect", 
      "value": "Deny" 
    }] 
    
  5. Depois que o efeito for alterado, os testes automatizados devem verificar se a imposição está ocorrendo conforme o esperado.

  6. Repita incluindo mais anéis na configuração do seletor de recursos.

  7. Repita esse processo para todos os anéis de produção.

Etapas para a implantação segura de atribuições do Azure Policy com efeitos modify ou deployIfNotExists

As etapas para políticas que usam os efeitos modify ou deployIfNotExists são semelhantes às etapas explicadas anteriormente com a ação adicional de usar o modo de imposição e disparar uma tarefa de correção. Examine o fluxograma a seguir com as etapas modificadas 5 a 9:

Flowchart showing steps 5 through 9 in the Azure Policy safe deployment practices workflow.

Números da etapa do fluxograma:

  1. Depois de selecionar sua definição de política, atribua a política no escopo de nível mais alto, incluindo todos os anéis de implantação. Aplique seletores de recursos para restringir a aplicabilidade ao anel menos crítico usando a propriedade "kind": "resource location". Configure o modo de imposição da atribuição para DoNotEnforce. Seletor de exemplo com local eastUS e enforcementMode como DoNotEnforce:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "enforcementMode": "DoNotEnforce"
    
  2. Depois que a atribuição for implantada e a verificação de conformidade inicial for concluída, valide se o resultado da conformidade é o esperado.

    Você também deve configurar testes automatizados que executam verificações de conformidade. Uma verificação de conformidade deve abranger a seguinte lógica:

    • Coletar resultados de conformidade
    • Se os resultados de conformidade forem os esperados, o pipeline deverá continuar
    • Se os resultados de conformidade não forem os esperados, o pipeline deverá falhar e você deverá iniciar a depuração

    Você pode configurar a verificação de conformidade usando outras ferramentas em seu pipeline de CI/CD (integração contínua/implantação contínua).

    Em cada estágio de distribuição, as verificações de integridade do aplicativo devem confirmar a estabilidade do serviço e o impacto da política. Se os resultados não forem os esperados devido à configuração do aplicativo, refatore o aplicativo conforme apropriado.

    Você também pode disparar tarefas de correção para corrigir recursos não compatíveis existentes. Verifique se as tarefas de correção estão colocando recursos em conformidade conforme o esperado.

  3. Repita expandindo os valores das propriedades do seletor de recursos para incluir a localização dos próximos anéis e validando os resultados de conformidade esperados e a integridade do aplicativo. Seletor de exemplo com um valor de local adicionado:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS", "westUS"] 
      }]
    }]
    
  4. Depois de atribuir a política a todos os anéis com êxito usando o modo DoNotEnforce, o pipeline deve disparar uma tarefa que altera a política enforcementMode para habilitação padrão e redefinir os seletores de recursos para o local associado ao anel 0. Seletor de exemplo com uma região e um efeito definidos para negar:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "enforcementMode": "Default",
    
  5. Depois que o efeito for alterado, os testes automatizados devem verificar se a imposição está ocorrendo conforme o esperado.

  6. Repita incluindo mais anéis na configuração do seletor de recursos.

  7. Repita esse processo para todos os anéis de produção.

Próximas etapas