本文来源于阿里云社区电子书《阿里云产品四月刊》
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(4)https://developer.aliyun.com/article/1554223
插件化机制
为了适应未来持续发展的认证鉴权方式,以及满足用户针对特定场景的定制需求, RocketMQ ACL 2.0 在多个环节上提供了灵活性和可扩展性。
- 认证和授权策略的扩展:默认情况下,RocketMQ ACL 2.0 提供了无状态认证授权策略(Stateless)和有状态认证授权策略(Stateful),以满足绝大多数用户对安
全和性能的要求。但是,后续仍然可以探索出更优的策略,来兼顾安全和性能之间 的平衡。
- 认证和授权方式的扩展:当前,在认证方面,市场上已经沉淀了多种成熟的实现, RocketMQ 目前只实现了其中一种,通过插件化的能力进行预留,未来可以轻松的引入更多的认证机制。在授权方面,RocketMQ 基于 ABAC 模型实现了一套主流的授权方式,以适应广泛的用户需求。但也提供了插件化的能力,方便未来能适配 出更多贴合未来发展的解决方案。
- 认证和授权流程的编排:基于责任链设计模式,RocketMQ ACL 2.0 对其默认的认证和授权流程进行了灵活的编排。用户可以扩展或重写这些责任链节点,从而能够 定制针对其具体业务场景的认证和授权逻辑。
- 用户和权限存储的扩展:RocketMQ 默认采用 RocksDB 在 Broker 节点上本地存储用户和权限数据。然而,通过实现预定义的接口,用户可以轻松地将这些数据迁 移至任何第三方服务或存储系统中,从而优化其架构设计和操作效率。
审计日志
审计日志,用于记录和监控所有关于认证和授权的访问控制操作。通过升级日志,我们 可以追踪到每一个访问的请求,确保系统的可靠性和安全性,同时,它也有助于问题的 排查,进行安全的升级和满足合规的要求。
RocketMQ ACL 2.0 对认证和授权相关的审计日志都进行了支持,格式如下:
# 认证成功日志[AUTHENTICATION] User:rocketmq is authenticated success with Signature = eMX/+tH/7Bc0TObtDYMcK9Ls+gg=.# 认 证 失 败 日 志
[AUTHENTICATION] User:rocketmq is authenticated failed with Signature = eMX/+tH/7Bc0TObtDYMcK9Ls+xx=.
授权日志
# 授权成功日志[AUTHORIZATION] Subject = User:rocketmq is Allow Action = Pub from sourceIp = 192.168.0.2 on resource = Topic:TP-TEST for request = 10.# 授权失败日志[AUTHORIZATION] Subject = User:rocketmq is Deny Action = Sub from sourceIp = 192.168.0.2 on resource = Topic:GID-TEST for request = 10.
部署架构
在部署架构方面,RocketMQ 提供了两种部署形态,分别是存算一体架构和存算分离架构。
在 RocketMQ 存算一体架构中,Broker 组件同时承担了计算和存储的职责,并对外提供服务,接收所有客户端的访问请求。因此,由 Broker 组件承担认证和授权的重要角色。此外,Broker 组件还负责认证和授权相关的元数据的维护和存储。
在 RocketMQ 存算分离架构中,存储由 Broker 组件负责,计算由 Proxy 组件负责, 所有的对外请求都是由 Proxy 对外进行服务。因此,请求的认证和授权都由 Proxy 组件承担。Broker 承担元数据存储,为 Proxy 组件提供所需的认证和授权元数据的查询和管理服务。
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(6)https://developer.aliyun.com/article/1554220