다음을 통해 공유

将企业协议角色分配给服务主体

可以在 Azure 门户中管理企业协议 (EA) 注册。 可以创建不同的角色来管理组织、查看成本和创建订阅。 本文通过配合使用 Azure PowerShell 和 REST API 与 Microsoft Entra ID 服务主体,帮助你自动执行其中一些任务。

注意

如果组织中有多个 EA 计费帐户,则必须在每个 EA 计费帐户中单独向 Microsoft Entra ID 服务主体授予 EA 角色。

在开始之前,请确保熟悉以下文章的内容:

需要通过某种方式来调用 REST API。 查询 API 的一些常用方式包括:

创建服务主体并对其进行身份验证

若要使用服务主体自动执行 EA 操作,需要创建 Microsoft Entra 应用标识,然后可以通过自动方式进行身份验证。

按照这些文章中的步骤通过使用服务主体进行创建和身份验证。

下面是应用程序注册页的一个示例。

显示“注册应用程序”的屏幕截图。

查找服务主体和租户 ID

需要服务主体的对象 ID 和租户 ID。 本文后面的权限分配操作需要此信息。 所有应用程序都在租户的 Microsoft Entra ID 中注册。 应用注册完成后,会创建两种类型的对象:

  • 应用程序对象 - 应用程序 ID 是你在企业应用程序下看到的信息。 不要使用 ID 来授予任何 EA 角色
  • 服务主体对象 - 可在 Microsoft Entra ID 的“企业注册”窗口中查看服务主体对象。 对象 ID 用于向服务主体授予 EA 角色。
  1. 打开 Microsoft Entra ID,然后选择“企业应用程序”

  2. 在列表中找到你的应用。

    显示示例企业应用程序的屏幕截图。

  3. 选择应用以查找应用程序 ID 和对象 ID:

    显示企业应用程序的应用程序 ID 和对象 ID 的屏幕截图。

  4. 转到 Microsoft Entra ID“概述”页,查找租户 ID

    显示租户 ID 的屏幕截图。

注意

Microsoft Entra 租户 ID 的值类似于采用以下格式的 GUID:aaaabbbb-0000-cccc-1111-dddd2222eeee

可分配给服务主体的权限

在本文的后面部分中,你将使用 EA 角色授予 Microsoft Entra 应用执行操作的权限。 只能将以下角色分配给服务主体,并且需要角色定义 ID,正如以下所示。

角色 允许的操作 角色定义 ID
EnrollmentReader 查看注册、部门和帐户范围内的数据。 数据包含范围内所有订阅的费用,包括跨租户的订阅。 可以查看注册相关的 Azure 预付(以前称为货币承诺)余额。 24f8edb6-1668-4659-b5e2-40bb5f3a7d7e
EA 买方 购买预留订单和查看预留交易。 它具有 EnrollmentReader 的所有权限,从而具有 DepartmentReader 的所有权限。 可以查看所有帐户和订阅的使用情况和费用。 可以查看注册相关的 Azure 预付(以前称为货币承诺)余额。 da6647fb-7651-49ee-be91-c43c4877f0c4
DepartmentReader 下载角色管理的部门的使用情况详细信息。 可以查看与角色的部门相关的使用情况和费用。 db609904-a47f-4794-9be8-9bd86fbffd8a
订阅创建者 在给定的帐户范围内创建新订阅。 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。

服务主体只能有一个角色。

将角色分配给服务主体

按照以下步骤将任何受支持的角色分配给服务主体:

  1. 使用适当的角色分配放置 REST API 并选择“试用”。 找到下表中使用的正确 API。 显示 Put 文章中“试用”选项的屏幕截图。

  2. 使用所需的访问权限登录到租户。

  3. 在 API 请求中提供以下参数:

    • billingAccountName计费帐户 ID。 对于合作伙伴管理员读者角色,请使用格式 pcn.{PCN} (其中 {PCN} 是您的合作伙伴客户编号)。 对于所有其他角色,请使用 Azure 门户中的标准计费帐户 ID。

    显示“计费帐户 ID”的屏幕截图。

    • billingRoleAssignmentName:您生成的唯一 GUID(请参阅 New-Guid)。
    • api-version:除非另有说明,否则使用 2019-10-01-preview
    • 请求正文参数:
      • properties.principalId:服务主体的对象 ID。
      • properties.principalTenantId:租户 ID。
      • properties.roleDefinitionId:使用下表中的值。
角色 分配所需的用户角色 角色定义 ID API 参考文档 注释
EnrollmentReader 注册程序编写员 24f8edb6-1668-4659-b5e2-40bb5f3a7d7e 角色分配 - Put
EA 买方 注册编写器 da6647fb-7651-49ee-be91-c43c4877f0c4 角色分配 - Put
DepartmentReader 注册编写器或部门编写器 db609904-a47f-4794-9be8-9bd86fbffd8a 注册部门角色分配 - 设置 使用 departmentName 参数。
订阅创建者 注册帐户所有者(EA 管理员) a0bcee42-bf30-4d1b-926a-48d21664ef71 注册帐户角色分配 - Put 使用 enrollmentAccountName 参数。
合作伙伴管理员读取者 合作伙伴管理员 4f6144c0-a809-4c55-b3c8-7f9b7b15a1bf 角色分配 - Put 使用pcn.{PCN} 作为 billingAccountName。
  1. 选择 “运行” 以执行命令。

显示示例角色分配的屏幕截图,其中包含已准备好运行的示例信息。

  1. 响应 200 OK 表示服务主体已成功分配角色。

验证服务主体角色分配

服务主体角色分配在 Azure 门户中不可见。 使用计费角色分配 - 按注册帐户列出 - REST API(Azure 计费)API,可以查看注册帐户角色分配,包括订阅创建者角色。 使用该 API 来验证是否成功进行角色分配。

故障排除

你必须标识并使用你向其授予 EA 角色的 Enterprise 应用程序对象 ID。 如果使用其他应用程序的对象 ID,API 调用将失败。 验证是否正在使用正确的 Enterprise 应用程序对象 ID。

如果在进行 API 调用时收到以下错误,则你可能错误地使用了位于应用注册中的服务主体对象 ID 值。 若要解决此错误,请确保正在使用企业应用程序中的服务主体对象 ID,而不是应用注册。

The provided principal Tenant Id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and principal Object Id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx are not valid

后续步骤

企业协议计费帐户入门