Adopción de límites de protección controlados por directivas

Antes de usar directivas, debe saber dónde se usan en las implementaciones de referencia de la zona de aterrizaje de Azure y porqué. Este artículo le ayudará a comprender si desea impedir que las directivas DeployIfNotExists (DINE) o Modify realicen cambios en el entorno de Azure.

¿Por qué usar las directivas DINE y Modify?

Las directivas DINE y Modify forman parte de las implementaciones de referencia de la zona de aterrizaje de Azure. Le ayudan a usted y a su organización a garantizar que las zonas de aterrizaje, que también se conocen como suscripciones, y los recursos que se encuentran en ellas sean compatibles. Estas directivas también eliminan la carga operativa de los equipos de plataforma y zona de aterrizaje a medida que se escala el entorno de Azure.

Por ejemplo, considere un escenario en el que se aprovisiona una nueva suscripción de zona de aterrizaje y se coloca en el grupo de administración "corp". Después, las directivas DINE y Modify llevan a cabo las siguientes acciones para la suscripción a la zona de aterrizaje:

  • Habilitar Microsoft Defender for Cloud. Configurar las exportaciones de Microsoft Defender for Cloud al área de trabajo central de Log Analytics en la suscripción de administración.
  • Habilitar Defender for Cloud para las distintas ofertas admitidas en función de los parámetros de directiva configurados en la asignación de directiva.
  • Configurar los registros de actividad de Azure que se enviarán al área de trabajo central de Log Analytics en la suscripción de administración.
  • Configurar la configuración de diagnóstico para todos los recursos que se enviarán al área de trabajo central de Log Analytics en la suscripción de administración.
  • Implementar los agentes de Azure Monitor necesarios para máquinas virtuales y Azure Virtual Machine Scale Sets, incluidos los servidores conectados de Azure Arc. Conectar al área de trabajo central de Log Analytics en la suscripción de administración.

Nota:

Puede deshabilitar las opciones anteriores en cualquier momento o durante la puesta en práctica de las implementaciones de referencia de la zona de aterrizaje de Azure.

En la lista anterior se muestra un subconjunto de todas las directivas que se asignan como parte del acelerador de zona de aterrizaje de Azure. Para obtener una lista completa de las directivas que se pueden asignar mediante la implementación de referencia de la zona de aterrizaje de Azure, consulte Directivas incluidas en las implementaciones de referencia de zonas de aterrizaje.

El repositorio de Bicep de zonas de aterrizaje de Azure es modular. Las directivas predeterminadas anteriores se pueden implementar con el módulo Asignaciones de directivas predeterminadas de ALZ.

Todas las directivas asignadas le ayudan a usted y a los propietarios de la zona de aterrizaje a seguir siendo compatibles. No se implementan recursos de carga de trabajo reales a través de las directivas DINE o Modify. Esta opción no se recomienda. Para más información, consulte ¿Debemos usar Azure Policy para implementar cargas de trabajo?. Solo los recursos o valores auxiliares o de apoyo se implementan o configuran mediante estas directivas DINE.

Las implementaciones de referencia de las zonas de aterrizaje de Azure usan directivas de Azure DINE para ayudarle a lograr una gobernanza controlada por directivas dentro de su entorno de Azure. Sin embargo, es posible que no pueda usar las directivas DINE o Modify o que no esté listo para habilitar este tipo de efecto de directiva de Azure debido a lo siguiente:

  • Directivas de cumplimiento normativo, estándares o restricciones legales.
  • Procesos estrictos de control de cambios, que requieren aprobación humana para cada acción dentro del entorno de Azure.
  • Falta de conocimientos, experiencia y comprensión sobre cómo administrar y usar las directivas DINE.
  • Los equipos de aplicaciones de carga de trabajo definen los requisitos de la organización de toda la configuración de recursos de carga de trabajo, incluidos los recursos auxiliares, los recursos de apoyo y la configuración, en la infraestructura como código (IaC).

Si se ajusta a los ejemplos anteriores o a escenarios similares, este artículo le ayudará a comprender cómo adoptar la arquitectura conceptual de la zona de aterrizaje de Azure y a cumplir sus principios de diseño. Aunque inicialmente no usará ciertas directivas, puede optar por habilitarlas gradualmente en el futuro. El objetivo es ayudarle a lograr una gobernanza controlada por directivas.

Importante

En este artículo, verá dos valores posibles que se usan para los términos del modo de cumplimiento:

  • Deshabilitado o DoNotEnforce
  • Habilitado o Predeterminado

Azure Portal usa Deshabilitado y Habilitado para el modo de cumplimiento. Las plantillas de Azure Resource Manager (ARM) y otras interfaces de API usan DoNotEnforce y Predeterminado para las mismas opciones.

