首页/新闻资讯/正文详情

Apache Pulsar 安全体系总览:角色令牌、可插拔认证提供商与凭证过期刷新机制

发布时间:2026/9/25 4:02:17 来源:云帆数科 栏目:资讯中心
Apache Pulsar 安全体系总览:角色令牌、可插拔认证提供商与凭证过期刷新机制
消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载本篇基于 Apache Pulsar 2.3 版本文档 Pulsar security overview 展开,系统讲解 Pulsar 作为业务核心消息总线时的安全模型:为什么默认部署是完全开放的、角色令牌(role token)如何把客户端身份与授权打通、认证提供商(Authentication Provider)的可插拔机制,以及 Broker 侧凭证过期周期检查(authenticationRefreshCheckSeconds,默认 60s)的完整刷新链路。读完后,你将能够理解 Pulsar 认证/授权的分层设计,并在 conf/broker.conf 中正确开启与调优认证相关配置。为什么 Pulsar 必须显式开启安全特性Pulsar 通常作为业务的中央消息总线,承担存储关键数据的职责,因此安全功能(加密、认证、授权)的启用至关重要。但必须认清一个默认状态:默认不加密、不认证、不授权:Pulsar 默认没有配置任何加密、认证或授权能力,任何客户端都可以通过明文服务 URL与 Broker/Proxy 通信。风险兜底手段:如果既没有开启认证/授权,就必须通过网络分段(Network segmentation)和/或授权 ACL 将明文 URL 的访问限制在可信客户端(可信 IP)范围内。如果两者都不做,集群处于完全开放状态,任何人都可以访问。组件级防护:文档同时提醒,应当保护 Pulsar 部署中的各个服务组件(即 Broker、Proxy、BookKeeper、ZooKeeper 等元数据/存储组件)。从当前仓库的配置可以印证这一默认姿态:conf/broker.conf 中认证相关段落全部处于关闭或留空状态:### --- Authentication --- ### # Enable authentication authenticationEnabledfalse # Authentication provider name list, which is comma separated list of class names authenticationProviders # Interval of time for checking for expired authentication credentials authenticationRefreshCheckSeconds60 # Enforce authorization authorizationEnabledfalseconf/proxy.conf、conf/standalone.conf、conf/websocket.conf中的同名参数同样是默认关闭的,也就是说安全能力必须由部署方显式开启并选择具体的认证实现。角色令牌(Role Tokens):身份与授权之间的桥梁在 Pulsar 中,角色(role)是一个字符串,例如admin或app1,它既可以代表单个客户端,也可以代表多个客户端。角色是权限控制的载体:你可以用角色来控制客户端对特定主题的发布/订阅权限,对租户配置的管理权限,等等。其工作链路在文档中描述得非常清晰,分为两步:认证(Authentication):Pulsar 使用一个可插拔的Authentication Provider来确认客户端的身份,并给该客户端分配一个role token(角色令牌);授权(Authorization/ACL):角色令牌随后被用于授权与 ACL 判定,决定该客户端被允许执行哪些操作。这里对应文档 Authentication and authorization in Pulsar 的展开内容:仅开启认证时,任何已认证的角色令牌都可以访问集群内的全部资源;真正限制客户端能做什么的是授权层,权限最高的角色是superusers,它们可以创建和销毁租户,并拥有所有租户资源的全量访问权。这一认证产出角色令牌 → 令牌驱动 ACL的分层,是整个 Pulsar 安全模型的核心骨架,后面的认证提供商与 Broker 刷新机制都围绕它展开。可插拔的认证提供商Pulsar 支持可插拔的认证机制:客户端借此与 Broker 和 Proxy 完成身份验证,并且 Broker 可以配置多个认证来源并存(authenticationProviders是逗号分隔的类名列表)。2.3.0 版本文档列出的认证提供商包括:TLS Authentication:基于 X.500 客户端证书的认证,见 TLS Authentication 文档;Athenz:基于 Apache(Athena)Z 身份体系的认证,见 Athenz 文档;Kerberos:基于 Kerberos 票据的认证;JSON Web Token(JWT):基于 JWT 令牌的认证,客户端侧配置与签发流程见 JWT client 文档 和 JWT admin 文档。可插拔在源码层面有直接对应:Pulsar 将认证抽象为AuthenticationProvider接口,每个提供商是一个独立实现,并按需拆分到不同模块中:认证提供商实现类(仓库相对路径)TLSAuthenticationProviderTlsJWT / TokenAuthenticationProviderTokenAthenzAuthenticationProviderAthenz从源码结构看,TLS 与 Token 属于 broker 公共依赖(pulsar-broker-common),而 Athenz 作为独立模块pulsar-broker-auth-athenz发布,部署方按需在authenticationProviders中引入对应类名即可,这正体现了文档所说的可配置多个认证来源的插件式设计。Broker 侧认证:连接建立、principal 留存与周期过期检查文档对 Broker 认证时序的关键描述如下,值得逐条对照实现:连接建立时校验凭证:Broker 在连接建立阶段验证客户端的认证凭证;认证一次,令牌留存:首次认证成功之后,认证得到的 principal(角色令牌)会被保存下来,用于后续每次请求的授权判定——连接本身不会重复认证;周期检查过期状态:Broker 会周期性检查每一个ServerCnx对象的凭证过期状态,检查频率由 Broker 配置项authenticationRefreshCheckSeconds控制,默认 60 秒;过期即强制重认证:凭证过期后,Broker 强制连接重新认证;若重认证失败,Broker 断开该客户端连接。上述流程在 ServerCnx 中有逐行可查的实现。认证完成后,Broker 会为该连接调度一个固定周期的刷新任务,周期直接取自配置项:// ServerCnx#maybeScheduleAuthenticationCredentialsRefresh authRefreshTask ctx.executor().scheduleAtFixedRate(this::refreshAuthenticationCredentials, service.getPulsar().getConfig().getAuthenticationRefreshCheckSeconds(), service.getPulsar().getConfig().getAuthenticationRefreshCheckSeconds(), TimeUnit.SECONDS);每个周期内refreshAuthenticationCredentials()的执行逻辑(参见 ServerCnx.java)与文档描述一一对应:authState.isExpired()为 false 时直接返回——凭证仍有效,无事可做;凭证过期且客户端支持认证刷新时,Broker 调用认证状态对象的refreshAuthentication()方法发起刷新,并通过Commands.newAuthChallenge(...)向客户端下发 auth challenge,进入重新认证握手;凭证过期但客户端不支持刷新(或刷新挑战超时未响应)时,Broker 记录告警并直接ctx.close()断开连接;刷新过程中抛出AuthenticationException时,Broker 同样断开连接。这里有一个容易被忽略的细节:文档提到Broker 支持学习某个客户端是否支持认证刷新。从源码看,这条判断体现在supportsAuthenticationRefresh()的调用上——不支持刷新的客户端在凭证过期时没有协商余地,只能被断开,因此部署方选择的客户端版本与认证插件必须支持凭证刷新,否则长连接会在令牌到期后必然中断。核心配置项一览结合 conf/broker.conf 的 Authentication 段落(第 721–758 行),与本文主题直接相关的配置项整理如下,均可在 Broker(以及 Proxy 的conf/proxy.conf)中配置:配置项默认值说明authenticationEnabledfalse是否开启认证,authenticationProviders只有在它开启后才生效authenticationProviders空认证提供商类名列表(逗号分隔),支持配置多个认证来源authenticationRefreshCheckSeconds60Broker 检查已建立连接凭证是否过期的周期(秒)authorizationEnabledfalse是否强制授权(ACL 检查)superUserRoles空超级用户角色名列表:可执行所有管理操作,并可发布/订阅所有主题proxyRoles—声明哪些角色是 Proxy 角色,涉及 Proxy 的原始 principal 透传与授权,详见 Authorization 文档 的 Proxy Roles 章节brokerClientAuthenticationPlugin/brokerClientAuthenticationParameters空Broker 自身作为客户端连接其他 Broker(同集群或跨集群复制)时使用的认证插件与参数从认证走向授权:role token 的后续旅程理解总览之后,下一步应当阅读与本文强相关的配套文档:Authentication and authorization in Pulsar:授权与 ACL 的落地方式——authorizationEnabledtrue与superUserRoles的开启、租户 admin 角色的权限边界、proxyRoles的两种管理策略(逐资源授权 vs. 将 Proxy 角色设为超级用户,后者在 Proxy 被攻破时会导致集群全量暴露);TLS transport encryption 与 Encryption 相关文档:弥补总览中默认不加密这一缺口,分别解决传输加密与消息体端到端加密问题;Extending security:当你发现内置的 TLS/Token/Athenz/Kerberos 提供商都不匹配企业身份体系时,如何自研认证/授权扩展。一句话总结这条主线:Pulsar 默认开放,安全由部署方显式装配——认证提供商负责你是谁(产出 role token),授权层负责你能做什么(基于 role token 判定 ACL),而authenticationRefreshCheckSeconds驱动的周期刷新机制则保证长连接的令牌不会静默过期;三者配合,才构成一个生产可用的 Pulsar 安全体系。赞分享消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载相关推荐WorkshopDL无需Steam客户端的终极Steam创意工坊模组下载器WorkshopDL无需Steam客户端的终极Steam创意工坊模组下载器 还在为无法在GOG或Epic Games Store上使用Steam创意工坊的模组消息队列后端流处理Apache Pulsar 安全机制全解析认证、授权与凭据刷新机制实践指南Apache Pulsar 安全机制全解析认证、授权与凭据刷新机制实践指南 导读 本文以 Apache Pulsar 安全体系为主线围绕可插拔认证Au消息队列后端流处理如何快速上手Qwen3-VL-30B-A3B-Instruct从安装到图像描述的完整教程如何快速上手Qwen3 VL 30B A3B Instruct从安装到图像描述的完整教程 Qwen3 VL 30B A3B Instruct是Qwen系列中最人工智能大模型多模态计算机视觉Qwen上一篇微信QQ消息防撤回全攻略彻底解决重要信息丢失问题下一篇CodexBar 的 Copilot 使用量接入全解GitHub 设备流登录、内部用量 API 与可选预算扩展创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

