Implementación de una directiva que se pueda corregir en una suscripción delegada
Azure Lighthouse permite a los proveedores de servicios crear y editar definiciones de directivas en una suscripción delegada. Sin embargo, para implementar directivas que usen una tarea de corrección (es decir, directivas con los efectos deployIfNotExists o modify), deberá crear una identidad administrada en el inquilino del cliente. Azure Policy puede usar esta identidad administrada para implementar la plantilla dentro de la directiva. Este artículo describe los pasos obligatorios para habilitar este escenario, tanto al incorporar el cliente en Azure Lighthouse como al implementar la propia directiva.
Sugerencia
Aunque en este tema hacemos referencia a los proveedores de servicios y clientes, las empresas que administran varios inquilinos pueden usar los mismos procesos.
Creación de un usuario que pueda asignar roles a una identidad administrada en el inquilino del cliente
Al incorporar un cliente en Azure Lighthouse, defina autorizaciones que le concederán acceso a los recursos delegados que se ubican en el inquilino del cliente. Cada autorización especifica un elemento principalId que corresponde a un usuario de Microsoft Entra, un grupo o una entidad de servicio en el inquilino de administración, además de un elemento roleDefinitionId que corresponde al rol integrado de Azure que se va a conceder.
Para permitir que principalId asigne roles a una identidad administrada en el inquilino del cliente, debe establecer roleDefinitionId en Administrador de acceso de usuarios. Aunque este rol normalmente no se admite en Azure Lighthouse, se puede usar en este escenario específico. Conceder este rol a este principalId permite asignar roles integrados específicos a identidades administradas. Estos roles se definen en la propiedad delegatedRoleDefinitionIds y pueden incluir cualquier rol integrado de Azure compatible, excepto el propietario o administrador de acceso de usuario.
Una vez que se incorpora el cliente, el principalId creado en esta autorización podrá asignar estos roles integrados a identidades administradas en el inquilino del cliente. No tendrá ningún otro permiso normalmente asociado con el rol de Administrador de acceso de usuarios.
Nota:
Las asignaciones de roles entre inquilinos deben realizarse actualmente a través de las API, no en Azure Portal.
Este ejemplo muestra un principalId con el rol de Administrador de acceso de usuarios. Este usuario podrá asignar dos roles integrados a identidades administradas en el inquilino del cliente: Colaborador y Colaborador de Log Analytics.
{
"principalId": "00000000-0000-0000-0000-000000000000",
"principalIdDisplayName": "Policy Automation Account",
"roleDefinitionId": "18d7d88d-d35e-4fb5-a5c3-7773c20a72d9",
"delegatedRoleDefinitionIds": [
"b24988ac-6180-42a0-ab88-20f7382dd24c",
"92aaf0da-9dab-42b6-94a3-d43ce8d16293"
]
}
Implementación de directivas que se pueden corregir
Después de crear el usuario con los permisos necesarios, dicho usuario podrá implementar directivas que usen tareas de corrección dentro de las suscripciones de clientes delegadas.
Por ejemplo, supongamos que desea habilitar diagnósticos en los recursos de Azure Key Vault en el inquilino del cliente, tal como se muestra en este ejemplo . Un usuario del inquilino de administración con los permisos adecuados (como se ha descrito anteriormente) implementaría una plantilla de Azure Resource Manager para habilitar este escenario.
La creación de la asignación de directivas que se va a usar con una suscripción delegada debe realizarse actualmente a través de las API, no en Azure Portal. Al hacerlo, apiVersion debe establecerse en 2019-04-01-preview o versiones posteriores para incluir la nueva propiedad delegatedManagedIdentityResourceId. Esta propiedad permite incluir una identidad administrada que reside en el inquilino del cliente (en una suscripción o un grupo de recursos que se ha incorporado a Azure Lighthouse).
En el ejemplo siguiente se muestra una asignación de roles con delegatedManagedIdentityResourceId.
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2019-04-01-preview",
"name": "[parameters('rbacGuid')]",
"dependsOn": [
"[variables('policyAssignment')]"
],
"properties": {
"roleDefinitionId": "[concat(subscription().id, '/providers/Microsoft.Authorization/roleDefinitions/', variables('rbacContributor'))]",
"principalType": "ServicePrincipal",
"delegatedManagedIdentityResourceId": "[concat(subscription().id, '/providers/Microsoft.Authorization/policyAssignments/', variables('policyAssignment'))]",
"principalId": "[toLower(reference(concat('/providers/Microsoft.Authorization/policyAssignments/', variables('policyAssignment')), '2018-05-01', 'Full' ).identity.principalId)]"
}
Sugerencia
Hay disponible un ejemplo similar en el que se muestra cómo implementar una directiva que agrega o elimina una etiqueta (mediante el efecto Modify) en una suscripción delegada.
Pasos siguientes
- Más información acerca de Azure Policy.
- Más información acerca de las identidades administradas de recursos de Azure.