Para más información, consulte Modo de cumplimiento.

Si todavía está seguro de que su organización no puede usar las directivas DINE o Modify, en este artículo se explica cómo evitar (también conocida como deshabilitación) que las directivas realicen cambios automáticos en el entorno de Azure.

Nota:

Esta operación no es permanente. Un miembro del equipo de la plataforma puede volver a habilitar las directivas en cualquier momento si posteriormente decide usar las directivas DINE o Modify.

Para obtener más información, consulte la fase 2 y la fase 3.

La compatibilidad con selectores de recursos también es aplicable a la gobernanza controlada por directivas para asegurarse de que se cumplen los procedimientos de implementación seguros (SDP). Los selectores de recursos proporcionan la funcionalidad de la implementación gradual de asignaciones de directivas en función de factores como la ubicación del recurso, el tipo de recurso o si el recurso tiene una ubicación. Puede encontrar más en este documento.

Introducción al enfoque

En el diagrama siguiente se resume el enfoque por fases sugerido:

Graphic that shows a DINE phases overview.

  1. Establezca el Modo de cumplimiento en DoNotEnforce en Asignaciones de directiva:
    • Con esta característica, puede modificar el comportamiento de las asignaciones para que se convierta realmente en una directiva de solo auditoría, sin modificar la definición de la directiva subyacente.
    • Este enfoque también le permite realizar tareas de corrección manual en recursos no compatibles mediante tareas de corrección, en caso de que lo desee.
  2. Establezca el Modo de cumplimiento en Default en Asignaciones de directivas para volver a habilitar la corrección automática de asignaciones de directivas DINE en un ámbito reducido:
    • Puede optar por usar un entorno completo, por ejemplo, el grupo de administración de espacio aislado.
    • O bien, puede usar una suscripción de carga de trabajo no crítica.
  3. Establezca el Modo de cumplimiento en Default en Asignaciones de directiva en las directivas DINE restantes en todo el entorno de Azure.

Debido a las restricciones de cumplimiento normativo, algunos clientes nunca pueden pasar de la fase 1. Esto no es un problema y se admite la permanencia en este estado, si es necesario. Otros clientes puedan avanzar a las fases 2 y 3 para adoptar completamente las directivas DINE y Modify para ayudar con la gobernanza controlada por directivas para su entorno de Azure.

Nota:

El escenario y enfoque descritos en este artículo no están pensados ni recomendados para la mayoría de los clientes. Revise la sección ¿Por qué usar las directivas DINE y Modify? antes de decidir si estas directivas son adecuadas y necesarias para su entorno.

Fase 1: Deshabilitación de las acciones automatizadas de las directivas DINE y Modify

Al asignar una directiva, se aplicará de manera predeterminada el efecto definido en la definición de directiva. Se recomienda dejar la definición de directiva tal y como está. Por ejemplo, deje el efecto de asignación de directiva como DeployIfNotExists.

En lugar de cambiar la definición de la directiva o su efecto, puede influir en este comportamiento con un esfuerzo mínimo mediante el uso de la característica en las asignaciones de directivas.

Uso de Azure Portal para establecer el modo de cumplimiento en Deshabilitado

En esta captura de pantalla se muestra cómo usar Azure Portal para establecer el modo de cumplimiento en Deshabilitado en una asignación de directiva. Deshabilitado también se conoce como DoNotEnforce.

Set the enforcement mode to Disabled in the Azure portal.

Uso de la plantilla de ARM para establecer el modo de cumplimiento en DoNotEnforce

En este ejemplo de código se muestra cómo usar una plantilla de ARM para establecer enforcementMode en DoNotEnforce en una asignación de directiva. DoNotEnforce también se conoce como Disabled.

{
  "type": "Microsoft.Authorization/policyAssignments",
  "apiVersion": "2019-09-01",
  "name": "PolicyAssignmentName",
  "location": "[deployment().location]",
  "properties": {
    "description": "PolicyAssignmentDescription",
    "policyDefinitionId": "[parameters('policyDefinitionId')]",
    "enforcementMode": "DoNotEnforce"
    … // other properties removed for display purposes
  }
}

Al usar el Modo de cumplimiento, puede ver el efecto de una directiva en los recursos existentes sin necesidad de iniciarla ni de desencadenar entradas en el registro de actividad de Azure. Este escenario se conoce comúnmente como "What If" y se alinea con las prácticas de implementación segura.

Incluso cuando el modo de cumplimiento está establecido en DoNotEnforce, las tareas de corrección se pueden desencadenar manualmente. Puede corregir recursos no compatibles específicos. También puede ver lo que habría hecho la directiva DINE o Modify si el modo de cumplimiento se hubiera establecido en Default.

