使用 Microsoft Entra ID 授权访问 Azure 事件中心资源

Azure 事件中心 支持使用 Microsoft Entra ID 授权对 Event Hubs 资源的请求,提供安全的认证和细致访问控制。 通过使用 Microsoft Entra ID,您可以使用 Azure 基于角色的访问控制(Azure RBAC)来授予安全主体权限,如用户和应用服务主体。 这种方式消除了共享访问密钥的需求,提升了活动中心解决方案的安全性。

概述

当安全主体(用户或应用程序)尝试访问事件中心资源时,必须授权该请求。 通过使用 Microsoft Entra ID,资源访问是一个两步过程。

  1. 首先,验证安全主体的身份并返回 OAuth 2.0 令牌。 用于请求令牌的资源名称是 https://eventhubs.chinacloudapi.cn/,并且它在所有云和租户中都相同。 对于 Kafka 客户端,请求令牌的资源为 https://<namespace>.servicebus.chinacloudapi.cn
  2. 接下来,将该令牌作为请求的一部分传递给事件中心服务,用于授权访问指定的资源。

身份验证步骤要求应用程序请求包含在运行时使用的 OAuth 2.0 访问令牌。 如果应用程序运行在 Azure 实体中,如 Azure 虚拟机(VM)、虚拟机规模集或 Azure Functions 应用,它可以使用托管身份访问资源。 若要了解如何对托管标识向 Event Hubs 服务发出的请求进行身份验证,请参阅 使用 Microsoft Entra ID 和 Azure 资源的托管标识对 Azure 事件中心 资源的访问进行身份验证

授权步骤要求将一个或多个 Azure 角色分配给安全主体。 Azure 事件中心提供了涵盖事件中心资源权限集的 Azure 角色。 分配给安全主体的角色确定主体拥有的权限。 有关 Azure 角色的详细信息,请参阅 Azure 事件中心的内置 Azure 角色

向事件中心发送请求的本地应用和网页应用也可以通过使用 Microsoft Entra ID 进行授权。 若要了解如何请求访问令牌并使用它来授权对事件中心资源的请求,请参阅对使用 Microsoft Entra ID 从应用程序访问 Azure 事件中心进行身份验证

分配 Azure 角色以获得访问权限

Microsoft Entra 通过 Azure 基于角色的访问控制 (Azure RBAC) 对受保护资源的访问权限进行授权。 Azure 事件中心 定义了一组 Azure 内置角色,包含访问事件中心数据的通用权限集,你也可以自定义访问数据的角色。

当你为 Microsoft Entra 安全主体分配 Azure 角色时,Azure 会授予该安全主体的资源访问权限。 你可以对订阅级别、资源组、事件中心命名空间或其下的任何资源进行访问范围。 Microsoft Entra 的安全主体可以是用户、应用程序服务主体,或Azure 资源的托管身份

Azure 事件中心的 Azure 内置角色

Azure 提供了以下内置角色,用于通过使用 Microsoft Entra ID 和 OAuth 授权访问事件中心数据:

角色 说明
Azure 事件中心数据所有者 使用此角色可以授予对事件中心资源的完全访问权限。
Azure 事件中心数据发送者 使用此角色允许安全主体将事件发送到事件中心资源。
Azure 事件中心数据接收者 使用此角色允许安全主体从事件中心资源接收事件。

资源范围

向安全主体分配 Azure 角色之前,请确定安全主体应具有的访问权限的范围。 仅授予尽可能窄的权限范围。

以下列表描述了可将事件中心资源访问权限限定到哪些级别,从最小的范围开始:

  • 使用者组:在此范围,角色分配仅应用到此实体。 目前,Azure 门户不支持在此级别向安全主体分配 Azure 角色。
  • 事件中心:角色分配适用于事件中心及其使用者组。
  • 命名空间:角色分配横跨命名空间下事件中心的整个拓扑,并延伸至与之关联的使用者组。
  • 资源组:角色分配将应用到资源组下的所有事件中心资源。
  • 订阅:角色分配将应用到订阅的所有资源组中的所有事件中心资源。

注意

有关如何定义内置角色的详细信息,请参阅了解角色定义。 若要了解如何创建 Azure 自定义角色,请参阅 Azure 自定义角色

示例