Uso de Azure Policy para asignar identidades administradas (versión preliminar)
Azure Policy ayuda a aplicar los estándares de la organización y a evaluar el cumplimiento a gran escala. Desde su panel de cumplimiento, ofrece una vista agregada que ayuda a los administradores en la evaluación del estado general del entorno. Se puede explorar en profundidad la granularidad por recurso y por directiva. También ayuda al cumplimiento de los recursos gracias a la corrección masiva de los recursos existentes y la corrección automática de nuevos recursos. Los casos de uso comunes de Azure Policy incluyen la gobernanza de la implementación para lo siguiente:
- Coherencia de recursos
- Cumplimiento de normativas
- Seguridad
- Costo
- Administración
Las definiciones de directiva de estos casos de uso comunes ya están disponibles en el entorno de Azure para ayudarle a comenzar.
Los agentes de supervisión de Azure requieren una identidad administrada en las máquinas virtuales de Azure supervisadas. En este documento se describe el comportamiento de una instancia de Azure Policy integrada proporcionada por Microsoft que ayuda a garantizar que se asigna a las máquinas virtuales a gran escala una identidad administrada, necesaria para estos escenarios.
Aunque es posible usar la identidad administrada asignada por el sistema, cuando se usa a gran escala (por ejemplo, para todas las máquinas virtuales de una suscripción), se crea (y se elimina) un número considerable de identidades en Microsoft Entra ID. Para evitar esta renovación de identidades, se recomienda usar identidades administradas asignadas por el usuario, que se pueden crear una vez y compartirse entre varias máquinas virtuales.
Definición y detalles de la directiva
- Directiva para las máquinas virtuales
- Directiva para los conjuntos de escalado de máquinas virtuales
Cuando se ejecuta, la directiva realiza las siguientes acciones:
- Crea, si no existe, una nueva identidad administrada integrada asignada por el usuario en la suscripción y cada región de Azure en función de las máquinas virtuales cubiertas por el ámbito la directiva.
- Una vez creada, coloca un bloqueo en la identidad administrada asignada por el usuario para que no se elimine accidentalmente.
- Asigna la identidad administrada asignada por el usuario integrada a las máquinas virtuales desde la suscripción y la región en función de las cubiertas según el ámbito de la directiva.
Nota:
Si la máquina virtual tiene exactamente una identidad administrada asignada por el usuario ya asignada, la directiva omite esta máquina virtual para asignar la identidad integrada. Esto sirve para garantizar que la asignación de la directiva no interrumpe las aplicaciones que toman una dependencia del comportamiento predeterminado del punto de conexión de token de IMDS.
La directiva se usa en dos escenarios:
- Permita que la directiva cree y use una identidad administrada asignada por el usuario "integrada".
- Traiga su propia identidad asignada por el usuario.
La directiva toma los siguientes parámetros de entrada:
- ¿Trae su propia UAMI? - ¿Debe la directiva crear, si no existe, una identidad administrada asignada por el usuario?
- Si se establece en true, debe especificar:
- Nombre de la identidad administrada.
- Grupo de recursos que contiene la identidad administrada.
- Si se establece en false, no se necesitan más entradas.
- La directiva creará la identidad administrada asignada por el usuario necesaria denominada "built-in-identity" en un grupo de recursos denominado "built-in-identity-rg".
- Si se establece en true, debe especificar:
- ¿Restrict-Bring-Your-Own-UAMI-to-Subscription? - Cuando el parámetro Bring-Your-Own-UAMI se establece en true, ¿debe la directiva usar una identidad administrada asignada por el usuario centralizada o usar una identidad para cada suscripción?
- Si se establece en true, no se necesita ninguna entrada adicional.
- La directiva usará una identidad administrada asignada por el usuario por suscripción.
- Si se establece en false, la directiva usará una única identidad administrada asignada por el usuario centralizado que se aplicará en todas las suscripciones cubiertas por la asignación de directiva. Debe especificar:
- Identificador de recurso de identidad administrada asignada por el usuario
- Si se establece en true, no se necesita ninguna entrada adicional.
Uso de la directiva
Creación de la asignación de directiva
La definición de la directiva se puede asignar a distintos ámbitos de Azure, en la suscripción del grupo de administración o en un grupo de recursos específico. Dado que las directivas deben aplicarse todo el tiempo, la operación de asignación se realiza mediante una identidad administrada asociada al objeto de asignación de la directiva. El objeto de asignación de la directiva admite la identidad administrada tanto asignada por el sistema como por el usuario. Por ejemplo, Joe puede crear una identidad administrada asignada por el usuario denominada PolicyAssignmentMI. La directiva integrada crea una identidad administrada asignada por el usuario en cada suscripción y en cada región con recursos cubiertos por el ámbito de asignación de la directiva. Las identidades administradas asignadas por el usuario creadas por la directiva tienen el siguiente formato de resourceId:
/subscriptions/your-subscription-id/resourceGroups/built-in-identity-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/built-in-identity-{ubicación}
Por ejemplo:
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/built-in-identity-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/built-in-identity-eastus
Autorización obligatoria
Para que la identidad administrada de PolicyAssignmentMI pueda asignar la directiva integrada en el ámbito especificado, necesita los siguientes permisos, expresados como asignación de roles de Azure RBAC (control de acceso basado en roles de Azure):
Principal | Rol o acción | Ámbito | Propósito |
---|---|---|---|
PolicyAssigmentMI | Operador de identidad administrada | /subscription/subscription-id/resourceGroups/built-in-identity o Bring-your-own-User-assinged-Managed identity |
Necesario para asignar la identidad integrada a las máquinas virtuales. |
PolicyAssigmentMI | Colaborador | /subscription/subscription-id> | Necesario para crear el grupo de recursos que contiene la identidad administrada integrada en la suscripción. |
PolicyAssigmentMI | Colaborador de identidad administrada | /subscription/subscription-id/resourceGroups/built-in-identity | Necesario para crear una identidad administrada asignada por el usuario. |
PolicyAssigmentMI | Administrador de acceso de usuario | /subscription/subscription-id/resourceGroups/built-in-identity o Bring-your-own-User-assigned-Managed identity |
Necesario para establecer un bloqueo en la identidad administrada asignada por el usuario creada por la directiva. |
Como el objeto de asignación de la directiva debe tener este permiso con antelación, PolicyAssignmentMI no puede ser una identidad administrada asignada por el sistema en este escenario. El usuario que realiza la tarea de asignación de la directiva debe autorizar PolicyAssignmentMI con antelación con las asignaciones de roles anteriores.
Como puede ver, el rol de privilegio mínimo resultante necesario es "colaborador" en el ámbito de la suscripción.
Problemas conocidos
Una condición de carrera con otra implementación que cambie las identidades asignadas a una máquina virtual puede provocar resultados inesperados.
Si hay dos o más implementaciones paralelas que actualizan la misma máquina virtual y todas cambian la configuración de identidad de la máquina virtual, es posible, en condiciones de carrera específicas, que las identidades esperadas NO se asignen a las máquinas. Por ejemplo, si la directiva de este documento actualiza las identidades administradas de una máquina virtual y, al mismo tiempo, otro proceso también realiza cambios en la sección de identidades administradas, no se garantiza que todas las identidades esperadas se asignen correctamente a la máquina virtual.