写点什么

[Pulsar] 使用 Proxy 进行认证和鉴权

作者:Zike Yang
  • 2021 年 11 月 17 日
  • 本文字数:1192 字

    阅读完需:约 4 分钟

在 Pulsar 中,我们可以在 Broker 端设置认证和鉴权,同时也可以在 Proxy 端设置认证和鉴权,或者在 Proxy 上认证而在 Broker 上鉴权。本文将介绍如何在 Proxy 上进行认证和鉴权,以及如何将 Proxy 认证的 principal 传递给 Broker 并由 Broker 进行鉴权。

Proxy 设置认证

在 Pulsar Proxy 上设置认证的方法和在 Broker 上的一样,在proxy.conf中,我们首先需要开启认证,并设置所需要的AuthenticationProvider,我们也可以自定义实现AuthenticationProvider。如下是设置 JWT 认证方式的例子:

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

我们往往也会在 Broker 中设置认证,方法同上。而 Proxy 对于 Broker 只不过是一个客户端,Proxy 在与 Broker 建立连接的时候仍然需要进行认证,所以我们需要为 Proxy 设置所需要的 BrokerClient 的认证参数。如下设置了 JWT 认证的相关参数:

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

这样我们就完成了从 Client 到 Proxy 再到 Broker 的认证。

Proxy 设置鉴权

我们可以在 Proxy 中像设置 Broker 的鉴权一样设置鉴权,如下使用的是 Pulsar 默认的鉴权方式(我们也可以自定义鉴权方式):

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

Proxy 会与 Zookeeper 建立连接直接获取权限信息,而不会经过 Broker。

但是有时候我们已经在 Broker 设置好了鉴权,只需要让 Proxy 完成认证,并将客户的 AuthData 转发给 Broker,Broker 利用这个 AuthData 进行鉴权。此时我们需要通过如下的设置完成这个转发操作:

# Whether client authorization credentials are forwared to the broker for re-authorization.# Authentication must be enabled via authenticationEnabled=true for this to take effect.forwardAuthorizationCredentials=true
复制代码

这时 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
复制代码

如果没有携带 originalPrincipal,则 Broker 会返回错误。


通过本文,我们介绍了如何在 Proxy 上设置认证和鉴权,以及如何与 Broker 配合完成认证和鉴权,我们还可以自定义认证和鉴权的方式,具体的设置还需要参考实际的业务。

发布于: 56 分钟前阅读数: 6
用户头像

Zike Yang

关注

还未添加个人签名 2020.10.20 加入

Apache Pulsar Contributor

评论

发布
暂无评论
[Pulsar] 使用Proxy进行认证和鉴权