Corregir los recursos no conformes con Azure Policy

Los recursos que no se ajustan a directivas con efectos deployIfNotExists o modify se pueden colocar en estado de cumplimiento mediante la funcionalidad de corrección. La corrección se consigue mediante tareas de corrección que implementan la plantilla deployIfNotExists o las operaciones modify de la directiva asignada en los recursos y suscripciones existentes, tanto si esa asignación está en un grupo de administración, una suscripción, un grupo de recursos o un solo recurso. En este artículo se muestran los pasos necesarios para comprender y realizar correcciones con Azure Policy.

Funcionamiento del control de acceso a la corrección

Cuando Azure Policy inicia una implementación de plantilla al evaluar directivas deployIfNotExists o modifica un recurso al evaluar directivas modify, lo hace mediante una identidad administrada asociada a la asignación de directiva. Las asignaciones de directivas usan identidades administradas para la autorización de recursos de Azure. Puede usar una identidad administrada asignada por el sistema que crea el servicio de directivas o una identidad asignada por el usuario que proporciona el usuario. Es necesario asignar a la identidad gestionada la(s) función(es) mínima(s) de control de acceso basado en roles (RBAC) necesaria(s) para remediar los recursos. Si faltan roles en la identidad administrada, se muestra un error durante la asignación de la directiva o una iniciativa. Al usar el portal, Azure Policy concede automáticamente a la identidad administrada los roles enumerados cuando se inicia la asignación. Al usar un kit de desarrollo de software (SDK) de Azure, los roles se deben conceder manualmente a la identidad administrada. La propiedad location de la identidad administrada no afecta a su funcionamiento con Azure Policy.

Nota

Al cambiar una definición de directiva no se actualiza automáticamente la asignación ni la identidad administrada asociada.

La seguridad de corrección se puede configurar mediante los pasos siguientes:

Configuración de la definición de directiva

Como requisito previo, la definición de directiva debe definir los roles que deployIfNotExists y modify necesitan para implementar correctamente el contenido de la plantilla incluida. No se requiere ninguna acción para una definición de directiva integrada porque estos roles se rellenan previamente. Para una definición de directiva personalizada, en la propiedad details, agregue una propiedad roleDefinitionIds. Esta propiedad es una matriz de cadenas que coinciden con los roles de su entorno. Para consultar un ejemplo completo, vea el ejemplo de deployIfNotExists o los ejemplos de modify.

"details": {
    ...
    "roleDefinitionIds": [
        "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
        "/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
    ]
}

La propiedad roleDefinitionIds utiliza el identificador de recurso completo y no toma el valor roleName corto del rol. Para obtener el identificador del rol «Colaborador» en su entorno, use el siguiente código CLI de Azure:

az role definition list --name "Contributor"

Importante

Los permisos deben restringirse al menor conjunto posible al definir roleDefinitionIds dentro de una definición de directiva o asignar permisos a una identidad administrada manualmente. Consulte las recomendaciones de procedimientos recomendados de identidad administrada para más procedimientos recomendados.

Configuración de la identidad administrada

Cada asignación de Azure Policy solo se puede asociar a una identidad administrada. Sin embargo, a la identidad administrada se le pueden asignar varios roles. La configuración tiene lugar en dos pasos: primero cree una identidad administrada asignada por el sistema o asignada por el usuario y, luego, concédale los roles necesarios.

Nota

Al crear una identidad administrada mediante el portal, se concederán roles automáticamente a la identidad administrada. Si roleDefinitionIds se edita más adelante en la definición de directiva, se deben conceder manualmente los nuevos permisos, incluso en el portal.

Creación de la identidad administrada

Al crear una asignación mediante el portal, Azure Policy puede generar una identidad administrada asignada por el sistema y concederle los roles definidos en el valor roleDefinitionIds de la definición de directiva. Como alternativa, puede especificar una identidad administrada asignada por el usuario que reciba la misma asignación de roles.

Captura de pantalla de una asignación de directiva que crea una identidad administrada asignada por el sistema en la región Este de EE. UU. con permisos de colaborador de Log Analytics.

Para establecer una identidad administrada asignada por el sistema en el portal, haga lo siguiente:

  1. En la pestaña Corrección de la vista de asignación de creación o edición, en Types of Managed Identity (Tipos de identidad administrada), asegúrese de que la opción Identidad administrada asignada por el sistema está seleccionada.

  2. Especifique la ubicación en la que se va a ubicar la identidad administrada.

