將 Enterprise 合約角色指派給服務主體
您可以在 Azure 入口網站中管理 Enterprise 合約 (EA) 註冊。 您可以建立不同的角色來管理組織、檢視成本及建立訂閱。 本文可協助您使用 Azure PowerShell 和 REST API 搭配 Microsoft Entra ID 服務主體,將其中一些工作自動化。
注意
如果您的組織中有多個 EA 計費帳戶,則必須在每個 EA 計費帳戶中個別將 EA 角色授與 Microsoft Entra ID 服務主體。
開始之前,請確定您已熟悉下列文章:
您需要呼叫 REST API 的方法。 查詢 API 的一些熱門方式如下:
- Visual Studio
- Insomnia
- Bruno
- PowerShell 的 Invoke-RestMethod
- Curl
建立並驗證您的服務主體
若要使用服務主體將 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 |
- EnrollmentReader 角色只能由具有註冊寫入者角色的使用者指派給服務主體。 指派給服務主體的 EnrollmentReader 角色不會顯示在 Azure 入口網站中。 它是以程式設計方式建立的,並僅供程式設計使用。
- DepartmentReader 角色只能由具有註冊寫入者或部門寫入者角色的使用者指派給服務主體。
- SubscriptionCreator 角色只能由註冊帳戶擁有者 (EA 管理員) 的使用者指派給服務主體。 該角色不會顯示在 Azure 入口網站中。 它是以程式設計方式建立的,並僅供程式設計使用。
- EA 購買者角色不會顯示在 Azure 入口網站中。 它是以程式設計方式建立的,並僅供程式設計使用。
當您將 EA 角色授與服務主體時,必須使用 billingRoleAssignmentName
必要屬性。 此參數是您需要提供的唯一 GUID。 您可以使用 New-Guid PowerShell 命令來產生 GUID。 您也可以使用線上 GUID/UUID 產生器網站來產生唯一 GUID。
服務主體只能有一個角色。
將註冊帳戶角色權限指派給服務主體
請閱讀角色指派 - Put REST API 一文。 當您閱讀此文章時,請選取 [試試看] 以開始使用服務主體。
使用您的帳戶認證,登入具有您想要指派之註冊存取權的租用戶。
提供下列參數作為 API 要求的一部分。
billingAccountName
:此參數是計費帳戶識別碼。 您可以在 Azure 入口網站的 [成本管理 + 計費] 概觀頁面上找到此識別碼。billingRoleAssignmentName
:此參數是您需要提供的唯一 GUID。 您可以使用 New-Guid PowerShell 命令來產生 GUID。 您也可以使用線上 GUID/UUID 產生器網站來產生唯一 GUID。api-version
:使用 2019-10-01-preview 版本。 使用角色指派 - Put - 範例中的範例要求本文。此要求本文具有 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"
將部門讀取者角色指派給服務主體
請閱讀註冊部門角色指派 - Put REST API 一文。 當您閱讀此文章時,請選取 [試試看]。
使用您的帳戶認證,登入具有您想要指派之註冊存取權的租用戶。
提供下列參數作為 API 要求的一部分。
billingAccountName
:此參數是計費帳戶識別碼。 您可以在 Azure 入口網站的 [成本管理 + 計費] 概觀頁面上找到此識別碼。billingRoleAssignmentName
:此參數是您需要提供的唯一 GUID。 您可以使用 New-Guid PowerShell 命令來產生 GUID。 您也可以使用線上 GUID/UUID 產生器網站來產生唯一 GUID。departmentName
:此參數是部門識別碼。 您可以在 Azure 入口網站的 [成本管理 + 計費]>[部門] 頁面上看到部門識別碼。在此範例中,我們使用 ACE 部門。 此範例的識別碼為
84819
。api-version
:使用 2019-10-01-preview 版本。 使用註冊部門角色指派 - Put 中的範例。此要求本文具有 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 角色。
將訂用帳戶建立者角色指派給服務主體
閱讀註冊帳戶角色指派 - Put 一文。 當您閱讀時,請選取 [試試看] 將訂用帳戶建立者角色指派給服務主體。
使用您的帳戶認證,登入具有您想要指派之註冊存取權的租用戶。
提供下列參數作為 API 要求的一部分。 請閱讀註冊帳戶角色指派 - Put - URI 參數一文。
billingAccountName
:此參數是計費帳戶識別碼。 您可以在 Azure 入口網站的 [成本管理 + 計費] 概觀頁面上找到此識別碼。billingRoleAssignmentName
:此參數是您需要提供的唯一 GUID。 您可以使用 New-Guid PowerShell 命令來產生 GUID。 您也可以使用線上 GUID/UUID 產生器網站來產生唯一 GUID。enrollmentAccountName
:此參數是帳戶識別碼。 在 Azure 入口網站的 [成本管理 + 計費] 頁面上尋找帳戶名稱的帳戶識別碼。在此範例中,我們使用
GTM Test Account
。 識別碼為196987
。api-version
:使用 2019-10-01-preview 版本。 使用註冊部門角色指派 - Put - 範例中的範例。此要求本文具有 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 計費) 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