Implementación segura de asignaciones de Azure Policy

A medida que se expande el entorno, también aumenta la demanda de una canalización de implementación continua (CD) controlada con control de exposición progresiva. En consecuencia, Microsoft recomienda que los equipos de DevOps sigan el marco de procedimientos de implementación seguros (SDP). La implementación segura de las definiciones y asignaciones de Azure Policy ayuda a limitar el impacto de los comportamientos no deseados en los recursos de directiva.

El enfoque de alto nivel de implementación de SDP con Azure Policy consiste en el lanzamiento de asignaciones de directivas gradual mediante anillos para detectar cambios de directiva que afecten al entorno en las fases tempranas, antes de que afecten a la infraestructura en la nube crítica.

Los anillos de implementación se pueden organizar de diversas maneras. En este tutorial de procedimientos, los anillos se dividen entre diferentes regiones de Azure, con el Anillo 0 representando ubicaciones no críticas de tráfico bajo y el Anillo 5 las ubicaciones más críticas y de tráfico más alto.

Pasos para la implementación segura de asignaciones de Azure Policy con efectos de denegación o anexión

Use el siguiente diagrama de flujo como referencia a medida que trabajamos en cómo aplicar el marco de SDP a las asignaciones de Azure Policy que usan los efectos de directiva deny o append.

Nota

Para más información sobre los efectos de directiva de Azure, consulte Descripción del funcionamiento de los efectos.

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

Números de paso del diagrama de flujo:

  1. Una vez seleccionada la definición de la directiva, asigne la directiva en el ámbito de nivel más alto, incluidos todos los anillos de implementación. Aplique los selectores de recursos para restringir la aplicabilidad al anillo menos crítico mediante la propiedad "kind": "resource location". Configure el tipo de efecto audit mediante invalidaciones de asignación. Selector de muestra con ubicación eastUS y efecto como audit:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "overrides":[{ 
      "kind": "policyEffect", 
      "value": "Audit" 
    }] 
    
  2. Una vez implementada la asignación y completado el examen de cumplimiento inicial, compruebe que el resultado de cumplimiento sea el esperado.

    También debe configurar pruebas automatizadas que ejecuten comprobaciones de cumplimiento. Una comprobación de cumplimiento debe abarcar la siguiente lógica:

    • Recopilación de los resultados de cumplimiento
    • Si los resultados de cumplimiento son los esperados, la canalización debe continuar.
    • Si los resultados de cumplimiento no son los esperados, la canalización producirá un error y debe iniciar la depuración.

    Por ejemplo, puede configurar la comprobación de cumplimiento mediante otras herramientas dentro de su canalización de integración continua o implementación continua (CI/CD) particular.

    En cada fase del lanzamiento, las comprobaciones de estado de la aplicación deben confirmar la estabilidad del servicio y el impacto de la directiva. Si los resultados no son los esperados debido a la configuración de la aplicación, refactorice la aplicación según corresponda.

  3. Repita el proceso con la expansión de los valores de propiedad del selector de recursos para incluir las ubicaciones de los anillos siguientes y la validación de los resultados de cumplimiento y del estado de la aplicación esperados. Selector de ejemplo con un valor de ubicación agregado:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS", "westUS"] 
      }]
    }]
    
  4. Una vez que haya asignado correctamente la directiva a todos los anillos mediante el modo audit, la canalización debe desencadenar una tarea que cambie el efecto de directiva a deny y restablezca los selectores de recursos a la ubicación asociada al Anillo 0. Selector de muestra con una región y un efecto establecidos en denegar:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "overrides":[{ 
      "kind": "policyEffect", 
      "value": "Deny" 
    }] 
    
  5. Una vez que se cambia el efecto, las pruebas automatizadas deben comprobar si la aplicación se está llevando a cabo según lo previsto.

  6. Repita el proceso mediante la inclusión de más anillos en la configuración del selector de recursos.

  7. Repita este proceso para todos los anillos de producción.

Pasos para la implementación segura de asignaciones de Azure Policy con los efectos modify o deployIfNotExists

Los pasos para las directivas que usan los efectos modify o deployIfNotExists son similares a los explicados anteriormente, con la acción adicional de usar el modo de cumplimiento y desencadenar una tarea de corrección. Revise el siguiente diagrama de flujo con los pasos modificados del 5 al 9:

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

Números de paso del diagrama de flujo:

  1. Una vez seleccionada la definición de la directiva, asigne la directiva en el ámbito de nivel más alto, incluidos todos los anillos de implementación. Aplique los selectores de recursos para restringir la aplicabilidad al anillo menos crítico mediante la propiedad "kind": "resource location". Configure el modo de cumplimiento de la asignación como DoNotEnforce. Selector de ejemplo con la ubicación eastUS y el valor enforcementMode establecido en DoNotEnforce:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "enforcementMode": "DoNotEnforce"
    
  2. Una vez implementada la asignación y completado el examen de cumplimiento inicial, compruebe que el resultado de cumplimiento sea el esperado.

    También debe configurar pruebas automatizadas que ejecuten comprobaciones de cumplimiento. Una comprobación de cumplimiento debe abarcar la siguiente lógica:

    • Recopilación de los resultados de cumplimiento
    • Si los resultados de cumplimiento son los esperados, la canalización debe continuar.
    • Si los resultados de cumplimiento no son los esperados, la canalización producirá un error y debe iniciar la depuración.

    Puede configurar la comprobación de cumplimiento mediante otras herramientas dentro de su canalización de integración continua y entrega continua (CI/CD).

    En cada fase del lanzamiento, las comprobaciones de estado de la aplicación deben confirmar la estabilidad del servicio y el impacto de la directiva. Si los resultados no son los esperados debido a la configuración de la aplicación, refactorice la aplicación según corresponda.

    También puede desencadenar tareas de corrección para corregir los recursos existentes no conformes. Asegúrese de que las tareas de corrección hagan que los recursos se ajusten al cumplimiento según lo previsto.

  3. Repita mediante la expansión de los valores de propiedad del selector de recursos para incluir las ubicaciones de los anillos siguientes y validar los resultados de cumplimiento y el estado de la aplicación esperados. Selector de ejemplo con un valor de ubicación agregado:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS", "westUS"] 
      }]
    }]
    
  4. Una vez que haya asignado la directiva correctamente a todos los anillos mediante el modo DoNotEnforce, la canalización debe desencadenar una tarea que cambie el valor de la directiva enforcementMode a Default y restablezca los selectores de recursos a la ubicación asociada al Anillo 0. Selector de muestra con una región y un efecto establecidos en denegar:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "enforcementMode": "Default",
    
  5. Una vez que se cambia el efecto, las pruebas automatizadas deben comprobar si la aplicación se está llevando a cabo según lo previsto.

  6. Repita el proceso mediante la inclusión de más anillos en la configuración del selector de recursos.

  7. Repita este proceso para todos los anillos de producción.

Pasos siguientes