讓客戶在 Azure Lighthouse 上線

本文說明您身為服務提供者,如何讓客戶在 Azure Lighthouse 中上線。 當您這樣做時,租用戶中的使用者可以透過 Azure 委派的資源管理,以管理客戶 Microsoft Entra 租用戶中委派的資源 (訂閱和/或資源群組)。

提示

雖然我們在這個主題中所述的是服務提供者與其客戶,但管理多個租用戶的企業也可以使用相同程序來設定 Azure Lighthouse,以及合併其管理體驗。

您可以將上線程序重複用於多位客戶。 當具有適當權限的使用者登入您的管理租用戶時,該使用者會獲授執行管理作業,跨客戶租用戶範圍的權限,而不需要登入每位個別客戶租用戶。

注意

當客戶購買您發佈至 Azure Marketplace 的受管理服務供應項目 (公用或私人) 時,客戶也可以上線至 Azure Lighthouse。 您也可以搭配發佈至 Azure Marketplace 的供應項目來使用這裡所描述的上線程序。

上線程序需要您在服務提供者的租用戶與客戶的租用戶內都採取動作。 此文章中描述所有這些步驟。

收集租用戶與訂用帳戶詳細資料

若要讓客戶的租用戶上線,它必須有有效的 Azure 訂用帳戶。 手動建立範本須知:

  • 服務提供者租用戶的租用戶識別碼 (您將在其中管理客戶的資源)。
  • 客戶租用戶的租用戶識別碼 (其中包含受服務提供者管理的資源)。
  • 客戶租用戶中將由服務提供者管理的每個特定訂用帳戶 (或所含資源群組將會由服務提供者管理的訂用帳戶),其訂用帳戶識別碼。

如果您不知道租用戶的識別碼,您可以使用 Azure 入口網站、Azure PowerShell 或 Azure CLI 來擷取該識別碼

如果您在 Azure 入口網站中建立範本,則會自動提供您的租用戶識別碼。 您無需知道客戶的租用戶或訂閱詳細資料,即可在 Azure 入口網站中建立範本。 但若您打算將客戶租用戶中的一或多個資源群組上線 (而非整個訂閱),則必須知道每個資源群組的名稱。

定義角色與權限

身為服務提供者,您可以對單一客戶執行多個工作,每個都要求存取不同範圍。 您可以視需要定義任意數量的授權,以指派適當的 Azure 內建角色。 每個授權都包括 principalId,其指的是管理租用戶中的 Microsoft Entra 使用者、群組或服務主體。

注意

除非明確指定,否則 Azure Lighthouse 文件中參照的「使用者」可以適用於授權中的 Microsoft Entra 使用者、群組或服務主體。

若要在範本中定義授權,您必須包含管理租用戶中要授與存取權的每個使用者、使用者群組或服務主體的識別碼值。 您也會需要包含所要指派每個內建角色的角色定義識別碼。 當您在 Azure 入口網站中建立範本時,您可以選取使用者帳戶和角色,而且會自動新增這些識別碼值。 如果您要手動建立範本,可以從管理租用戶使用者內使用 Azure 入口網站、Azure PowerShell或 Azure CLI 來擷取使用者識別碼

提示

建議您在讓客戶上線時,指派受控服務註冊指派刪除角色,讓您租用戶中的使用者之後可以視需要,移除委派的存取權。 如果未指派此角色,則只有客戶租用戶中的使用者可以移除委派的資源。

若可行,建議您盡可能針對每個指派使用 Microsoft Entra 使用者群組,而非個別使用者。 這讓您可彈性地將擁有存取權的個別使用者新增至群組,或從群組移除,因此您無須重複上線程序就能進行使用者變更。 您也可以將角色指派給服務主體,這對於自動化案例很有用。

重要

若要為 Microsoft Entra 群組新增權限,[群組類型] 必須設為 [安全性]。 建立群組時,會選取此選項。 如需詳細資訊,請參閱使用 Microsoft Entra 建立基本群組並新增成員

當定義授權時,請務必遵循最少特殊權限準則,讓使用者只具備完成其工作所需的權限。 如需有關所支援角色及最佳做法的資訊,請參閱 Azure Lighthouse 中的租用戶、使用者和角色案例

提示