Para establecer una identidad administrada asignada por el usuario en el portal, haga lo siguiente:

  1. En la pestaña Corrección de la vista de asignación de creación o edición, en Types of Managed Identity (Tipos de identidad administrada), asegúrese de que la opción Identidad administrada asignada por el usuario está seleccionada.

  2. Especifique el ámbito donde se hospeda la identidad administrada. El ámbito de la identidad administrada no tiene que ser igual al ámbito de la asignación, pero debe estar en el mismo inquilino.

  3. En Existing user assigned identities (Identidades asignadas por el usuario existentes), seleccione la identidad administrada.

Concesión de permisos a la identidad administrada mediante roles definidos

Importante

Si la identidad administrada no tiene los permisos necesarios para ejecutar la tarea de corrección necesaria, solo se le concederán permisos automáticamente mediante el portal. Puede omitir este paso si crea una identidad administrada mediante el portal.

Para todos los demás métodos, la identidad administrada de la asignación debe concederse acceso manualmente mediante la adición de roles o, de lo contrario, se producirá un error en la implementación de corrección.

Escenarios de ejemplo que requieren permisos manuales:

  • Si la asignación se crea mediante el SDK.
  • Si un recurso que haya modificado el valor deployIfNotExists o modify está fuera del ámbito de la asignación de directiva.
  • Si la plantilla obtiene acceso a las propiedades de los recursos fuera del ámbito de la asignación de directiva.

Hay dos maneras de conceder los roles definidos a la identidad administrada de una asignación: mediante Control de acceso (IAM) o editando la asignación de directiva o iniciativa y seleccionando Guardar.

Para agregar un rol a la identidad administrada de la asignación, siga estos pasos:

  1. Inicie el servicio Azure Policy en Azure Portal. Para ello, seleccione Todos los servicios y, a continuación, busque y seleccione Directiva.

  2. Seleccione Asignaciones en el panel izquierdo de la página de Azure Policy.

  3. Busque la asignación que tiene una identidad administrada y seleccione el nombre.

  4. Busque la propiedad Id. de asignación en la página Editar. El identificador de asignación será algo como:

    /subscriptions/{subscriptionId}/resourceGroups/PolicyTarget/providers/Microsoft.Authorization/policyAssignments/2802056bfc094dfb95d4d7a5
    

    El nombre de la identidad administrada es la última parte del identificador del recurso de asignación, que es 2802056bfc094dfb95d4d7a5 en este ejemplo. Copie esta parte del identificador de recursos de asignación.

  5. Navegue hasta el contenedor primario del recurso o recursos (grupo de recursos, suscripción, grupo de administración) al que se debe agregar manualmente la definición de función.

  6. Seleccione el vínculo Control de acceso (IAM) en la página de recursos y luego + Agregar asignación de rol en la parte superior de la página de control de acceso.

  7. Seleccione el rol adecuado que coincide con un valor roleDefinitionIds de la definición de directiva. Deje Asignar acceso a con el valor predeterminado de “Usuario de Azure AD, grupo o aplicación”. En el cuadro Seleccionar, pegue o escriba la parte del identificador del recurso de asignación que buscó anteriormente. Una vez finalizada la búsqueda, seleccione el objeto con el mismo nombre que el identificador seleccionado y elija Guardar.

Crear una tarea de corrección

Inicie el servicio Azure Policy en Azure Portal. Para ello, seleccione Todos los servicios y, a continuación, busque y seleccione Directiva.

Captura de pantalla de búsqueda de Directiva en Todos los servicios.

Paso 1: Inicio de la creación de tareas de corrección

Hay tres maneras de crear una tarea de corrección mediante el portal.

Opción 1: Crear una tarea de corrección desde la página Corrección

  1. Seleccione Corrección en el lado izquierdo de la página Azure Policy.

    Captura de pantalla del nodo Corrección en la página Directiva.

  2. Todas las asignaciones de directivas deployIfNotExists y modify se muestran en la pestaña Directivas para corregir. Seleccione uno con los recursos que no son compatibles para abrir la página Nueva tarea de corrección.

  3. Siga los pasos para especificar los detalles de la tarea de corrección.

