Compartir a través de

部署可以在委派的订阅中修正的策略

Azure Lighthouse 使服务提供商能够在委托的订阅中创建和编辑策略定义。 若要部署使用修正任务的策略(即,具有 deployIfNotExistsmodify 效果的策略),必须在客户租户中创建托管标识。 Azure Policy 可以使用此托管标识在策略中部署模板。

本文介绍将客户加入 Azure Lighthouse 时以及部署策略时启用此方案的步骤。

提示

虽然本文指的是服务提供商和客户, 但管理多个租户的企业 可以使用相同的流程。

创建一个可以在客户租户中将角色分配给托管标识的用户

当你将客户载入到 Azure Lighthouse 时,你可以定义授权,以授予对客户租户中委派资源的访问权限。 每个授权指定与管理租户中的 Microsoft Entra 用户、组或服务主体对应的 principalId,以及对应于所授予的 Azure 内置角色roleDefinitionId

若要允许 principalId 将角色分配给客户租户中的托管标识,请将 其 roleDefinitionId 设置为 用户访问管理员。 虽然 Azure Lighthouse 通常不支持此角色,但可以在此特定场景中使用。 将此角色授予 principalId ,以便它可以将特定的内置角色分配给托管标识。 这些角色在 delegatedRoleDefinitionIds 属性中定义。 除了用户访问管理员或所有者之外,还可以包含任何 受支持的 Azure 内置角色

载入客户后,在此授权中创建的 principalId 可以将这些内置角色分配给客户租户中的托管标识。 它通常没有与用户访问管理员角色关联的任何其他权限。

注意

当前必须使用 API(而不是 Azure 门户)跨租户创建 角色分配

此示例显示了具有“用户访问管理员”角色的 principalId。 此用户可以将两个内置角色分配给客户租户中的托管标识:参与者和 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"
    ]
}

部署可修正的策略

创建具有所需权限的用户后,该用户就可以在委派的客户订阅中部署使用修正任务的策略。

例如,假设要在客户租户中的 Azure Key Vault 资源上启用诊断,如 此示例所示。 管理租户中具有适当权限(如前面所述)的用户部署 Azure 资源管理器模板 以启用此方案。

当前必须使用 API 创建策略分配,以便与委托订阅一起使用;无法使用 Azure 门户。 创建策略分配时,请将 apiVersion 设置为 2019-04-01-preview 或更高版本以包含 delegatedManagedIdentityResourceId 属性。 此属性允许你包含存在于客户租户中的托管标识(在你已加入到 Azure Lighthouse 的订阅或资源组中)。

以下示例显示具有 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)]"
            }

提示

这里有类似的示例,该示例演示如何部署策略,以便为委托的订阅添加或删除标记(使用 modify 效果)。

后续步骤