您可以在 Azure 入口網站中管理 Enterprise 合約 (EA) 註冊。 您可以建立不同的角色來管理組織、檢視成本及建立訂用帳戶。 本文可協助您使用 Azure PowerShell 和 REST API 搭配 Microsoft Entra ID 服務主體,將其中一些工作自動化。
附註
如果您的組織中有多個 EA 計費帳戶,則必須在每個 EA 計費帳戶中個別將 EA 角色授與 Microsoft Entra ID 服務主體。
開始之前,請確定您已熟悉下列文章:
您需要呼叫 REST API 的方法。 查詢 API 的一些熱門方式如:
- Visual Studio
- 失眠
- 布魯諾
- PowerShell 的 Invoke-RestMethod
- 捲曲
建立並驗證您的服務主體
若要使用服務主體將 EA 動作自動化,您必須建立 Microsoft Entra 應用程式身分識別,然後以自動化方式進行驗證。
請遵循這些文章中的步驟,使用您的服務主體建立和驗證。
以下是應用程式註冊頁面的範例。
尋找您的服務主體和租用戶識別碼
您需要服務主體的物件識別碼和租用戶識別碼。 您需要這項資訊,在本文稍後進行權限指派作業。 所有應用程式都會在租用戶的 Microsoft Entra ID 中註冊。 應用程式註冊完成時,會建立兩種類型的物件:
- 應用程式物件:應用程式識別碼是您在 [企業應用程式] 下看到的內容。 不要使用識別碼來授與任何 EA 角色。
- 服務主體物件 - 服務主體物件是 Microsoft Entra ID 的 [企業註冊] 視窗中所顯示的內容。 物件識別碼可用來將 EA 角色授與服務主體。
開啟 Microsoft Entra ID,然後選取 [企業應用程式]。
在清單中尋找您的應用程式。
選取應用程式以尋找應用程式識別碼和物件識別碼:
前往 Microsoft Entra ID 的 [概觀] 頁面以尋找租用戶識別碼。
附註
Microsoft Entra 租用戶識別碼的值看起來會像是具有下列格式的 GUID:aaaabbbb-0000-cccc-1111-dddd2222eeee
。
可指派給服務主體的權限
在本文稍後,您會將權限授與 Microsoft Entra 應用程式,以使用 EA 角色採取動作。 您只能將下列角色指派給服務主體,而且您需要與表中所示相同的角色定義識別碼。
角色 | 允許的動作 | 角色定義識別碼 |
---|---|---|
EnrollmentReader | 檢視註冊、部門和帳戶範圍的資料。 資料包含範圍內所有訂用帳戶的費用,包括跨租用戶。 可檢視與註冊相關聯的 Azure 預付款 (先前稱為預付金) 餘額。 | 24f8edb6-1668-4659-b5e2-40bb5f3a7d7e |
EA 購買者 | 購買保留訂單及檢視保留交易。 它具有 EnrollmentReader 的所有權限,其擁有 DepartmentReader 的所有權限。 它可以檢視所有帳戶和訂用帳戶的使用量和費用。 可檢視與註冊相關聯的 Azure 預付款 (先前稱為預付金) 餘額。 | da6647fb-7651-49ee-be91-c43c4877f0c4 |
DepartmentReader | 下載其所管理部門的使用量詳細資料。 可檢視與其部門相關聯的使用量和費用。 | db609904-a47f-4794-9be8-9bd86fbffd8a |
SubscriptionCreator | 在帳戶的指定範圍內建立新的訂閱。 | a0bcee42-bf30-4d1b-926a-48d21664ef71 |
合作夥伴系統管理員讀取者 | 檢視合作夥伴組織下所有註冊的數據。 此角色僅適用於下列 API: - 平衡 - 匯出 V2 (僅限 api-version 2025-03-01) - 產生成本詳細數據報告 - 市場平台 - 使用量價位表 - 成本管理價格表下載 - 產生保留詳細數據報告 - 預訂摘要 - 保留建議 - 預訂交易 |
4f6144c0-a809-4c55-b3c8-7f9b7b15a1bf |
- 需要下列使用者角色,才能指派每個服務主體角色:
- EnrollmentReader: 使用者指派必須具有 註冊寫入者角色。
- DepartmentReader:使用者指派必須具有註冊寫入者或部門寫入者角色。
- SubscriptionCreator: 使用者指派必須是 註冊帳戶擁有者 (EA 系統管理員)。
- EA 購買者:指派使用者必須具備註冊寫入者角色。
- 合作夥伴系統管理員讀者:使用者指派必須具有合作夥伴系統管理員 角色。
所有這些角色都是以程序設計方式建立的,不會顯示在 Azure 入口網站中,而且僅供程式設計使用。
當您將 EA 角色授與服務主體時,必須使用 billingRoleAssignmentName
必要屬性。 此參數是您需要提供的唯一 GUID。 您可以使用 New-Guid PowerShell 命令來產生 GUID。 您也可以使用線上 GUID/UUID 產生器網站來產生唯一 GUID。
服務主體只能有一個角色。
將註冊帳戶角色權限指派給服務主體
請閱讀角色指派 - Put REST API 一文。 當您閱讀本文時,請選取 [試用] 以開始使用服務主體。
使用您的帳戶認證,登入具有您想要指派之註冊存取權的租用戶。
提供下列參數作為 API 要求的一部分。
billingAccountName
:此參數是計費帳戶識別碼。 您可以在 Azure 入口網站的 [成本管理 + 計費] 概觀頁面上找到此識別碼。- 針對 合作夥伴系統管理員閱覽者 角色,請使用計費帳戶名稱的格式
pcn.{PCN}
,其中{PCN}
是您合作夥伴組織的合作夥伴客戶編號。 - 針對所有其他角色,請使用標準計費帳戶標識碼,如 Azure 入口網站所示。
- 針對 合作夥伴系統管理員閱覽者 角色,請使用計費帳戶名稱的格式
billingRoleAssignmentName
:此參數是您需要提供的唯一 GUID。 您可以使用 New-Guid PowerShell 命令來產生 GUID。 您也可以使用線上 GUID/UUID 產生器網站來產生唯一 GUID。api-version
:使用 2019-10-01-preview 版本。 使用角色指派 - 配置 - 範例中的範例要求本文。此要求本文具有 JSON 程式碼,其中包含您需要使用的三個參數。
參數 所在位置 properties.principalId
這是物件識別碼的值。 請參閱尋找您的服務主體和租用戶識別碼。 properties.principalTenantId
請參閱尋找您的服務主體和租用戶識別碼。 properties.roleDefinitionId
/providers/Microsoft.Billing/billingAccounts/{BillingAccountName}/billingRoleDefinitions/24f8edb6-1668-4659-b5e2-40bb5f3a7d7e
計費帳戶名稱與您在 API 參數中使用的參數相同。 這是您在 Azure 入口網站中看到的註冊識別碼。
請注意,
24f8edb6-1668-4659-b5e2-40bb5f3a7d7e
是 EnrollmentReader 的計費角色定義識別碼。
選取 [執行] 以啟動命令。
200 OK
回應顯示已成功新增服務主體。
現在您可以使用服務主體來自動存取 EA API。 服務主體擁有 EnrollmentReader 角色。
將 EA 購買者角色權限指派給服務主體
針對 EA 購買者角色,使用與註冊讀者相同的步驟。 使用下列範例來指定 roleDefinitionId
:
"/providers/Microsoft.Billing/billingAccounts/1111111/billingRoleDefinitions/ da6647fb-7651-49ee-be91-c43c4877f0c4"
將部門讀取者角色指派給服務主體
請閱讀註冊部門角色指派 - 配置 REST API 一文。 當您閱讀此文章時,請選取 [試用]。
使用您的帳戶認證,登入具有您想要指派之註冊存取權的租用戶。
提供下列參數作為 API 要求的一部分。
billingAccountName
:此參數是計費帳戶識別碼。 您可以在 Azure 入口網站的 [成本管理 + 計費] 概觀頁面上找到此識別碼。billingRoleAssignmentName
:此參數是您需要提供的唯一 GUID。 您可以使用 New-Guid PowerShell 命令來產生 GUID。 您也可以使用線上 GUID/UUID 產生器網站來產生唯一 GUID。departmentName
:此參數是部門識別碼。 您可以在 Azure 入口網站的 [成本管理 + 計費]>[部門] 頁面上看到部門識別碼。在此範例中,我們使用 ACE 部門。 此範例的識別碼為
84819
。api-version
:使用 2019-10-01-preview 版本。 使用註冊部門角色指派 - 配置中的範例。此要求本文具有 JSON 程式碼,其中包含您需要使用的三個參數。
參數 所在位置 properties.principalId
這是物件識別碼的值。 請參閱尋找您的服務主體和租用戶識別碼。 properties.principalTenantId
請參閱尋找您的服務主體和租用戶識別碼。 properties.roleDefinitionId
/providers/Microsoft.Billing/billingAccounts/{BillingAccountName}/billingRoleDefinitions/db609904-a47f-4794-9be8-9bd86fbffd8a
計費帳戶名稱與您在 API 參數中使用的參數相同。 這是您在 Azure 入口網站中看到的註冊識別碼。
db609904-a47f-4794-9be8-9bd86fbffd8a
的計費角色定義識別碼適用於部門讀者。
選取 [執行] 以啟動命令。
200 OK
回應顯示已成功新增服務主體。
現在您可以使用服務主體來自動存取 EA API。 服務主體擁有 DepartmentReader 角色。
將訂用帳戶建立者角色指派給服務主體
閱讀註冊帳戶角色指派 - 配置一文。 當您閱讀時,請選取 [試用] 將訂用帳戶建立者角色指派給服務主體。
使用您的帳戶認證,登入具有您想要指派之註冊存取權的租用戶。
提供下列參數作為 API 要求的一部分。 請閱讀註冊帳戶角色指派 - 配置 - URI 參數一文。
billingAccountName
:此參數是計費帳戶識別碼。 您可以在 Azure 入口網站的 [成本管理 + 計費] 概觀頁面上找到此識別碼。billingRoleAssignmentName
:此參數是您需要提供的唯一 GUID。 您可以使用 New-Guid PowerShell 命令來產生 GUID。 您也可以使用線上 GUID/UUID 產生器網站來產生唯一 GUID。enrollmentAccountName
:此參數是帳戶識別碼。 在 Azure 入口網站中的 [成本管理 + 計費] 頁面上尋找帳戶名稱的帳戶識別碼。在此範例中,我們使用
GTM Test Account
。 識別碼為196987
。api-version
:使用 2019-10-01-preview 版本。 使用註冊部門角色指派 - 配置 - 範例中的範例。此要求本文具有 JSON 程式碼,其中包含您需要使用的三個參數。
參數 所在位置 properties.principalId
這是物件識別碼的值。 請參閱尋找您的服務主體和租用戶識別碼。 properties.principalTenantId
請參閱尋找您的服務主體和租用戶識別碼。 properties.roleDefinitionId
/providers/Microsoft.Billing/billingAccounts/{BillingAccountID}/enrollmentAccounts/{enrollmentAccountID}/billingRoleDefinitions/a0bcee42-bf30-4d1b-926a-48d21664ef71
計費帳戶名稱與您在 API 參數中使用的參數相同。 這是您在 Azure 入口網站中看到的註冊識別碼。
a0bcee42-bf30-4d1b-926a-48d21664ef71
的計費角色定義識別碼適用於訂用帳戶建立者角色。
選取 [執行] 以啟動命令。
200 OK
回應顯示已成功新增服務主體。
現在您可以使用服務主體來自動存取 EA API。 服務主體擁有 SubscriptionCreator 角色。
確認服務主體角色指派
Azure 入口網站中看不到服務主體角色指派。 您可以檢視註冊帳戶角色指派,包括訂用帳戶建立者角色,以及計費角色指派 - 依註冊帳戶列出 - REST API (Azure 計費) (部分內容可能是機器或 AI 翻譯) API。 使用 API 確認角色指派是否成功。
疑難排解
您必須識別並使用已授與 EA 角色的企業應用程式物件識別碼。 如果您使用來自其他應用程式的物件識別碼,API 呼叫就會失敗。 確認您使用的是正確的企業應用程式物件識別碼。
如果您執行 API 呼叫時收到下列錯誤,則您可能不正確地使用位於 [應用程式註冊] 中的服務主體物件識別碼值。 若要解決此錯誤,請確定您使用的是來自企業應用程式的服務主體物件識別碼,而不是應用程式註冊。
The provided principal Tenant Id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and principal Object Id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx are not valid