共用方式為


合夥點數疑難排解指南 (機器翻譯)

適當的角色:使用者管理管理員 |系統管理代理程式 |計費管理員 |銷售代理程式

常見案例疑難排解

透過 Azure 新的商務體驗,合作夥伴可以透過合夥點數 (PEC) 獲得受控服務的折扣。 PEC 僅授與具有合格權限的合作夥伴。 了解有資格獲得 PEC 的人員、計算方式,以及支付方式

本文提供未授與 PEC 的基本疑難解答指引。

必要條件

如果您有 PEC 的問題,例如存取或遺失資訊,請先檢查下列專案。

注意

只有間接提供者和直接計費合作夥伴才有資格獲得 PEC。

  • 請確定您正在查看 G(新的商務體驗)發票和對帳檔案。 Azure 方案和 PEC 不會顯示在 D (舊版) 發票或對帳檔案上。

  • 確認您的Microsoft AI Cloud Partner 計劃合約為使用中。

  • 確認您的供應專案符合資格。 (舊版 Azure 供應專案、Azure 保留實例、Azure 節省方案、Azure SPOT VM 和第三方產品不符合資格。

  • 確認您(或 Azure 方案上設定為記錄轉銷商的間接轉銷商)具有訂用帳戶/資源群組/資源的 Azure 角色型訪問控制 (Azure RBAC) 角色的有效管理。 或者:

    • 如果您使用 Azure Lighthouse,請確定 您的 PartnerID 已連結至至少一個用戶帳戶。 也請檢查其是否可存取該客戶的訂用帳戶/資源群組。
    • 如果您使用 Azure RBAC 關聯,請確定使用者具有每個客戶租用戶內容中設定的 PEC 和 Azure RBAC 合格角色。
  • 查看客戶是否已移除您的 AOBO 許可權。 布建 Azure 方案時,預設會設定許可權。 如果已移除,請參閱為客戶的 Azure 雲端解決方案提供者 (CSP) 訂用帳戶恢復系統管理員許可權。

  • 確認您有整天的系統管理員存取權。

  • 確認您正在檢閱對帳檔案中的正確數據行。 如需詳細資訊,請參閱 Azure 方案計費:關於發票對帳檔案

多合作夥伴案例

對於 PEC,交易夥伴只必須設定任何可用的許可權選項。 針對間接模型,它可以是提供者或轉銷商,或兩者。

另一個合作夥伴設定額外的 AOBO 或其他許可權,並為具有 Azure RBAC 許可權的使用者設定額外的 Azure RBAC,不會影響交易合作夥伴的 PEC。

請參閱下表。 MPN1 是間接提供者,MPN2 是作為記錄轉銷商連結到交易的間接轉銷商,MPN3 是另一個 CSP 合作夥伴(直接或間接轉銷商):

交易合作夥伴 (BillTo) Azure RBAC (適用於具有 PEC 資格角色的使用者或 Lighthouse) AOBO (PEC 合格角色) PEC
MPN1 MPN1 N/A Yes
MPN1 N/A MPN1 Yes
MPN1 MPN2 N/A Yes
MPN1 N/A MPN2 Yes
MPN1 MPN3 MPN1 Yes
MPN1 MPN1 MPN3 Yes
MPN1 MPN1 MPN2 Yes
MPN1 MPN2 MPN1 Yes
MPN1 MPN2 MPN3 Yes
MPN1 MPN3 MPN2 Yes
MPN1 MPN3 N/A No
MPN1 N/A MPN3 No
MPN1 N/A N/A No
MPN1 MPN3 MPN3 No

Azure 訂用帳戶轉移

當合作夥伴從或其他合作夥伴轉移 Azure 訂用帳戶時,不會變更此轉移的許可權。

因此,如果在傳輸之前使用 AOBO 或其他許可權模型,並將許可權設定為舊的「交易夥伴」,則許可權在傳輸之後仍會指向舊的合作夥伴。 但現在,另一個合作夥伴成為“交易夥伴”。

對於任何 Azure 訂用帳戶轉移,建議新的目標合作夥伴在傳輸之前新增許可權,例如 Azure RBAC。 他們可以安全地做到這一點,而不會影響老合作夥伴的PEC,直到轉會。

PartnerID 更新

合作夥伴中心可讓您 變更與您的 CSP 註冊相關聯的 PartnerID。 將 PartnerID 更新為相同Microsoft AI Cloud Partner 計劃全域組織內另一個Microsoft AI Cloud Partner 計劃位置標識符(相同Microsoft AI Cloud Partner 計劃全域標識符下的另一個Microsoft AI Cloud Partner 計劃位置標識符),並不會影響 PEC。

不過,當 PartnerID 變更為不同Microsoft AI 雲端合作夥伴計劃組織的位置標識碼時,PEC 可能會受到影響。 在此實例中,當 PEC 原來遺失時,建議您連絡支援人員(提及您最近將 CSP 註冊重新對應至不同的Microsoft AI 雲端合作夥伴計劃組織)。

如何驗證 AOBO 許可權

當合作夥伴為客戶建立 Azure 方案訂用帳戶時,AOBO 會以「外部主體」的形式設定。 外部主體會繼承 Azure 訂用帳戶的擁有者許可權。 AOBO 許可權表示 CSP 合作夥伴中心租使用者 (系統管理代理程式) 中的特定群組會繼承 這些許可權

如 Azure 入口網站 所示的外主體不包含其對應至特定合作夥伴租使用者群組的詳細數據。

當您在 Azure 入口網站 中檢視外主體時,它會顯示夥伴名稱,例如「Contoso 的外主體」...,但 「Contoso」 只是夥伴Microsoft Entra 租用戶的顯示名稱,而且不是唯一的。

非唯一的顯示名稱。

使用 AZ PowerShell 或 Azure CLI 必須以 100% 的確定性確認 AOBO 已正確設定,並指向正確 CSP 租使用者中的正確群組。

步驟 1 - 識別交易夥伴之代理程式群組的物件識別碼

  • 透過 Azure 入口網站:合作夥伴可以在自己的租使用者中登入 Azure 入口網站,並在 Microsoft Entra ID > 群組中搜尋個別群組。 ObjectID 會顯示在組名右邊。

從 Azure 入口網站 介面取得對象標識碼。

使用 Azure Cloud Shell 之前,您必須設定記憶體帳戶。 此帳戶會在租用戶內容中提供的 Azure 訂用帳戶中產生少量的每月成本。 您可以在後續步驟之後刪除共用。

注意

自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模組已被淘汰。 若要深入了解,請閱讀淘汰更新。 在此日期之後,對這些模組的支援僅限於對 Microsoft Graph PowerShell SDK 的移轉協助和安全性修正。 淘汰的模組將繼續運作至 2025 年 3 月 30 日。

我們建議移轉至 Microsoft Graph PowerShell 以與 Microsoft Entra ID (以前稱為 Azure AD) 互動。 如需了解常見的移轉問題,請參閱移轉常見問題注意:MSOnline 1.0.x 版可能會在 2024 年 6 月 30 日之後發生中斷。

請確定您已安裝下列模組並更新為最新版本:

如有需要,請使用 PowerShell 視窗中的下列專案 cmdlets 來安裝這些模組:

Install-Module -Name AzureAD -Force
Install-Module -Name Az -AllowClobber -Force

首先,使用您的合作夥伴中心用戶帳戶連線到合作夥伴中心租使用者,並取得 AdminAgents 和 HelpdeskAgents 群組的物件標識碼:

Connect-AzureAD -TenantDomain CSPtenantname.onmicrosoft.com

使用合作夥伴中心認證登入:

合作夥伴中心連線的殼層範例。

查詢代理程式群組的相關資訊:

Get-AzureADGroup | Where-Object { $_.DisplayName.Endswith('Agents') }

ObjectID群組的 將會連同其名稱一起顯示:

群組 ObjectID 的殼層範例。

注意

如果您沒有取得結果,請確定您已連線到合作夥伴中心帳戶。

注意

間接轉銷商不會看到 SalesAgents 群組。 此步驟只需要執行一次,因為每個客戶租使用者中的 AOBO 都會使用相同的標識碼。

步驟 2 - 比較 ObjectID 與外部主體所使用的物件

請務必使用 TenantID 作為租用戶參數的值(而非租使用者功能變數名稱),以及具有下列其中一個使用者帳戶的用戶帳戶:- 可以存取多個目錄/租使用者,例如您的合作夥伴中心用戶帳戶,或 - 已新增為多個租用戶的來賓。

因此,您需要指定客戶的 TenantID。

  • 透過 Azure 入口網站:您可以從合作夥伴中心的客戶清單中輕鬆取得 TenantID。 tenantID 標示為「Microsoft標識符」:

    將標識碼Microsoft為 tenantId。

  • 透過PowerShell:使用有效的認證連線到客戶的 Azure 訂用帳戶。 認證應該有權讀取客戶租使用者的 Azure 訂用帳戶和 AzureAD:

    Connect-AzAccount -Tenant $CustomerTenantID
    
    • 讀取客戶 Azure 訂用帳戶之外部主體的角色指派:
    Get-AzRoleassignment | ? {$_.DisplayName -like "Foreign*"}
    

    殼層範例角色指派。

    • 產生的 ObjectID 應該符合步驟 1 中所識別 AdminAgent 或 HelpDeskAgent 群組的 ObjectID。

摘要

每個層面都需要符合才能透過 AOBO 接收 PEC:

  • 客戶的 Azure 訂用帳戶具有具有合格 Azure RBAC 角色指派的外國主體。
  • 外部主體所使用的群組 ObjectID 是指合作夥伴租使用者中 AdminAgent 或 HelpdeskAgent 群組的 ObjectID。
  • 「合作夥伴租使用者」表示直接計費合作夥伴租使用者。 在間接模型中,這表示間接提供者或間接轉銷商合作夥伴租使用者。

範例指令碼

本節包含範例腳本,可協助跨多個訂用帳戶收集資訊,並將其儲存在 中。CSV 檔案。 這些腳本是以範例的形式提供,且不受支援提供。 雖然腳本不會在設定中進行修改,但應該經過徹底測試,而且對於具體的合作夥伴/客戶案例可能需要自定義。

  • 列出單一客戶的 AOBO 詳細數據:此範例使用 Microsoft Entra ID 和 Azure PowerShell 模組。
### Install-Module -Name AzureAD -Force ###
### Install-Module -Name Az -AllowClobber -Force ###
### Variables ####
$CSVname = "c:tempAOBOchecker.csv"
$CustomertenantId = ""
### Get Agent-Groups Object IDs and write to CSV - This step needs to be done with a Partner Center User ###
Connect-AzureAD -TenantDomain $PartnerTenantDomain
$Headers = "GroupName`tObjectID`tPartnerTenantName`tPartnerTenantID" >>$CSVname
$PartnerTenant = Get-AzureADTenantDetail
$groups = Get-AzureADGroup | Where-Object { $_.DisplayName.Endswith('Agents') }
ForEach ($Group in $Groups)
{
$NewLine = $Group.DisplayName + "`t" + $Group.ObjectID + "`t" + $PartnerTenant.DisplayName + "`t" + $PartnerTenant.ObjectID
$NewLine >>$CSVname
}
### Get list of Azure Subscriptions for a customer, get list of Foreign Principals and add them to the same CSV ###
Clear-AzContext -Scope CurrentUser -Force
Connect-AzAccount -Tenant $CustomertenantId
$CustomerTenant = Get-AzureADTenantDetail
$CustomerTenantSubscriptions = Get-AzSubscription -TenantId $CustomertenantId
ForEach ($Subscription in $CustomerTenantSubscriptions)
{
$Roles = Get-AzRoleassignment -Scope /subscriptions/$Subscription | ? {$_.DisplayName -like "Foreign*"}
ForEach ($Role in $Roles)
{
$NewLine = $CustomerTenant.Domain + "`t" + $CustomerTenant.CustomerId + "`t" + $Subscription.Id + "`t" + $Role.DisplayName + "`t" + $Role.ObjectID + "`t" + $Role.RoleDefinitionName
$NewLine >>$CSVname
}
}
  • 列出多個客戶的 AOBO 詳細資料:此程式代碼僅供說明之用。
    • 取得 CSP 客戶和所有外部主體的所有訂用帳戶清單,並識別是否有不相符的情況。 此程式代碼也可用來收集支持的資訊。
    • 檢查哪些 Azure 訂用帳戶 (Azure 方案權利) 已售出,且可使用目前認證存取哪些訂用帳戶。
    • 對於間接轉銷商,此腳本也運作正常。 但是,即使所有訂閱都是此銷售記錄的合作夥伴,所有訂閱都會有「未售出」的附注。
### Note - below examples use interactive login experience and aren't suitable for production use ###
### See https://learn.microsoft.com/partner-center/develop/enable-secure-app-model#powershell for info on how to authenticate to each customer tenant silently using secure app model ###
### Below examples use AzureAD, AZ and Partner Center PowerShell modules ###
### Install-Module -Name AzureAD -Force ###
### Install-Module -Name Az -AllowClobber -Force ###
### Install-Module -Name PartnerCenter -Force ###
### Variables ####
$PartnertenantDomain = "xyz.onmicrosoft.com"
$PartnerTenantID = ""
$CSVname = "c:tempAOBOchecker.csv"
### Get Agent-Groups Object IDs and write to CSV ###
Connect-AzureAD -TenantDomain $PartnerTenantDomain
$Headers = "GroupName`tObjectID`tPartnerTenantName`tPartnerTenantID" >>$CSVname
$PartnerTenant = Get-AzureADTenantDetail
$groups = Get-AzureADGroup | Where-Object { $_.DisplayName.Endswith('Agents') }
ForEach ($Group in $Groups)
{
$NewLine = $Group.DisplayName + "`t" + $Group.ObjectID + "`t" + $PartnerTenant.DisplayName + "`t" + $PartnerTenant.ObjectID
$NewLine >>$CSVname
}
### Get list of CSP Customers, get List of Azure Subscriptions, get list of Foreign Principals and add them to the same CSV ###
Connect-PartnerCenter -TenantID $PartnertenantID
$Customers = Get-PartnerCustomer
$Headers = "`r`nCustomerTenantName`tCustomerTenantID`tSubscriptionId`tForeignPrincipalName`tObjectID`tAzureRBACRole`tTimeChecked`tNotes`tCredentialsUsedForAccessCheck" >>$CSVname
Foreach ($customer in $Customers)
{
$AzurePlanId = Get-PartnerCustomerSubscription -CustomerId $Customer.CustomerId | ? {$_.OfferName -eq "Azure Plan"}
if ($AzurePlanID -eq $null)
{
Write-Host "Customer $($Customer.Name) does not have Azure Plan"
}
else
{
$AzurePlanSubscriptionsSold = Get-PartnerCustomerAzurePlanEntitlement -CustomerId $Customer.CustomerId -SubscriptionId $AzurePlanId.SubscriptionId
}
Clear-AzContext -Scope CurrentUser -Force
Connect-AzAccount -Tenant $Customer.CustomerId
$CurrentUser = Get-azcontext
$CustomerTenantSubscriptionsAccessible = Get-AzSubscription -TenantId $Customer.CustomerId
$SoldAndAccessibleSubscriptions = $AzurePlanSubscriptionsSold | Where {$CustomerTenantSubscriptionsAccessible -Contains $_}
$SoldButNotAccessibleSubscriptions = $AzurePlanSubscriptionsSold | Where {$CustomerTenantSubscriptionsAccessible -notcontains $_}
$NotSoldButAccessibleSubscriptions = $CustomerTenantSubscriptionsAccessible | Where {$AzurePlanSubscriptionsSold -notcontains $_}
ForEach ($Subscription in $SoldAndAccessibleSubscriptions)
{
$Roles = Get-AzRoleassignment -Scope /subscriptions/$Subscription | ? {$_.DisplayName -like "Foreign*"}
ForEach ($Role in $Roles)
{
$CurrentTime = Get-Date -format "dd-MMM-yyyy HH:mm:ss"
$NewLine = $Customer.Domain + "`t" + $Customer.CustomerId + "`t" + $Subscription.Id + "`t" + $Role.DisplayName + "`t" + $Role.ObjectID + "`t" + $Role.RoleDefinitionName + "`t" + $CurrentTime + "`t" + "Access with current credentials and sold as CSP Partner" + "`t" + $CurrentUser.Account.Id
$NewLine >>$CSVname
}
}
ForEach ($Subscription in $SoldButNotAccessibleSubscriptions)
{
$CurrentTime = Get-Date -format "dd-MMM-yyyy HH:mm:ss"
$NewLine = $Customer.Domain + "`t" + $Customer.CustomerId + "`t" + "N/A" + "`t" + "N/A" + "`t" + "N/A" + "`t" + "N/A" + "`t" + $CurrentTime + "`t" + "Sold via CSP, but no access with current credentials" + "`t" + $CurrentUser.Account.Id
$NewLine >>$CSVname
}
ForEach ($Subscription in $NotSoldButAccessibleSubscriptions)
{
$Roles = Get-AzRoleassignment -Scope /subscriptions/$Subscription | ? {$_.DisplayName -like "Foreign*"}
ForEach ($Role in $Roles)
{
$CurrentTime = Get-Date -format "dd-MMM-yyyy HH:mm:ss"
$NewLine = $Customer.Domain + "`t" + $Customer.CustomerId + "`t" + $Subscription.Id + "`t" + $Role.DisplayName + "`t" + $Role.ObjectID + "`t" + $Role.RoleDefinitionName + "`t" + $CurrentTime + "`t" + "Access with current credentials, but not sold as CSP Partner" + "`t" + $CurrentUser.Account.Id
$NewLine >>$CSVname
}
}
}
  • 然後,此腳本的輸出可以像這樣格式化:

    輸出格式範例。

如何驗證 Azure Lighthouse 許可權和 Azure PAL

如同 AOBO,Azure Lighthouse 可讓 (合作夥伴) 管理租使用者中的使用者群組繼承客戶 Azure 訂用帳戶中的委派許可權。 差異在於它允許比 AOBO 更細微的群組和許可權等級定義。

針對此許可權模型,使用 Azure 入口網站 UI 確認是否已正確設定許可權模型會比較容易。 只有合作夥伴可以提供 Azure Lighthouse 設定正確的完整驗證。

下列步驟說明如何識別哪些客戶已永久委派 Azure RBAC 角色許可權,以及哪些群組。 然後,您可以檢查具有 Azure RBAC 關聯的使用者是否為這些群組的成員。

步驟 1 – 檢查客戶上的 Lighthouse 委派

確認適用的委派是使用符合 PEC 資格的 Azure RBAC 角色。

  • 開啟 Azure 入口網站(具有合作夥伴管理租用戶的使用者)。 然後搜尋 「Lighthouse」,然後選取 [我的客戶]。

    Azure 服務 Lighthouse 範例。

  • 在客戶概觀中,選擇 左側的 [委派 ]。 這麼做會開啟已提供委派存取的資源清單(訂用帳戶或資源群組):

    委派頁面。

  • 在 [角色指派] 下方的右側數據行中開啟委派,以查看合作夥伴/管理租使用者中的哪個使用者群組繼承每種許可權(請參閱「角色」數據行)。 您也可以檢視這些權限是否為永久權限(請參閱「存取類型」資料行):

    角色指派頁面

步驟 2 – 檢查群組成員資格

選取群組的顯示名稱。 這麼做會開啟群組詳細數據。 選取 [成員] 來控制哪些用戶已設定 Azure RBAC,且為個別群組的成員:

群組成員資格。

步驟 3 – 檢查使用者是否已設定 Azure PAL

只有已設定 Azure PAL 的使用者才能檢查 Azure PAL 指派;其他系統管理員使用者都無法執行此動作。 如需如何透過UI或PowerShell來確認 Azure PAL 是否已設定的詳細資訊,請參閱 如何? 說明合作夥伴管理員連結 (PAL) 至我的客戶?將 Azure 帳戶連結至 PartnerID 中。

注意

Azure PAL 應該使用屬於此 Azure 訂用帳戶交易合作夥伴之相同Microsoft AI Cloud Partner Program 組織的 PartnerID。 在間接模型中,它可以是提供者的 PartnerID 或附加至此銷售的特定轉銷商。

步驟 4 - 檢查時間系結群組指派

因為群組成員資格可能不是永久性的,請檢查群組是否已啟用特殊許可權存取管理。 在群組設定的 [活動] 底下,查看左側的 「特殊許可權存取」位置。 如果為 true,請檢查使用者是否有作用中指派,以及此指派的時間範圍。

注意

因為指派「結束時間」是用戶自動從群組中移除時,PEC 將會遺失給已設定 Azure RBAC 的使用者。 同樣地,PEC 只會在指派「開始時間」之後授與。

許可權存取群組。

如何驗證個別使用者指派和 Azure PAL

在某些情況下,使用具有 Azure 訂用帳戶許可權的個別用戶帳戶可能更合適。 這些帳戶可以是來賓用戶帳戶(來自任何租使用者)或客戶租用戶或服務主體中建立的用戶帳戶。

使用個別使用者帳戶作為獲得 PEC 的工具時,檢查只會檢閱使用者的 Azure 訂用帳戶管理中指派的許可權,並確認使用者已正確設定 Azure RBAC。 使用服務主體時,必須透過PowerShell檢查 Azure RBAC。

步驟 1 – 檢閱 Azure 訂用帳戶管理中的許可權

  • 開啟 Azure 入口網站。 請確定您已以具有 Azure RBAC 角色的使用者身分登入,且至少具有有問題訂用帳戶的讀取許可權。

  • 在搜尋列中搜尋「訂用帳戶」以開啟訂用帳戶詳細數據:

    訂用帳戶詳細數據頁面。

  • 移至訂用帳戶詳細數據的「存取控制(IAM)」。 然後選取 [角色指派] 以檢閱訂用帳戶層級可存取的使用者,如果 [角色] 數據行顯示符合 PEC 資格的 Azure RBAC 角色, 如果已在資源群組層級上設定許可權,資源群組中也提供相同的「存取控制(IAM)」檢視。

注意

您也可以將許可權授與一組使用者,其中必須驗證具有 Azure RBAC 集合之使用者的群組成員資格。

存取控制。

步驟 2 – 確保許可權是永久的,且不會套用拒絕指派

雖然使用者可能具有存取權,但其許可權可能仍為暫時性或透過拒絕指派封鎖。

使用 Privileged Identity Management (PIM) Azure RBAC 角色指派可能會有時間限制。 雖然您可能會看到具有許可權的使用者,但它們可能只存在一小段時間。 若要確認 Azure RBAC 角色指派是永久性的,請檢查 Azure 入口網站 中的 PIM 管理。 具體來說,檢查訂用帳戶中的 Azure 資源由 PIM 原則管理的位置,以及使用者是否受限於任何原則。

Azure 訂用帳戶不會透過 PIM 進行管理。

此外,許可權清單可能會顯示使用者具有訂用帳戶的許可權,但可能有拒絕指派仍會封鎖使用者存取某些專案。 在 [存取控制 (IAM)] 中,選取 [拒絕指派] 索引標籤,以查看 [拒絕指派] 是否適用:

拒絕指派。

注意

為了完整性,合作夥伴也應該確認在資源群組上,訂用帳戶內沒有拒絕指派。

步驟 3 – 檢查使用者是否已設定 Azure PAL

只有已設定 Azure PAL 的使用者可以檢查 Azure PAL 指派;其他系統管理員使用者都無法執行此動作。 如需使用者如何確認 Azure PAL 已設定的詳細資訊,請參閱 將 Azure 帳戶連結至 PartnerID

注意

Azure PAL 應該使用屬於此 Azure 訂用帳戶交易合作夥伴之相同Microsoft AI Cloud Partner Program 組織的 PartnerID。 在間接模型中,這可以是提供者的 PartnerID 或附加至此銷售之轉銷商的 PartnerID。