基于微信小程序与Django的工厂生产库存一体化系统
基于微信小程序与Django的工厂生产库存一体化系统

做中小工厂的信息化项目,最怕的不是代码难写,而是需求本身是散的。车间主任要的是“今天排了几个单、做到哪一步”,库管要的是“哪个料剩多少、够不够明天用”,老板要的是“这批货到底什么时候能发”。三方看的东西不一样&#xf… · 2026/9/25 4:02:11

UltraEdit自动换行与制表符设置:TaoToken统一Key下编辑配置骨架
UltraEdit自动换行与制表符设置:TaoToken统一Key下编辑配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:02:11

使用 TypeScript + LangChain.js + Bindu 构建 10 题 MCQ 测验 Agent:从 bindufy 配置到 JSON-RPC 调用完整实战
使用 TypeScript + LangChain.js + Bindu 构建 10 题 MCQ 测验 Agent:从 bindufy 配置到 JSON-RPC 调用完整实战

【免费下载链接】Bindu Bindu: The identity, communication, and payments layer for AI agents. 项目地址: https://gitcode.com/gh_mirrors/bin/Bindu 点击查看 免费下载 本文以 Bindu 仓库中的 typescript-langchain-quiz-agent 示例 为线索,完整讲… · 2026/9/25 4:02:11

