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.

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.Though we refer to service providers and customers in this topic, enterprises managing multiple tenants can use the same processes.

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 a Azure Lighthouse, use una plantilla de Azure Resource Manager junto con un archivo de parámetros para definir las autorizaciones que conceden acceso a los recursos delegados en el inquilino del cliente.When you onboard a customer to Azure Lighthouse, you use an Azure Resource Manager template along with a parameters file to define authorizations that grant access to delegated resources in the customer tenant. Cada autorización especifica un elemento principalId que corresponde a un usuario de Azure AD, 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.Each authorization specifies a principalId that corresponds to an Azure AD user, group, or service principal in the managing tenant, and a roleDefinitionId that corresponds to the Azure built-in role which will be granted.

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 las cuentas de usuario 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 user accounts with this permission to assign one or more specific built-in roles to managed identities. 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.These roles are defined in the delegatedRoleDefinitionIds property, and can include any supported Azure built-in role 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 directivas que usan tareas de corrección dentro de las suscripciones delegadas del cliente.Once you have created the user with the necessary permissions as described above, that user can deploy policies that use remediation tasks within delegated customer subscriptions.

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 Azure Lighthouse).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 Lighthouse).

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