使用 Microsoft Entra ID 授权访问 Azure 事件中心资源
Azure 事件中心支持使用 Microsoft Entra ID 对事件中心资源请求进行授权。 借助 Microsoft Entra ID,可使用 Azure 基于角色的访问控制 (RBAC) 授予对安全主体的访问权限,该安全主体可以是用户或应用程序服务主体。 若要详细了解角色和角色分配,请参阅了解不同的角色。
概述
当安全主体(用户或应用程序)尝试访问事件中心资源时,必须授权该请求。 如果使用 Microsoft Entra ID,访问资源流程需要两步。
- 首先,验证安全主体的身份并返回 OAuth 2.0 令牌。 请求令牌的资源名称是
https://eventhubs.chinacloudapi.cn/
,它对于所有云/租户都是相同的。 对于 Kafka 客户端,请求令牌的资源为https://<namespace>.servicebus.chinacloudapi.cn
。 - 接下来,将该令牌作为请求的一部分传递给事件中心服务,用于授权访问指定的资源。
身份验证步骤要求应用程序请求包含在运行时使用的 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 角色分配最多可能需要五分钟才能传播。
- 此内容适用于事件中心及用于 Apache Kafka 的事件中心。 有关用于 Kafka 的事件中心支持的详细信息,请参阅用于 Kafka 的事件中心 - 安全性和身份验证。
有关如何定义内置角色的详细信息,请参阅了解角色定义。 若要了解如何创建 Azure 自定义角色,请参阅 Azure 自定义角色。
示例
-
这些示例使用旧的 Microsoft.Azure.EventHubs 库,但你可以轻松地将其更新为使用最新的 Azure.Messaging.EventHubs 库。 要将示例从使用旧库迁移到使用新库,请参阅从 Microsoft.Azure.EventHubs 迁移到 Azure.Messaging.EventHubs 的指南。
-
此示例已更新为使用最新 Azure.Messaging.EventHubs 库。
相关内容
- 若要了解如何向安全主体分配内置 Azure 角色,请参阅使用 Microsoft Entra ID 对事件中心资源访问进行身份验证。
- 了解如何使用 Azure RBAC 创建自定义角色。
- 了解如何使用 Microsoft Entra ID 访问事件中心
请参阅以下相关文章: