《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(2)

本文涉及的产品
访问控制,不限时长
简介: 阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代

本文来源于阿里云社区电子书《阿里云产品四月刊》


《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)https://developer.aliyun.com/article/1554227


访问控制模型

 

基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC)是访问控制体系中两种主要的方法。RocketMQ ACL 2.0 将这两种方法进行了融合,打造出了一套更加灵活和强大的访问控制系统。

 

 

image.png

 

RBAC 是基于角色的访问控制模型,通过角色进行权限的分配。RocketMQ ACL 2.0用户角色划分为超级用户(Super)和普通用户(Normal),超级用户具有最高级别的    权限,能够无需授权即可访问资源,这简化了集群初始化及日常运维过程中的权限依赖  问题。而普通用户在访问资源之前,需要被赋予相应的权限,适用于业务场景中,对资  源进行按需访问。

 

ABAC  是基于属性的访问控制模型,通过用户、资源、环境、操作等多维属性来表达访问控制策略。RocketMQ ACL 2.0 为普通用户提供了这种灵活的访问控制机制。帮助管理员根据业务需求、用户职责等因素,对资源进行更加精细的访问控制。

 

在安全体系中,认证和授权分别扮演着不同的角色,RocetMQ ACL 2.0 将认证和授权进行了模块分离。这可以确保两个组件各司其职,降低系统的复杂度。认证服务致力于   验证用户身份的合法性,而授权服务则专注于管理用户权限和访问控制。这样的划分不   仅可以让代码更易于管理、维护和扩展,也为用户提供了使用上的灵活性。根据需求,  用户可以选择单独启用认证或授权服务,也可以选择同时启用两者。

 

这使得 RocketMQ ACL 既可以满足简单场景的快速部署,也能够适应复杂环境下对安全性的严格要求。

 

 

认证(Authentication)

 

认证作为一种安全机制,旨在验证发起访问请求者的身份真实性。它用于确保只有那些   经过身份验证的合法用户或实体才能访问受保护的资源或执行特定的操作。简而言之, 认证就是在资源或服务被访问之前回答你是谁?这个问题。

 

RocketMQ ACL 2.0  版本维持了与  ACL 1.0  相同的认证机制,即基于  AK/SK  的认证方式。这种方式主要通过对称加密技术来核验客户端的身份,保证敏感的认证信息(如  密码)不会在网络上明文传输,从而提升了整体的认证安全性。

 

主体模型

image.png

 

为了提升 RocketMQ 系统的访问控制和权限管理,ACL 2.0 针对主体模型做了以下改进和扩展:

 

  • 统一主体模型的抽象:为了实现不同实体的访问控制和权限管理,设计了统一的主    体接口,允许系统中多个实例作为资源访问的主体。用户作为访问资源的主体之一,  按照该模型实现了主体的接口。这为未来新实体类型的权限适配提供了扩展能力。

 

  • 角色分级与权限赋予:

 

  • 超级用户:为了简化管理流程,超级用户被自动授予了全部权限,无需单独配 置,从而简化了系统的初始化和日常的运维管理工作。
  • 普通用户:普通用户的权限则需要明确授权。ACL  2.0  提供了相关的权限管理工具,可以根据组织的政策和安全需求,为普通用户赋予合适的权限。
  • 支持用户状态管理:为了应对可能出现的安全风险,比如用户密码泄露,ACL  2.0  提供了用户的启用与禁用功能。当发生安全事件,可以通过禁用用户状态,快速进行  止血,从而达到阻止非法访问的目的。

 

 

认证流程

 

image.png

 

客户端流程:

 

  1. 客户端在构建  RPC  请求时,检查是否设置了用户名和密码,若未配置,则直接发送请求;

 

  1. 若已配置,则使用预设的加密算法对请求参数进行加密处理,并生成对应的数字签  (Signature)
  2. 在请求中附加用户名和 Signature,并将其发送至服务端以进行身份验证。

 

服务端流程:

 

  1. 服务端接收到请求后,首先检查是否开启认证,若未开启,则不校验直接通过;若  已开启了,则进入下一步。
  2. 服务端对请求进行认证相关的参数进行解析和组装,获取包括用户名和 Signature 等信息。
  3. 通过用户名在本地库中查询用户相关信息,用户不存在,则返回处理无;用户存在,  则进入下一步。
  4. 获取用户密码,采用相同的加密算法对请求进行加密生成 Signature,并和客户端传递的 Signature 进行比对,若两者一致,则认证成功,不一致,则认证失败。


《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(3)https://developer.aliyun.com/article/1554225

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
4天前
|
消息中间件 安全 API
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)
|
4天前
|
Cloud Native 关系型数据库 分布式数据库
《阿里云产品四月刊》—瑶池数据库云原生化和一体化产品能力升级
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
20天前
|
监控 大数据 Java
使用Apache Flink进行大数据实时流处理
Apache Flink是开源流处理框架,擅长低延迟、高吞吐量实时数据流处理。本文深入解析Flink的核心概念、架构(包括客户端、作业管理器、任务管理器和数据源/接收器)和事件时间、窗口、状态管理等特性。通过实战代码展示Flink在词频统计中的应用,讨论其实战挑战与优化。Flink作为大数据处理的关键组件,将持续影响实时处理领域。
153 5
|
2月前
|
消息中间件 Java Kafka
实时计算 Flink版操作报错之Apache Flink中的SplitFetcher线程在读取数据时遇到了未预期的情况,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
2月前
|
数据处理 Apache 流计算
|
2月前
|
消息中间件 关系型数据库 MySQL
Apache Flink CDC 3.1.0 发布公告
Apache Flink 社区很高兴地宣布发布 Flink CDC 3.1.0!
599 1
Apache Flink CDC 3.1.0 发布公告
|
21天前
|
数据采集 关系型数据库 MySQL
使用Apache Flink实现MySQL数据读取和写入的完整指南
使用Apache Flink实现MySQL数据读取和写入的完整指南
129 0
使用Apache Flink实现MySQL数据读取和写入的完整指南
|
24天前
|
消息中间件 Kafka 数据处理
Apache Flink:流式数据处理的强大引擎
【6月更文挑战第8天】Apache Flink是开源的流处理框架,专注于高效、低延迟的无界和有界数据流处理。它提供统一编程模型,支持实时与批量数据。核心概念包括DataStreams、DataSets、时间语义和窗口操作。使用Flink涉及环境设置、数据源配置(如Kafka)、数据转换(如map、filter)、窗口聚合及数据输出。通过丰富API和灵活时间语义,Flink适于构建复杂流处理应用,在实时数据处理领域具有广阔前景。
|
8天前
|
消息中间件 分布式计算 Kafka
深度分析:Apache Flink及其在大数据处理中的应用
Apache Flink是低延迟、高吞吐量的流处理框架,以其状态管理和事件时间处理能力脱颖而出。与Apache Spark Streaming相比,Flink在实时性上更强,但Spark生态系统更丰富。Apache Storm在低延迟上有优势,而Kafka Streams适合轻量级流处理。选型考虑延迟、状态管理、生态系统和运维成本。Flink适用于实时数据分析、复杂事件处理等场景,使用时注意资源配置、状态管理和窗口操作的优化。
|
16天前
|
消息中间件 Oracle 关系型数据库
实时计算 Flink版操作报错合集之连接RabbitMQ时遇到Could not find any factory for identifier 'rabbitmq' that implements 'org.apache.flink.table.factories.DynamicTableFactory'错误,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
366 0

热门文章

最新文章

推荐镜像

更多