Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Lighthouse 使服务提供商能够在委托的订阅中创建和编辑策略定义。 若要部署使用修正任务的策略(即,具有 deployIfNotExists 或 modify 效果的策略),必须在客户租户中创建托管标识。 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 效果)。
后续步骤
- 了解 Azure Policy。
- 了解 Azure 资源的托管标识。