Importante

Cuando el modo de cumplimiento está establecido en DoNotEnforce, no se generan entradas en el registro de actividad de Azure. Tenga en cuenta este factor si desea recibir una notificación cuando se cree un recurso no compatible.

Permanencia en el estado de fase 1 de forma permanentemente

Como se mencionó en la sección Información general del enfoque, es posible que algunos clientes deban permanecer en la fase 1 durante un largo período o incluso de forma permanente debido a sus requisitos. Este estado es válido y los clientes pueden permanecer en él durante cualquier período de tiempo.

Quizás necesite permanecer en este estado de forma permanente o durante un largo período, como años. En ese caso, puede que sea mejor que adopte el efecto de directiva AuditIfNotExists (AINE) y las definiciones asociadas, y que vuelva a establecer el modo de cumplimiento en Default.

Nota:

Al cambiar para usar una directiva AINE y establecer el Modo de cumplimiento en Default, seguirá logrando el mismo objetivo de deshabilitar DINE.

Al cambiar de DINE a AINE y volver a establecer el modo de cumplimiento en Default como un enfoque a largo plazo o permanente para la fase 1, recuperará las entradas del registro de actividad de Azure para los estados de cumplimiento de directivas. Puede compilar flujos de trabajo de automatización a partir de estas entradas de registro en las operaciones generales de administración de la plataforma.

Perderá la capacidad de realizar tareas de corrección manual. A diferencia de las directivas DINE, las directivas AINE no realizan ninguna implementación, ya sea automatizada o manual.

No olvide actualizar la definición de directiva para aceptar y permitir el efecto de asignación de directiva AuditIfNotExists.

En la tabla siguiente se resumen las opciones y consecuencias para la combinación de los distintos tipos de efectos de directiva y modo de cumplimiento:

Efecto de la directiva Modo de cumplimiento Entrada de registro de actividad Acción correctiva
DINE Habilitado o Predeterminado Corrección desencadenada por la plataforma en el examen después de la creación o actualización de recursos. Se requiere la creación manual de una tarea de corrección si el recurso dependiente se modifica o ya existe antes de la asignación de directiva.
DINE Deshabilitado o DoNotEnforce No Se requiere la creación manual de una tarea de corrección.
Modificar Habilitado o Predeterminado Corrección automática durante la creación o actualización.
Modificar Deshabilitado o DoNotEnforce No Se requiere la creación manual de una tarea de corrección.
Denegar Habilitado o Predeterminado Creación o actualización denegadas.
Denegar Deshabilitado o DoNotEnforce No Creación o actualización permitidas. Se requiere una corrección manual.
Audit/AINE Habilitado o Predeterminado Se requiere una corrección manual.
Audit/AINE Deshabilitado o DoNotEnforce No Se requiere una corrección manual.

Nota:

Revise las instrucciones de Reacción a los eventos de cambio de estado de Azure Policy para saber si el uso de la integración de Azure Event Grid en Azure Policy ofrece un enfoque adecuado si planea crear su propia automatización basada en eventos de estado de directiva.

Fase 2: Habilitación de las directivas DINE y Modify en una directiva específica o un ámbito reducido

En esta fase, aprenderá a establecer el modo de cumplimiento en Default en las asignaciones de directivas.

Después de haber completado la fase 1, decide que quiere probar todas las funcionalidades de automatización de las directivas DINE y Modify en una directiva específica o en un ámbito reducido. Quiere usar el grupo de administración de espacio aislado o una suscripción de carga de trabajo que no es de producción.

Para realizar este procedimiento, primero tendrá que identificar la directiva o el ámbito reducido que se usarán para probar y comprobar las funcionalidades de automatización completa de las directivas DINE y Modify.

Nota:

Es posible que quiera revisar e implementar un enfoque de pruebas para una plataforma de escala empresarial. De esta manera, puede probar las directivas y otros cambios de plataforma en una jerarquía de grupos de administración separada dentro del mismo inquilino.

Este enfoque también se conoce como una implementación de "valor controlado".

En la tabla siguiente se muestran algunos ejemplos sugeridos de ámbitos y directivas:

