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

Azure 事件中心支持使用 Microsoft Entra ID 对事件中心资源请求进行授权。 借助 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 函数应用)中运行,那么,它就可以使用托管标识来访问这些资源。 若要了解如何对托管标识向事件中心服务发出的请求进行身份验证,请参阅对使用 Microsoft Entra ID 和 Azure 资源的托管标识访问 Azure 事件中心资源进行身份验证

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

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

分配 Azure 角色以授予访问权限

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

将 Azure 角色分配到 Microsoft Entra 安全主体后,Azure 会向该安全主体授予对这些资源的访问权限。 访问权限的范围可限定为订阅、资源组、事件中心命名空间级别或其下的任何资源。 Microsoft Entra 安全主体可以是用户或应用程序服务主体,也可以是 Azure 资源的托管标识

Azure 事件中心的内置 Azure 角色

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

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

资源范围

向安全主体分配 Azure 角色之前,请确定安全主体应具有的访问权限的范围。 最佳做法指出,最好是授予尽可能小的范围。

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

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

注意

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

示例

后续步骤

请参阅以下相关文章: