天天看點

Pulsar叢集和PulsarManager添加JWT認證一、Pulsar添加JWT認證二、配置設定權限并驗證三、修改pulsar-manger的配置

Pulsar叢集和PulsarManager添加JWT認證

  • 一、Pulsar添加JWT認證
    • 1. 生成秘鑰對
    • 2. 生成用于超級管理者的 token
    • 3. 生成給測試使用者的 token
    • 4.配置叢集broker的broker.conf
    • 5. 重新開機 broker
  • 二、配置設定權限并驗證
    • 1.給普通使用者賦生産和消費權限
    • 2.驗證token
    • 3.驗證生産資料
    • 4.普通使用者回收權限
    • 5.修改client配置
    • 6.檢視命名空間權限配置
  • 三、修改pulsar-manger的配置
本文将介紹Pulsar叢集添加JWT認證及Pulsar的管理界面pulsar-manager的相關配置,加密方式采用的非對稱加密,Pulsar的版本為v2.9.1,pulsar-manger的版本為v0.2.0。

一、Pulsar添加JWT認證

Pulsar官網對這塊的描述很詳細,可以進行參考。

1. 生成秘鑰對

bin/pulsar tokens create-key-pair --output-private-key jwt-private.key --output-public-key jwt-public.key
           

2. 生成用于超級管理者的 token

bin/pulsar tokens create --private-key jwt-private.key --subject admin
           

以下為管理者的示例token

eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.xxxxxxxxxxxxxA
           

3. 生成給測試使用者的 token

可通過

--expiry-time

設定token的有效期,1y有效期為1年。

bin/pulsar tokens create --private-key jwt-private.key --subject test-user --expiry-time 1y
           

以下為測試使用者的示例token

eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.xxxxxxxxxxxxxB
           

4.配置叢集broker的broker.conf

broker的配置和官網描述的有所不同,注意不要配置錯誤,否則無法使用。

叢集中的每個節點的broker的配置都要修改,并且将public.key檔案分發到各個節點。

brokerClientAuthenticationParameters配置的為超級管理者的token

# 開啟認證
authenticationEnabled=true
# 認證提供者
authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderToken
# 開啟授權
authorizationEnabled=true
# 超級管理者
superUserRoles=admin
# broker Client 使用等認證插件
brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
# broker Client 通訊使用的 token(需要 admin role)
brokerClientAuthenticationParameters={"token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.xxxxxxxxxxxxxA"}
# 使用 tokenPublicKey 的公鑰檔案位置
tokenPublicKey=/usr/local/apache-pulsar-2.9.1/jwt-public.key
           

5. 重新開機 broker

bin/pulsar-daemon stop broker
bin/pulsar-daemon start broker
           

二、配置設定權限并驗證

1.給普通使用者賦生産和消費權限

--auth-params為超級管理者的token

bin/pulsar-admin \
--admin-url "http://127.0.0.1:8080/" \
--auth-params {"token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.xxxxxxxxxxxxxA"} \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \
namespaces grant-permission public/default --role test-user --actions produce,consume
           

2.驗證token

驗證超級管理者的token

驗證普通使用者的token

3.驗證生産資料

驗證超級管理者生産資料

bin/pulsar-client \
--url "pulsar://127.0.0.1:6650" \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \
--auth-params {"token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.xxxxxxxxxxxxxA"} \
produce public/default/test-token -m "hello pulsar" -n 10
           

驗證普通使用者生産資料

bin/pulsar-client \
--url "pulsar://127.0.0.1:6650" \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \
--auth-params {"token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.xxxxxxxxxxxxxB"} \
produce public/default/test-token -m "hello pulsar" -n 10
           

4.普通使用者回收權限

--auth-params為超級管理者的token

bin/pulsar-admin \
--admin-url "http://127.0.0.1:8080/" \
--auth-params {"token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.xxxxxxxxxxxxxA"} \
--auth-plugin "org.apache.pulsar.client.impl.auth.AuthenticationToken" \
namespaces revoke-permission public/default --role test-user 
           

5.修改client配置

修改叢集中所有節點的client.conf,這樣在pulsar叢集中執行pulsar-client指令時,就不用帶許多參數了。

修改完成之後需要重新開機broker

authParams為超級管理者的token

webServiceUrl=http://localhost:8080/
brokerServiceUrl=pulsar://localhost:6650/
authPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
authParams=token:eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.xxxxxxxxxxxxxA
           

6.檢視命名空間權限配置

bin/pulsar-admin namespaces permissions public/default
           

三、修改pulsar-manger的配置

在給Pulsar添加了認證相關的配置後,發現pulsar-manger的管理頁面是無法使用的,需要我們也進行token相關的配置。

修改pulsar-manager目錄下的application.properties檔案中jwt相關的配置。

backend.jwt.token為超級管理者的token

backend.jwt.token=eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.xxxxxxxxxxxxxA
jwt.broker.token.mode=PRIVATE
jwt.broker.public.key=/usr/local/apache-pulsar-2.9.1/jwt-public.key
jwt.broker.private.key=/usr/local/apache-pulsar-2.9.1/jwt-private.key
           

修改完配置後,重新開機pulsar-manger即可。

繼續閱讀