您也可以建立合格的授權,讓您管理租用戶中的使用者可暫時提高其角色權限。 此功能具有特定的授權要求。 如需詳細資訊,請參閱建立合格的授權

為了追蹤您對客戶參與的整體影響及接受表彰,您可將 Microsoft Cloud Partner Program ID 與能存取每個已上線訂閱的至少一個使用者帳戶建立關聯。 您必須在服務提供者租用戶中執行此關聯。 建議您在租用戶中建立與夥伴識別碼相關聯的服務主體帳戶,然後在每次將客戶上線時包含該服務主體。 如需詳細資訊,請參閱連結合作夥伴識別碼

建立 Azure Resource Manager 範本

若要讓客戶上線,您必須為供應項目建立包含下列資訊的 Azure Resource Manager 範本。 將該範本部署在客戶的租用戶中時,客戶將可在 Azure 入口網站的服務提供者頁面中看到 mspOfferNamemspOfferDescription 值。

欄位 定義
mspOfferName 說明此定義的名稱。 此值會以供應項目標題的形式向客戶顯示,且該值必須是唯一的。
mspOfferDescription 供應項目的簡短描述 (例如「Contoso VM 管理供應項目」)。 此欄位是選擇性的,但建議您填入此欄位,讓客戶能清楚地了解您的供應項目。
managedByTenantId 您的租用戶識別碼。
authorizations 來自租用戶的使用者/群組/SPN 的 principalId 值,每個都包含 principalIdDisplayName,以協助客戶了解授權的目的,且對應至內建 roleDefinitionId 值以指定存取層級。

您可以在 Azure 入口網站中建立此範本,或手動修改範例存放庫中提供的範本。

重要

這裡所述的程序需要針對每個上線訂閱進行個別部署,即使您是在相同客戶租用戶內,將訂閱上線也一樣。 如果要在相同客戶租用戶內的不同訂用帳戶中讓多個資源群組上線,您也需要個別部署。 不過,將單一訂用帳戶中的多個資源群組上線,是可在一次部署中完成的。

將多個供應項目套用至相同的訂用帳戶 (或訂用帳戶內的資源群組) 時,也需要個別部署。 所套用的每個供應項目必須使用不同的 mspOfferName

在 Azure 入口網站中建立您的範本

若要在 Azure 入口網站中建立範本,請移至 [我的客戶],然後從概觀頁面選取 [建立 ARM 範本]

在 [建立 ARM 範本供應項目] 頁面上,提供您的名稱和選擇性的說明。 這些值將用於您的範本中的 mspOfferNamemspOfferDescription,且客戶可能會看到這些值。 系統會根據您登入的 Microsoft Entra 租用戶,自動提供此 managedByTenantId 值。

接下來,依您要予以上線的客戶範圍選取 [訂閱] 或 [資源群組]。 如果您選取 [資源群組],則必須提供要上線的資源群組名稱。 如有需要,您可以選取 + 圖示,以在相同的訂閱中新增其他資源群組。 (若要在不同的訂閱中上線其他資源群組,必須為該訂閱建立並部署個別範本。)

最後,選取 [+ 新增授權] 來建立您的授權。 請針對每個授權提供下列詳細資料:

  1. 根據您想要包含在授權中的帳戶類型,選取 [主體類型]。 這可以是 [使用者]、[群組] 或 [服務主體]。 在此範例中,我們會選擇 [使用者]
  2. 選取 [+ 選取使用者] 連結以開啟選取項目窗格。 您可以使用搜尋欄位來尋找您想要新增的使用者。 完成後,請按一下 [選取]。 系統會自動填入使用者的主體識別碼
  3. 檢閱 [顯示名稱] 欄位 (根據您選取的使用者填入),並視需要進行變更。
  4. 選取要指派給使用者的角色
  5. 針對 [存取] 類型,選取 [永久] 或 [合格]。 如果您選擇 [合格],您必須指定持續時間上限、多重要素驗證及是否需要核等的選項。 如需關於這些選項的詳細資訊,請參閱建立合格的授權。 合格的授權功能無法與服務主體搭配使用。
  6. 選取 [新增] 以建立您的授權。

Screenshot of the Add authorization section in the Azure portal.

選取 [新增] 之後,您將返回 [建立 ARM 範本供應項目] 畫面。 您可以再次選取 [+ 新增授權],視需要新增任意數量的授權。