华为CE8800密码过期警告处理:机制、操作与排查实战
华为CE8800密码过期警告处理:机制、操作与排查实战

上周远程登一台 CE8850 做季度巡检,SSH 连上去之后,屏幕上除了正常的版本信息,还多了一行格外扎眼的提醒:Warning: The password will expire in 21 days. The password needs to be changed, Continue? [Y/N]:干网络这一行&… · 2026/9/25 5:33:41

Atlas 300V部署YOLO全记录:从ONNX到OM的推理迁移实战
Atlas 300V部署YOLO全记录:从ONNX到OM的推理迁移实战

前阵子在客户现场折腾了一周,核心任务就一句话:把一张Atlas 300V 24G运算加速卡塞进服务器,把原本跑在GPU上的YOLO检测服务迁过去,还要保证1080P视频能实时出结果。这卡名字看着像显卡,但实际是专为AI推理设计的加速卡… · 2026/9/25 5:33:41

xberg C FFI 实战:用 force_ocr 强制对每一页 PDF 执行 OCR
xberg C FFI 实战:用 force_ocr 强制对每一页 PDF 执行 OCR

后端AI 应用NLP 【免费下载链接】xberg Polyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with … · 2026/9/25 5:33:41

docker-stacks 的 Lint 工作流实战:pre-commit 多工具检查与 Hadolint Dockerfile 规范落地
docker-stacks 的 Lint 工作流实战:pre-commit 多工具检查与 Hadolint Dockerfile 规范落地

云原生开发工具数据科学 【免费下载链接】docker-stacks Ready-to-run Docker images containing Jupyter applications 项目地址: https://gitcode.com/gh_mirrors/do/docker-stacks 点击查看 免费下载 本文基于 docs/contributing/lint.md 展开,介绍 … · 2026/9/25 5:33:41

Atlas 300V 24G推理卡实战:从ONNX到OM,高效部署YOLOv5/YOLOv8
Atlas 300V 24G推理卡实战:从ONNX到OM,高效部署YOLOv5/YOLOv8

1. 先搞清楚Atlas 300V到底是个什么卡1.1 一张加速卡的完整身份信息先说结论:Atlas 300V(尤其24G版本)是华为昇腾生态里的一款推理加速卡,不是训练卡,也不是普通的图形显卡。它基于昇腾310系列芯片(部分型号… · 2026/9/25 5:33:41

Docker快速入门:从环境一致性到生产就绪的实战路径
Docker快速入门:从环境一致性到生产就绪的实战路径

1. 为什么“Docker快速入门”不是一句空话,而是你今天必须动手的起点 我带过三届校招新人,也帮二十多家中小团队做过技术基建梳理。每次聊到容器化落地,总有人先叹气:“Docker太重了,学完还得配环境、调网络、写Docke… · 2026/9/25 5:33:35

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码