写点什么

[Pulsar] 设置认证和鉴权

作者:Zike Yang
  • 2021 年 12 月 18 日
  • 本文字数:885 字

    阅读完需:约 3 分钟

在 Pulsar 中,我们可以在 Broker 端设置认证和鉴权,让 Broker 对请求进行认证,并将认证所得到的 role 用作鉴权。本文将介绍 Pulsar 如何设置认证和鉴权。


认证

以 JWT 认证为例,在broker.conf中,我们首先需要开启认证,并设置所需要的AuthenticationProvider,我们也可以自定义实现AuthenticationProvider。如下是设置 JWT 认证方式的例子:

authenticationEnabled=trueauthenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderToken
复制代码

除此之外,因为 Broker 之间也需要通信,所以我们需要为 broker 通信所使用的客户端设置认证的方式和认证参数:

brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationTokenbrokerClientAuthenticationParameters={"token":"... ..."}
复制代码

此时,我们就完成了 JWT 认证的设置。不过目前还没有开启鉴权,所以认证成功的请求具有所有资源的所有操作权限。


鉴权

Pulsar 目前官方支持两种鉴权方式:默认的鉴权 PulsarAuthorization 以及多角色鉴权 MultiRolesAuthorization,多角色鉴权将对多个角色同时进行鉴权,当其中一个角色有权限时,则代表鉴权通过。用户也可以根据需求实现自己的鉴权方式。如下是 Pulsar 默认鉴权方式的设置:

# Enforce authorizationauthorizationEnabled=false
# Authorization provider fully qualified class-nameauthorizationProvider=org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider
复制代码

这时 Broker 在进行认证和鉴权时,除了有 Proxy 与 Broker 所建立的连接的 authRole,也有 Client 的 originalPrincipal。在鉴权的过程中,会首先完成对 Client 所提供的 originalPrincipal 的鉴权,然后再进行 Proxy 所携带的 authRole 的鉴权,如果forwardAuthorizationCredentials为 false,即 Proxy 不将 Client 的 AuthData 转发给 Broker,那么这时 Broker 只对 Proxy 的 authRole 鉴权。

我们也可以通过在 Broker 设置 ProxyRole,来强制让 Proxy 与 Broker 的连接都需要携带 Client 的 originalPrincipal,如下:

proxyRoles=my-proxy-role
复制代码


此时,我们就完成了 Broker 的认证和鉴权的设置。

发布于: 2 小时前阅读数: 4
用户头像

Zike Yang

关注

还未添加个人签名 2020.10.20 加入

Apache Pulsar Contributor

评论

发布
暂无评论
[Pulsar] 设置认证和鉴权