新增所有授權後,請選取 [檢視範本]。 在此畫面上,您會看到對應至您所輸入值的 .json 檔案。 選取 [下載] 以儲存此 .json 檔案的複本。 接著,您可以在客戶的租用戶中部署此範本。 如果您需要進行任何變更,您也可以對其手動編輯。

重要

產生的範本檔案不會儲存在 Azure 入口網站中。 在您離開 [顯示範本] 畫面之前,請務必先下載複本。

手動建立您的範本

您可以透過使用範例存放庫中提供的 Azure Resource Manager 範本,以及經過修改以符合設定並定義授權的對應參數檔案來建立您自己的範本。 如果您想要,可以直接在範本中包含所有資訊,而非使用個別的參數檔案。

您選擇的範本將取決於是要讓整個訂用帳戶、一個資源群組,還是訂用帳戶內的多個資源群組上線。 如果您偏好使用範本讓已購買受控服務供應項目 (您發佈至 Azure Marketplace) 的客戶上線,我們也提供可用於此情況的範本。

若要讓項目上線 使用此 Azure Resource Manager 範本 並修改此參數檔案
訂用帳戶 subscription.json subscription.parameters.json
資源群組 rg.json rg.parameters.json
訂用帳戶內的多個資源群組 multi-rg.json multiple-rg.parameters.json
訂用帳戶 (使用發佈至 Azure Marketplace 的供應項目時) marketplaceDelegatedResourceManagement.json marketplaceDelegatedResourceManagement.parameters.json

若要包含合格的授權,請從範例存放庫的 delegated-resource-management-eligible-authorizations 區段中,選取對應的範本。

提示

雖然您無法在單一部署中將整個管理群組上線,但仍可部署原則以將管理群組中的個別訂閱上線。 接著,您便可以存取管理群組中的所有訂閱,雖然您需要個別操作這些訂閱 (而非直接在管理群組資源上採取動作)。

下列範例顯示可用於將訂閱上線的已修改 subscription.parameters.json 檔案。 與資源群組參數檔案 (位於 rg-delegated-resource-management 資料夾) 具備類似的格式,但也包含 rgName 參數,以識別要上線的特定資源群組。

{
    "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "mspOfferName": {
            "value": "Fabrikam Managed Services - Interstellar"
        },
        "mspOfferDescription": {
            "value": "Fabrikam Managed Services - Interstellar"
        },
        "managedByTenantId": {
            "value": "00000000-0000-0000-0000-000000000000"
        },
        "authorizations": {
            "value": [
                {
                    "principalId": "00000000-0000-0000-0000-000000000000",
                    "principalIdDisplayName": "Tier 1 Support",
                    "roleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c"
                },
                {
                    "principalId": "00000000-0000-0000-0000-000000000000",
                    "principalIdDisplayName": "Tier 1 Support",
                    "roleDefinitionId": "36243c78-bf99-498c-9df9-86d9f8d28608"
                },
                {
                    "principalId": "00000000-0000-0000-0000-000000000000",
                    "principalIdDisplayName": "Tier 2 Support",
                    "roleDefinitionId": "acdd72a7-3385-48ef-bd42-f606fba81ae7"
                },
                {
                    "principalId": "00000000-0000-0000-0000-000000000000",
                    "principalIdDisplayName": "Service Automation Account",
                    "roleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c"
                },
                {
                    "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"
                    ]
                }
            ]
        }
    }
}

上述範例的最後一個授權會新增具有「使用者存取系統管理員」角色 (18d7d88d-d35e-4fb5-a5c3-7773c20a72d9) 的 principalId。 指派此角色時,必須包含 delegatedRoleDefinitionIds 屬性與一或多個支援的 Azure 內建角色。 在此授權中所建立的使用者能夠將這些角色指派給客戶租用戶中的受控識別,在部署可補救的原則時需要這些角色。 使用者也可以建立支援事件。 通常與「使用者存取系統管理員」角色相關聯的其他權限都不會套用至此 principalId

部署 Azure Resource Manager 範本

當您建立範本後,客戶租用戶中的使用者就必須在其租用戶中部署該範本。 您要上線的每個訂用帳戶 (或包含您要上線之資源群組的每個訂用帳戶) 都需要個別部署。

