部署可在委派的訂用帳戶內補救的原則

Azure Lighthouse 可讓服務提供者在委派的訂用帳戶內建立和編輯原則定義。 若要部署使用補救工作的原則 (也就是,具有 deployIfNotExistsmodify 效果的原則),您必須在客戶租用戶中建立受控識別。 Azure 原則可以使用此受控識別在原則內部署範本。 本文說明當您讓客戶上線使用 Azure Lighthouse,以及當您部署原則本身時,必須執行下列步驟才能啟用此案例。

提示

雖然我們在這個主題中所述的是服務提供者和客戶,但管理多個租用戶的企業可以使用相同的程序。

建立可將角色指派給客戶租用戶中受控識別的使用者

當您讓客戶上線使用 Azure Lighthouse 時,會定義授權,以授與客戶租用戶中委派資源的存取權。 每個授權都會指定與管理租用戶中 Microsoft Entra 使用者、群組或服務主體對應的 principalId,以及和即將授與的 Azure 內建角色所對應的 roleDefinitionId

若要允許 principalId 在客戶租用戶中將角色指派給受控識別,您必須將其 roleDefinitionId 設定為 [使用者存取管理員]。 雖然 Azure Lighthouse 通常不支援此角色,但可用於此特定案例。 將此角色授與此 principalId 可讓其將特定內建角色指派給受控識別。 這些角色是在 delegatedRoleDefinitionIds 屬性中定義,而且可以包含任何支援的 Azure 內建角色,但使用者存取管理員或擁有者除外。

客戶上線之後,在此授權中建立的 principalId 就能夠將這些內建角色指派給客戶租用戶中的受控識別。 它不會有任何通常與「使用者存取管理員」角色相關聯的其他權限。

注意

跨租用戶的角色指派目前必須透過 API 完成,而不是在 Azure 入口網站進行。

以下範例顯示將具有「使用者存取管理員」角色的 principalId。 這位使用者能夠將兩個內建角色指派給客戶租用戶中的受控識別:參與者和記錄分析參與者。

{
    "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"
    ]
}

部署可補救的原則

當您如上所述建立具有必要權限的使用者之後,該使用者就可以在委派的客戶訂用帳戶中部署使用補救工作的原則。

例如,假設您想要在客戶租用戶中的 Azure Key Vault 資源上啟用診斷功能,如此範例所說明。 管理租用戶中具有適當權限的使用者 (如上所述) 會部署 Azure Resource Manager 範本以啟用此案例。

目前必須透過 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)]"
            }

提示

有個類似範例可用來示範如何部署原則,以在委派的訂用帳戶中新增或移除標籤 (使用修改效果)。

下一步