部署可在委派的訂用帳戶內補救的原則
Azure Lighthouse 可讓服務提供者在委派的訂用帳戶內建立和編輯原則定義。 若要部署使用補救工作的原則 (也就是,具有 deployIfNotExists 或 modify 效果的原則),您必須在客戶租用戶中建立受控識別。 Azure 原則可以使用此受控識別在原則內部署範本。 本文說明當您讓客戶上線使用 Azure Lighthouse,以及當您部署原則本身時,必須執行下列步驟才能啟用此案例。
提示
雖然我們在這個主題中所述的是服務提供者和客戶,但管理多個租用戶的企業可以使用相同的程序。
建立可將角色指派給客戶租用戶中受控識別的使用者
當您讓客戶上線使用 Azure Lighthouse 時,會定義授權,以授與客戶租用戶中委派資源的存取權。 每個授權都會指定與管理租用戶中 Microsoft Entra 使用者、群組或服務主體對應的 principalId,以及和即將授與的 Azure 內建角色所對應的 roleDefinitionId。
若要允許 principalId 在客戶租用戶中將角色指派給受控識別,您必須將其 roleDefinitionId 設定為 [使用者存取管理員]。 雖然 Azure Lighthouse 通常不支援此角色,但其可以用於此特定案例。 將此角色授與此 principalId 可讓其將特定內建角色指派給受控識別。 這些角色是在 delegatedRoleDefinitionIds 屬性中定義,而且可以包含任何支援的 Azure 內建角色,但使用者存取管理員或擁有者除外。
客戶上線之後,在此授權中建立的 principalId 就能夠將這些內建角色指派給客戶租用戶中的受控識別。 其不會有任何通常與使用者存取系統管理員角色相關聯的其他權限。
注意
跨租用戶的角色指派目前必須透過 API 完成,而不是在 Azure 入口網站進行。
此範例顯示具有使用者存取系統管理員角色的 principalId。 這位使用者能夠將兩個內建角色指派給客戶租用戶中的受控識別:參與者和記錄分析參與者。
{
"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 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)]"
}
提示
有個類似範例可用來示範如何部署原則,以在委派的訂用帳戶中新增或移除標籤 (使用修改效果)。
下一步
- 了解 Azure 原則。
- 了解適用於 Azure 資源的受控識別。