Opción 2: Crear una tarea de corrección a partir de una asignación de directiva no compatible

  1. Seleccione Cumplimiento en el panel izquierdo de la página de Azure Policy.

  2. Seleccione una asignación de iniciativa o directiva no compatible que contenga los efectos deployIfNotExists o modify.

  3. Seleccione el botón Crear tarea de corrección en la parte superior de la página para abrir la página Nueva tarea de corrección.

  4. Siga los pasos para especificar los detalles de la tarea de corrección.

Opción 3: Crear una tarea de corrección durante la asignación de directiva

Si la definición de directiva o iniciativa que se va a asignar tiene un efecto deployIfNotExists o Modify, la pestaña Corrección del asistente ofrece una opción Crear una tarea de corrección, que crea una tarea de corrección al mismo tiempo que la asignación de directiva.

Nota

Este es el enfoque más simplificado para crear una tarea de corrección y es compatible con las directivas asignadas en una suscripción. En el caso de las directivas asignadas en un grupo de administración, las tareas de corrección se deben crear mediante la opción 1 o la opción 2 después de que la evaluación haya determinado el cumplimiento de los recursos.

  1. En el Asistente para asignaciones del portal, vaya a la pestaña Corrección y active la casilla Crear una tarea de corrección.

  2. Si la tarea de corrección se inicia desde una asignación de iniciativa, seleccione la directiva que se va a corregir en la lista desplegable.

  3. Configure la identidad administrada y rellene el resto del asistente. La tarea de corrección se creará cuando se cree la asignación.

Paso 2: Especificación de los detalles de la tarea de corrección

Este paso solo es aplicable cuando se usa la opción 1 o la opción 2 para iniciar la creación de tareas de corrección.

  1. Si la tarea de corrección se inicia desde una asignación de iniciativa, seleccione la directiva que se va a corregir en la lista desplegable. Se puede corregir una directiva deployIfNotExists o modify mediante una sola tarea de corrección a la vez.

  2. Opcionalmente, modifique la configuración de corrección en la página Nueva tarea de corrección:

    • Failure Threshold percentage (Porcentaje de umbral de error): se usa para especificar si se debe producir un error en la tarea de corrección si el porcentaje de errores supera el umbral especificado. Se proporciona como un número entre 0 y 100. De manera predeterminada, el umbral de error es 100 %.
    • Recuento de recursos: determina cuántos recursos no compatibles se corregirán en una tarea de corrección determinada. El valor predeterminado es 500 (el límite anterior). El número máximo de recursos es de 50 000.
    • Parallel Deployments (Implementaciones en paralelo): determina cuántos recursos se corregirán al mismo tiempo. Los valores permitidos son de 1 a 30 recursos a la vez. El valor predeterminado es 10.

    Nota

    Esta configuración no se puede cambiar una vez iniciada la tarea de corrección.

  3. En la misma página, filtre los recursos que se corregirán mediante la elipse Ámbito para escoger los recursos secundarios a partir de los cuales se asignó la directiva (incluidos los objetos de recursos individuales). Además, utilice la lista desplegable Ubicaciones para filtrar más los recursos.

    Captura de pantalla del nodo Corrección y la cuadrícula de los recursos que se van a corregir.

  4. Inicie la tarea de corrección cuando se hayan filtrado los recursos; para ello, seleccione Corregir. Se abre la página de cumplimiento de directivas en la pestaña Tareas de corrección para mostrar el estado del progreso de las tareas. Las implementaciones que ha creado la tarea de corrección se inician inmediatamente.

    Captura de pantalla de la pestaña Tareas de corrección y progreso de las tareas de corrección existentes.

Paso 3: Seguimiento del progreso de la tarea de corrección

  1. Vaya a la pestaña Tareas de corrección en la página Corrección. Haga clic en una tarea de corrección para ver detalles sobre el filtrado usado, el estado actual y una lista de recursos que se están corrigendo.

  2. En la página Tarea de corrección, haga clic con el botón derecho en un recurso para ver el recurso o la implementación de la tarea de corrección. Al final de la fila, seleccione Eventos relacionados para ver detalles, como los mensajes de error.

    Captura de pantalla del menú contextual de un recurso en la pestaña Corregir tarea.

Los recursos implementados mediante una tarea de corrección se agregan a la pestaña Recursos implementados en la página de detalles de las asignación de directiva.

Pasos siguientes