Partilhar via


Implementação segura de atribuições de Política do Azure

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

A abordagem de alto nível da implementação do SDP com a Política do Azure é implantar gradualmente as atribuições de política por anéis para detetar alterações de política que afetam o ambiente nos estágios iniciais, antes que 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, com o Anel 0 representando locais não críticos e de baixo tráfego e o Anel 5 indicando os locais mais críticos e de maior tráfego.

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

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

Nota

Para saber mais sobre os efeitos de política do Azure, consulte Compreender como os efeitos funcionam.

Fluxograma com as etapas um a oito mostrando práticas de implantação seguras de uma nova definição de Política do Azure.

Números das etapas 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 "kind": "resource location" propriedade. Configure o audit tipo de efeito usando substituições de atribuição. Seletor de amostras com eastUS localização e efeito como audit:

    "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 está conforme o esperado.

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

    • Reunir resultados de conformidade
    • Se os resultados de conformidade forem os esperados, o pipeline deve continuar
    • Se os resultados de conformidade não forem os esperados, o pipeline deve falhar e você deve começar a depuração

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

    Em cada etapa de implantaçã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. e validação dos resultados esperados de conformidade e integridade do aplicativo. Exemplo de seletor com um valor de localização 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 audit o modo, o pipeline deve acionar uma tarefa que altere o efeito da política e deny redefina 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. Uma vez que o efeito é alterado, os testes automatizados devem verificar se a aplicação está ocorrendo conforme o esperado.

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

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

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

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

Fluxograma mostrando as etapas 5 a 9 no fluxo de trabalho de práticas de implantação segura da Política do Azure.

Números das etapas 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 "kind": "resource location" propriedade. Configure o modo de imposição da atribuição para DoNotEnforce. Seletor de exemplo com eastUS location 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 está conforme o esperado.

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

    • Reunir resultados de conformidade
    • Se os resultados de conformidade forem os esperados, o pipeline deve continuar
    • Se os resultados de conformidade não forem os esperados, o pipeline deve falhar e você deve começar a depuração

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

    Em cada etapa de implantaçã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 acionar tarefas de correção para corrigir recursos não compatíveis existentes. Certifique-se de que as tarefas de remediação estão colocando os recursos em conformidade conforme o esperado.

  3. Repita expandindo os valores de propriedade do seletor de recursos para incluir os locais do próximo anel e validando os resultados de conformidade esperados e a integridade do aplicativo. Exemplo de seletor com um valor de localização 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 DoNotEnforce , o pipeline deve acionar uma tarefa que altera a política enforcementMode para Ativaçã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. Uma vez que o efeito é alterado, os testes automatizados devem verificar se a aplicação está ocorrendo conforme o esperado.

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

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

Etapas para atualizar com segurança a versão de definição interna na atribuição de Política do Azure

  1. Dentro da atribuição existente, aplique substituições para atualizar a versão da definição para o anel menos crítico. Estamos usando uma combinação de substituições para alterar a definiçãoVersion e seletores dentro da condição de substituições para restringir a aplicabilidade por "kind": "resource location" propriedade. Todos os recursos que estiverem fora dos locais especificados continuarão a ser avaliados em relação à versão da definitionVersion propriedade de nível superior na atribuição. Exemplo substituir a atualização da versão da definição para 2.0.* e aplicá-la apenas aos recursos no EastUs.

    "overrides":[{ 
      "kind": "definitionVersion", 
      "value": "2.0.*",
      "selectors": [{
        "kind": "resourceLocation",
        "in": [ "eastus"]
      }]
    }] 
    
  2. Depois que a atribuição for atualizada e a verificação de conformidade inicial for concluída, valide se o resultado da conformidade está conforme o esperado.

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

    • Reunir resultados de conformidade
    • Se os resultados de conformidade forem os esperados, o pipeline deve continuar
    • Se os resultados de conformidade não forem os esperados, o pipeline deve falhar e você deve começar a depuração

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

    Em cada etapa de implantaçã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. e validação dos resultados esperados de conformidade e integridade do aplicativo. Exemplo com um valor de localização acrescentado:

     "overrides":[{ 
      "kind": "definitionVersion", 
      "value": "2.0",
      "selectors": [{
        "kind": "resourceLocation",
        "in": [ "eastus", "westus"]
      }]
    }] 
    
  4. Depois de incluir com êxito todos os locais necessários no _selectors, você pode remover a substituição e atualizar a propriedade definitionVersion dentro da atribuição:

"properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "definitionVersion": "2.0.*",
}

Próximos passos