當您使用此處所述的程序讓訂用帳戶 (或訂用帳戶內的一或多個資源群組) 上線時,Microsoft.ManagedServices 資源提供者就會針對該訂用帳戶進行註冊。

重要

這個部署必須由客戶租用戶中的非來賓帳戶執行,且該租用戶對於要上線的訂閱 (或其包含要上線的資源群組) 需有具備 Microsoft.Authorization/roleAssignments/write 權限的角色,例如擁有者。 若要尋找可委派訂閱的所有使用者,客戶租用戶中的使用者可以在 Azure 入口網站中選取訂閱並開啟 [存取控制 (IAM)],然後查看所有具有「擁有者」角色的使用者

如果訂用帳戶是透過雲端解決方案提供者 (CSP) 計畫所建立,則在服務提供者租用戶中具有系統管理代理人角色的任何使用者,都可以執行部署。

您可使用 PowerShell、Azure CLI 或在 Azure 入口網站中完成部署,如下所示。

使用 PowerShell 進行部署

若要部署單一範本:

# Log in first with Connect-AzAccount if you're not using Cloud Shell

# Deploy Azure Resource Manager template using template and parameter file locally
New-AzSubscriptionDeployment -Name <deploymentName> `
                 -Location <AzureRegion> `
                 -TemplateFile <pathToTemplateFile> `
                 -Verbose

# Deploy Azure Resource Manager template that is located externally
New-AzSubscriptionDeployment -Name <deploymentName> `
                 -Location <AzureRegion> `
                 -TemplateUri <templateUri> `
                 -Verbose

若要部署具有個別參數檔案的範本:

# Log in first with Connect-AzAccount if you're not using Cloud Shell

# Deploy Azure Resource Manager template using template and parameter file locally
New-AzSubscriptionDeployment -Name <deploymentName> `
                 -Location <AzureRegion> `
                 -TemplateFile <pathToTemplateFile> `
                 -TemplateParameterFile <pathToParameterFile> `
                 -Verbose

# Deploy Azure Resource Manager template that is located externally
New-AzSubscriptionDeployment -Name <deploymentName> `
                 -Location <AzureRegion> `
                 -TemplateUri <templateUri> `
                 -TemplateParameterUri <parameterUri> `
                 -Verbose

使用 Azure CLI 進行部署

若要部署單一範本:

# Log in first with az login if you're not using Cloud Shell

# Deploy Azure Resource Manager template using template and parameter file locally
az deployment sub create --name <deploymentName> \
                         --location <AzureRegion> \
                         --template-file <pathToTemplateFile> \
                         --verbose

# Deploy external Azure Resource Manager template, with local parameter file
az deployment sub create --name <deploymentName> \
                         --location <AzureRegion> \
                         --template-uri <templateUri> \
                         --verbose

若要部署具有個別參數檔案的範本:

# Log in first with az login if you're not using Cloud Shell

# Deploy Azure Resource Manager template using template and parameter file locally
az deployment sub create --name <deploymentName> \
                         --location <AzureRegion> \
                         --template-file <pathToTemplateFile> \
                         --parameters <parameters/parameterFile> \
                         --verbose

# Deploy external Azure Resource Manager template, with local parameter file
az deployment sub create --name <deploymentName> \
                         --location <AzureRegion> \
                         --template-uri <templateUri> \
                         --parameters <parameterFile> \
                         --verbose

在 Azure 入口網站中部署

若要在 Azure 入口網站中部署範本,請遵循下列流程。 這些步驟必須由客戶租用者中具有擁有者角色的使用者 (或具有 Microsoft.Authorization/roleAssignments/write 許可權) 的其他角色來完成。

  1. 從Azure 入口網站的服務提供者頁面中,選取[伺服器提供者供應項目]

  2. 在畫面頂端附近,選取 [新增供應項目] 旁的方向鍵,然後選取 [透過範本新增]

    Screenshot showing the Add via template option in the Azure portal.

  3. 拖曳並置放範本即可上傳,或選取 [瀏覽檔案] 即可尋找並上傳範本。

  4. 如適用,請選取 [我有個別的參數檔案] 核取方塊,然後上傳參數檔案。

  5. 視需要上傳範本和參數檔案後,請選取 [上傳]。

  6. 在 [自訂部署] 畫面中,檢閱顯示的詳細資料。 如有需要可變更畫面中的這些值,或選取 [編輯參數]

  7. 選取 [檢閱並建立],然後選取 [建立]

