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 implementar gradualmente asignaciones de directivas por anillos para detectar cambios de directiva que afectan al entorno en las primeras fases antes de que afecte a la infraestructura de 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 Anillo 0 que representan ubicaciones de tráfico no críticas, bajas y Anillo 5 denotar las ubicaciones de tráfico más críticas y más altas.
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.
Números de paso del diagrama de flujo:
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 efectoaudit
mediante invalidaciones de asignación. Selector de muestra con ubicacióneastUS
y efecto comoaudit
:"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "overrides":[{ "kind": "policyEffect", "value": "Audit" }]
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.
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"] }] }]
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 adeny
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" }]
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.
Repita el proceso mediante la inclusión de más anillos en la configuración del selector de recursos.
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:
Números de paso del diagrama de flujo:
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óneastUS
y el valor enforcementMode establecido en DoNotEnforce:"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "enforcementMode": "DoNotEnforce"
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.
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"] }] }]
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",
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.
Repita el proceso mediante la inclusión de más anillos en la configuración del selector de recursos.
Repita este proceso para todos los anillos de producción.
Pasos para actualizar de forma segura la versión de definición integrada en la asignación de Azure Policy
Dentro de la asignación existente, aplique invalide para actualizar la versión de la definición para el anillo menos crítico. Usamos una combinación de invalidaciones para cambiar los selectores definitionVersion y dentro de la invalida condición para restringir la aplicabilidad por
"kind": "resource location"
propiedad. Los recursos que están fuera de las ubicaciones especificadas seguirán siendo evaluados con respecto a la versión de ladefinitionVersion
propiedad de nivel superior de la asignación. Ejemplo de invalidación de la actualización de la versión de la definición a2.0.*
y aplicación solo a los recursos deEastUs
."overrides":[{ "kind": "definitionVersion", "value": "2.0.*", "selectors": [{ "kind": "resourceLocation", "in": [ "eastus"] }] }]
Una vez que se actualiza la asignación y se ha completado el examen de cumplimiento inicial, valide 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.
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. Ejemplo con un valor de ubicación agregado:
"overrides":[{ "kind": "definitionVersion", "value": "2.0", "selectors": [{ "kind": "resourceLocation", "in": [ "eastus", "westus"] }] }]
Una vez que haya incluido correctamente todas las ubicaciones necesarias dentro del _selectores, puede quitar la invalidación y actualizar la propiedad definitionVersion dentro de la asignación:
"properties": {
"displayName": "Enforce resource naming rules",
"description": "Force resource names to begin with DeptA and end with -LC",
"definitionVersion": "2.0.*",
}
Pasos siguientes
- Obtenga información acerca de cómo crear directivas mediante programación.
- Revisión de Azure Policy como flujos de trabajo de código.
- Estudie las instrucciones de Microsoft sobre los procedimientos de implementación seguros.
- Consulte Corregir los recursos no conformes con Azure Policy.