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.

Screenshot of a policy assignment creating a system-assigned managed identity in East US with Log Analytics Contributor permissions.

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.

  3. No asigne un ámbito para la identidad administrada asignada por el sistema porque el ámbito se heredará del ámbito de asignación.

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 un kit de desarrollo de software (SDK) de Azure
  • 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.

Screenshot of searching for Policy in All Services.

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.

    Screenshot of the Remediation node on the Policy page.

  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. Para obtener más información sobre qué controla cada configuración, consulte estructura de tareas 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.

    Screenshot of the Remediate node and the grid of resources to remediate.

  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.

    Screenshot of the Remediation tasks tab and progress of existing remediation tasks.

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.

    Screenshot of the context menu for a resource on the Remediate task tab.

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