幾分鐘後,您應該會看到部署完成的通知。

提示

或從我們的 GitHub 存放庫中,選取您想要使用之範本旁 ([自動部署] 資料行中) 顯示的 [部署至 Azure] 按鈕。 範本範例會在 Azure 入口網站中開啟。 如果您使用此程式,您必須先更新 [Msp 供應項目名稱]、[Msp 供應項目描述]、[依租用戶識別碼管理] 及 [授權] 的值,然後選取 [檢閱並建立]

確認上線成功

當客戶訂閱已經成功地上線至 Azure Lighthouse 時,服務提供者租用戶中的使用者將能夠查看訂閱與其資源 (如果他們已透過上述程序獲授與其存取權,無論是以個人身分或以有適當權限的 Microsoft Entra 群組成員身分)。 若要確認,請檢查並確定訂用帳戶以下列其中一種方式出現。

在 Azure 入口網站中確認

在服務提供者的租用戶中:

  1. 瀏覽至 [我的客戶] 頁面
  2. 選取 [客戶]
  3. 請確認您可以看到訂用帳戶顯示為您在 Resource Manager 範本中所提供的名稱。

重要

若要查看我的客戶中的委派訂閱,當訂閱上線時,服務提供者租用戶中的使用者必須已獲授與讀取器角色 (或包含讀取器存取權的其他內建角色)。

在客戶租用戶中:

  1. 瀏覽至 [服務提供者] 頁面
  2. 選取 [服務提供者供應項目]
  3. 請確認您可以看到訂用帳戶顯示為您在 Resource Manager 範本中所提供的名稱。

注意

您部署完成之後可能需要花費最多 15 分鐘,更新才會反映在 Azure 入口網站。 若您透過重新整理瀏覽器、登入並登出,或是要求新的權杖來更新您的 Azure Resource Manager 權杖,您應該可以更快看見更新。

使用 PowerShell 確認

# Log in first with Connect-AzAccount if you're not using Cloud Shell

Get-AzContext

# Confirm successful onboarding for Azure Lighthouse

Get-AzManagedServicesDefinition
Get-AzManagedServicesAssignment

使用 Azure CLI 確認

# Log in first with az login if you're not using Cloud Shell

az account list

# Confirm successful onboarding for Azure Lighthouse

az managedservices definition list
az managedservices assignment list

如果您需要在客戶上線之後進行變更,您可以更新委派。 您也可以完全移除委派的存取權

疑難排解

如果您無法成功將客戶上線,或您的使用者在存取委派資源時遇到困難,請檢查下列提示和需求,然後再試一次。

  • 需要在 Azure 入口網站中,檢視客戶資源的使用者必須在上線程序中被授與讀者角色 (或包含讀者存取權的其他內建角色)。
  • managedbyTenantId 值不得與要上線訂閱的租用戶識別碼相同。
  • 您無法在同一個範圍內擁有同樣具備 mspOfferName 的多個指派。
  • Microsoft.ManagedServices 資源提供者必須註冊委派訂閱。 這應該會在部署期間自動發生,如未發生,您可以手動註冊
  • 授權不得包含以下使用者:具有擁有者角色的任何使用者、具有 DataActions 的任何角色,或包含受限制動作的任何角色。
  • 群組必須使用設為安全性而非 Microsoft 365群組類型建立。
  • 如果已將存取權授與群組,請檢查確認使用者為群組成員。 如果使用者不是群組成員,您無須執行其他部署,就可以使用 Microsoft Entra ID 將使用者新增至群組。 請注意,群組擁有者不一定是其所管理群組的成員,且可能需要新增群組擁有者才能取得存取權。
  • 在啟用巢狀群組存取權之前,可能會有額外的延遲。
  • 您包含在授權中的 Azure 內建角色不得包含任何已被取代的角色。 如果 Azure 內建角色已被取代,使用該角色上線的所有使用者都將失去存取權,且您無法將其他委派上線。 若要修正此問題,請更新您的範本為只使用支援的內建角色,然後執行新的部署。

下一步