Implementación de una directiva que se pueda corregir en una suscripción delegadaDeploy a policy that can be remediated within a delegated subscription

Azure Lighthouse permite a los proveedores de servicios crear y editar definiciones de directivas en una suscripción delegada.Azure Lighthouse allows service providers to create and edit policy definitions within a delegated subscription. Sin embargo, para implementar directivas que usen una tarea de corrección (es decir, directivas condeployIfNotExists o el efecto Modify), deberá crear una identidad administrada en el inquilino del cliente.However, to deploy policies that use a remediation task (that is, policies with the deployIfNotExists or modify effect), you’ll need to create a managed identity in the customer tenant. Azure Policy puede usar esta identidad administrada para implementar la plantilla dentro de la directiva.This managed identity can be used by Azure Policy to deploy the template within the policy. Para habilitar este escenario hay varios pasos obligatorios, tanto al incorporar el cliente para la administración de recursos delegados de Azure como al implementar la propia directiva.There are steps required to enable this scenario, both when you onboard the customer for Azure delegated resource management, and when you deploy the policy itself.

Creación de un usuario que pueda asignar roles a una identidad administrada en el inquilino del clienteCreate a user who can assign roles to a managed identity in the customer tenant

Al incorporar un cliente para la administración de recursos delegados de Azure, use una plantilla de Azure Resource Manager, junto con un archivo de parámetros que define los usuarios, grupos de usuarios y entidades de servicio en el inquilino de administración que podrán acceder a los recursos delegados en el inquilino del cliente.When you onboard a customer for Azure delegated resource management, you use an Azure Resource Manager template along with a parameters file that defines the users, user groups, and service principals in your managing tenant that will be able to access the delegated resources in the customer tenant. En el archivo de parámetros, a cada uno de estos usuarios (principalId) se le asigna un rol integrado (roleDefinitionId) que define el nivel de acceso.In your parameters file, each of these users (principalId) is assigned a built-in role (roleDefinitionId) that defines the level of access.

Para permitir que principalId cree una identidad administrada en el inquilino del cliente, debe establecer su roleDefinitionId en Administrador de acceso de usuario.To allow a principalId to create a managed identity in the customer tenant, you must set its roleDefinitionId to User Access Administrator. Aunque por lo general este rol no se admite, se puede usar en este escenario concreto, lo que permite a los usuarios con este permiso asignar uno o varios roles integrados específicos a identidades administradas.While this role is not generally supported, it can be used in this specific scenario, allowing the users with this permission to assign one or more specific built-in roles to managed identities. Estos roles se definen en la propiedad delegatedRoleDefinitionIds .These roles are defined in the delegatedRoleDefinitionIds property. Aquí puede incluir todos los roles integrados, excepto Administrador de acceso de usuario o Propietario.You can include any built-in role here except for User Access Administrator or Owner.

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.After the customer is onboarded, the principalId created in this authorization will be able to assign these built-in roles to managed identities in the customer tenant. Sin embargo, no tendrán ningún otro permiso asociado normalmente al rol Administrador de acceso de usuario.However, they will not have any other permissions normally associated with the User Access Administrator role.

En el ejemplo siguiente se muestra un principalId que tendrá el rol Administrador de acceso de usuario.The example below shows a principalId who will have the User Access Administrator role. Este usuario podrá asignar dos roles integrados a identidades administradas en el inquilino del cliente: Colaborador y Colaborador de Log Analytics.This user will be able to assign two built-in roles to managed identities in the customer tenant: Contributor and Log Analytics Contributor.

{
    "principalId": "3kl47fff-5655-4779-b726-2cf02b05c7c4",
    "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 corregirDeploy policies that can be remediated

Una vez que haya creado el usuario con los permisos necesarios, tal y como se ha descrito anteriormente, el usuario puede implementar en el inquilino del cliente directivas que usan tareas de corrección.Once you have created the user with the necessary permissions as described above, that user can deploy policies in the customer tenant that use remediation tasks.

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 .For example, let’s say you wanted to enable diagnostics on Azure Key Vault resources in the customer tenant, as illustrated in this sample. 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.A user in the managing tenant with the appropriate permissions (as described above) would deploy an Azure Resource Manager template to enable this scenario.

Tenga en cuenta que la creación de la asignación de directiva que se va a usar con una suscripción delegada debe realizarse actualmente a través de las API, no en Azure Portal.Note that creating the policy assignment to use with a delegated subscription must currently be done through APIs, not in the Azure portal. Al hacerlo, apiVersion se debe establecer en 2019-04-01-preview, que incluye la nueva propiedad delegatedManagedIdentityResourceId.When doing so, the apiVersion must be set to 2019-04-01-preview, which includes the new delegatedManagedIdentityResourceId property. 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 la administración de recursos delegados de Azure).This property allows you to include a managed identity that resides in the customer tenant (in a subscription or resource group which has been onboarded to Azure delegated resource management).

En el ejemplo siguiente se muestra una asignación de roles con delegatedManagedIdentityResourceId.The following example shows a role assignment with a 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.A similar sample is available to demonstrate how to deploy a policy that adds or removes a tag (using the modify effect) to a delegated subscription.

Pasos siguientesNext steps