Si desea... … elija uno de estos ámbitos Directivas de ejemplo para usar
- Probar las funcionalidades de corrección automatizada de DINE/Modify.
- Comprobar cómo pueden verse afectados los procesos de implementación completos y las canalizaciones de CI/CD (incluidas las pruebas).
- Comprobar cómo puede verse afectada la carga de trabajo.
- Suscripción a espacio aislado
- Grupo de administración de espacio aislado
- Suscripción a zona de aterrizaje de cargas de trabajo que no son de producción
- Entorno de "valor controlado" a escala empresarial
- Configure registros de actividad de Azure para transmitirlos al área de trabajo especificada de Log Analytics.
- Implemente la configuración de Defender for Cloud.
- Habilite Azure Monitor para VM o Virtual Machine Scale Sets.
- Implemente la configuración diagnóstico en los servicios de Azure.
- Posiblemente solo se habilite para servicios específicos dentro de la iniciativa.

También puede decidir usar una tarea de corrección manual en un ámbito o conjunto limitado de recursos para probar cómo afectarán estas directivas a su entorno. Para obtener más información sobre cómo crear una tarea de corrección, vea la documentación de Azure Policy Creación de una tarea de corrección.

Después de identificar una directiva, o directivas, y el ámbito reducido para asignarlas, el siguiente paso es asignar la directiva y establecer el modo de cumplimiento en Default. Deje el efecto de la directiva, por ejemplo, DeployIfNotExists o Modify, tal como está en el ámbito reducido que ha seleccionado.

Uso de Azure Portal para establecer el modo de cumplimiento en Habilitado

En esta captura de pantalla se muestra cómo usar Azure Portal para establecer el modo de cumplimiento en Habilitado en una asignación de directiva. Habilitado también se conoce como Predeterminado.

Screenshot that shows setting the enforcement mode to Enabled in the Azure portal.

Uso de una plantilla de ARM para establecer el modo de cumplimiento en Predeterminado

En este ejemplo de código se muestra cómo usar una plantilla de ARM para establecer enforcementMode en Default en una asignación de directiva. Default también se conoce como Enabled.

{
  "type": "Microsoft.Authorization/policyAssignments",
  "apiVersion": "2019-09-01",
  "name": "PolicyAssignmentName",
  "location": "[deployment().location]",
  "properties": {
    "description": "PolicyAssignmentDescription",
    "policyDefinitionId": "[parameters('policyDefinitionId')]",
    "enforcementMode": "Default"
    … // other properties removed for display purposes
  }
}

Prueba

El último paso de esta fase es realizar las pruebas necesarias. Debe comprobar si las directivas DINE o Modify pueden haber afectado a las cargas de trabajo, el código, las herramientas y los procesos y si han realizado cambios en estos elementos.

Realice varias pruebas para capturar todo el ciclo de vida de la carga de trabajo. Debe asegurarse de que comprende totalmente si las directivas DINE o Modify realizaron cambios y cómo lo hicieron.

Algunos ejemplos de pruebas son:

  • Implementación inicial de la carga de trabajo.
  • Implementación de código o aplicación en la carga de trabajo.
  • Operaciones del día 2 y administración de la carga de trabajo.
  • Retirada de la carga de trabajo.

Fase 3: Habilitación de las directivas DINE y Modify en todas partes

En esta fase, aprenderá a establecer el modo de cumplimiento en Default en las asignaciones de directivas.

Se supone que las pruebas al final de la fase 2 se realizaron correctamente. O bien, quizás esté satisfecho de que ahora comprende cómo interactúan las directivas DINE o Modify con la carga de trabajo. Ahora puede expandir el uso de las directivas DINE y Modify en el resto del entorno de Azure.

Para continuar, siga los pasos que son similares a los pasos de la fase 2. Esta vez, establecerá el modo de cumplimiento en Default en todas las asignaciones de directivas DINE y Modify en todo el entorno de Azure.

Esta es una introducción de alto nivel de los pasos que se hacen en esta fase:

  • Quite las asignaciones usadas específicamente para las pruebas durante la fase 2.
  • Repase cada asignación de directiva DINE y Modify en el entorno de Azure y establezca el modo de cumplimiento en Default. Este proceso se muestra en los ejemplos de la fase 2.
  • Cree tareas de corrección para los recursos existentes que no sean compatibles siguiendo las instrucciones que se indican aquí en Creación de una tarea de corrección. Los nuevos recursos se corregirán automáticamente si coinciden con las reglas de la directiva y las condiciones de existencia.

Aunque en la fase 3 se recomienda establecer el modo de cumplimiento en Default para todas las directivas DINE y Modify en el entorno de Azure, esta opción sigue siendo opcional. Puede elegir esta opción por directiva para satisfacer sus necesidades y requisitos.

Administración avanzada de directivas

Para la administración avanzada de Azure Policy a gran escala, considere la posibilidad de implementar Enterprise Policy as Code (EPAC) para administrar la directiva. EPAC proporciona una experiencia de administración con estado que usa IaC. Por lo general, se adapta a grandes escenarios de administración de directivas con requisitos complejos.