控制对事件的访问
Azure 事件中心支持 Microsoft Entra ID 和共享访问签名 (SAS) 处理身份验证和授权。 Azure 提供以下 Azure 内置角色,以便使用 Microsoft Entra ID 和 OAuth 授予对事件中心数据的访问权限:
- Azure 事件中心数据所有者:使用此角色授予对事件中心资源的完全访问权限。
- Azure 事件中心数据发送者:使用此角色授予对事件中心资源的发送访问权限。
- Azure 事件中心数据接收者:使用此角色授予对事件中心资源的接收访问权限。
使用托管标识授予访问权限
若要从应用程序中的托管标识授权对事件中心服务的请求,则需要为该托管标识配置 Azure 基于角色的访问控制设置。 Azure 事件中心定义 Azure 角色,这些角色涵盖了从事件中心进行发送和读取操作所需的权限。 将 Azure 角色分配到某个托管标识后,将在适当的范围授予该托管标识访问事件中心数据的权限。
使用 Microsoft 标识平台授予访问权限
搭配使用 Microsoft Entra ID 和事件中心的主要优点在于不再需要在代码中存储凭据。 可以从 Microsoft 标识平台请求 OAuth 2.0 访问令牌。 Microsoft Entra 对运行应用程序的安全主体(用户、组或服务主体)进行身份验证。 如果身份验证成功,Microsoft Entra ID 会将访问令牌返回应用程序,应用程序可随之使用访问令牌对 Azure 事件中心请求授权。
使用共享访问签名授予对事件中心发布者的访问权限
事件发布者定义事件中心的虚拟终结点。 发布者只可用于将消息发送到事件中心,而不可用于接收消息。 通常,事件中心为每个客户端使用一个发布者。 发送到事件中心的任何发布者的所有消息都会在该事件中心内排队。 发布者可以实现精细访问控制。
每个事件中心客户端都分配有一个唯一的令牌,该令牌将上传到客户端。 持有令牌的客户端只能向一个发布者发送消息,但不能向其他发布者发送消息。 如果多个客户端共享同一令牌,则其中每个客户端都会共享该发布者。
所有令牌都被分配了共享访问签名密钥。 通常,所有令牌使用同一密钥进行签名。 客户端不知道密钥,这可以防止客户端制造令牌。 客户端以相同的令牌运行,直到令牌过期。
使用共享访问签名授予对事件中心使用者的访问权限
若要对使用事件中心生成者生成的数据的后端应用程序进行身份验证,事件中心令牌身份验证要求其客户端对其事件中心命名空间或者事件中心实例或主题拥有管理权限或侦听权限。 通过使用者组使用事件中心内的数据。 尽管 SAS 策略可以提供精细范围,但此范围仅仅是在实体级别定义的,而不是在使用者级别定义的。 这意味着,在命名空间级别或者事件中心实例或主题级别定义的特权会应用到该实体的使用者组。