阿里云云原生开源开发者沙龙 -RocketMQ ACL 2.0全新升级 消息系统企业级安全体系的进化之路_第1页
阿里云云原生开源开发者沙龙 -RocketMQ ACL 2.0全新升级 消息系统企业级安全体系的进化之路_第2页
阿里云云原生开源开发者沙龙 -RocketMQ ACL 2.0全新升级 消息系统企业级安全体系的进化之路_第3页
阿里云云原生开源开发者沙龙 -RocketMQ ACL 2.0全新升级 消息系统企业级安全体系的进化之路_第4页
阿里云云原生开源开发者沙龙 -RocketMQ ACL 2.0全新升级 消息系统企业级安全体系的进化之路_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

RocketMQACL2.0全新升级徒钟(丁双喜)阿里云消息团队2024/04/13 02特性与原理NameServerNameServer客户端RocketMQACL简介RocketMQ作为一款流行的分布式消息中间件,被广泛应用于各种大型分布式系统中,承担着异步通信、系统解耦、削峰填谷和消息通知等重要角色随着技术的演进和业务规模的扩大,安全挑战日益突出,访问控制变得尤为重要。然而现有的ACL1.0已经无法满足发展的需求访问控制访问控制用户是否传递YY用户是否存在YNNNN用户签名认证YY用户权限校验Y用户是否传递YY用户是否存在YNNNN用户签名认证YY用户权限校验YRocketMQACL1.0痛点问题全局全局IP白名单校验用户用户IP白名单校验是否是否admin用户Y用户权限校用户权限校验Y绕过访问控制的IP白名单缺乏对管控API精细化控制管控API的权限,仅支持Topic和Group的元数据管理、Broker配置等9个操作,集群管缺少集群组件间访问控制可自行搭建Broker从节点或者Proxy组件,可绕过安全机制获取集RocketMQACL2.0新特性概览精细化的API资源权限定义•对系统涉及所有资源进行定义,包括集授权资源的多种匹配模式•引入了三种灵活的匹配模式:完全匹•用户根据资源的命名规范和结构特点,支持集群组件间访问控制存储层用户数据应用层核心层集成层用户认证和权限校验分离•通过两个模块进行逻辑拆分,提供类似只认证•两个组件可以独立发展,扩展出多样的认证方安全性与性能之间的平衡•无状态策略:每次请求都经过认证和授权,确•有状态策略:仅对首次请求进行认证和授权,灵活可扩展的插件化机制•设计了一套插件化框架,支持对认证和授权策•满足用户根据自身业务场景定制和扩展相应的访问控制模型普通用户超级用户操作操作环境基于属性的访问控制,通过用户、资源、环境、操用户资源认证(Authentication)统一主体模型的抽象角色分级与权限赋予•普通用户:需要明确授权。根据组织的政策和安全需求,赋予合适的权限用户状态一键禁启用解析认证参数查询用户Y解析认证参数查询用户Y认证流程YYNYNY客户端流程•在构建RPC请求时,检查是否设置了用户名和密码,若未配置,则直接•使用预定的加密算法对请求参数进行加密处理,生成对应的数字签名(Signature)。服务端流程•获取用户密码,服务端采用相同加密算法进行加密生成数字签名授权(Authorization)灵活的资源匹配模式•在资源类型方面,支持集群、命名空间、主题、消费者组等类型,用于对不同统一的资源操作类型•在集群和资源管控的接口方面,统一映射为为CREATE、UPDATE、DELETE、坚实的访问环境控制YYYY授权流程YYNYNY客户端流程•客户端在构建RPC请求时,构建本次调用接口的入参,接口定义对应资服务端流程•对请求中和授权相关的数据进行解析和组装,包括用户信息、访问的资•根据用户名获取授权策略列表,对本次请求的资源、操作,以及环境进授权参数解析1.硬编码方式解析权限策略优先级在权限策略匹配方面,由于支持多种资源匹配模式,可能出现同一个资源对应多个权授权参数解析1.硬编码方式解析权限策略优先级在权限策略匹配方面,由于支持多种资源匹配模式,可能出现同一个资源对应多个权对于消息发送和消费这类接口,参数相对较为复杂,且请求频次也相对较高。考虑到2.注解方式解析2.优先级举例假设配置了以下授权策略,按照以上优先1*23Topic:test-*Topic:test-1234Topic:test-abcTopic:test-abc5Topic:test-abc-1Topic:test-abc-1对于大量的管控接口,采用硬编码的方式工作量巨大,且这些接授权参数解析与权限策略优先级无状态策略•每个请求经过完整的认证和授权过程,可以提供最高级别的无状态策略•每个请求经过完整的认证和授权过程,可以提供最高级别的安全保证•在流量较高场景下会导致性能下降,增加系统CPU开销以及请求的耗时•对权限进行变更,可以更加实时地反映在随后的请求中,无需任何延迟安全与性能的权衡有状态策略有状态策略•可能存在会话被劫持的安全风险,对权限的变更也无法做到实时的生效认证和授权策略的扩展•认证和授权策略的扩展•提供无状态和有状态两种策略,满足基本安全和性能要求•后续可以探索更优的策略,来兼顾安全和性能之间的平衡认证和授权方式的扩展认证和授权流程的编排•基于责任链设计模式,支持认证授权流程进行灵活的编排用户和权限存储的扩展•采用RocksDB在Broker本地节点存储数据和提供远程访问•可数据搬迁到第三方存储或服务,优化架构设计和操作效率客户端插件化机制认证流程认证流程认证流程授权流程授权方式用户存储权限存储授权策略认证方式认证策略部署架构存算一体架构存算分离架构AuthenticationAuthenticationauthenticationEnableauthenticationEnableauthenticationProvider=vider.DefaultAuthenticationProviderinitAuthenticationUser={"username":"rocketmq","password":"12innerClientAuthenticationCredentials={"accessKey":"rocketmq","secretKey":"123authenticationMetadataProvider=vider.LocalAuthenticationMetadataP{"vider.DefaultAuthenticati"authenticationMetada"xy.auth.ProxyAuthenticationMetad"innerClientAuthenticationCredentials":"{\"\"secretKey\":\"12345678\"}"}认证参数配置参数列表参数定义参数名称参数描述vider.DefaultAuthenticationProvide{"username":"rocketmq","password":{"accessKey":"rocketmq","secretKey":"123authenticationMvider.LocalAuthenticationMetadataxy.auth.ProxyAutorg.apache.rocketmq.auth.authentication.strategy.StatelessAuthenticationStrateorg.apache.rocketmq.auth.authentication.strategy.StatefulAuthenticationStrategauthorizationProviderauthorizationProvider=vider.DefaultAuthorizationPrauthorizationMetadataProvider=vider.LocalAuthorizationMetadataP{“authorizationProvider”:"vider.DefaultAuthoriza"xy.auth.ProxyAuthorizationM}授权参数配置参数列表参数定义参数名称参数描述vider.DefaultAuthorizatiovider.LocalAuthorizationMexy.auth.ProxyAuthorizationMetadataProrg.apache.rocketmq.auth.authorization.strategy.StatelessAuthorizationStratorg.apache.rocketmq.auth.authorization.strategy.StatefulAuthorizationStrate用户权限配置管理权限管理用户管理权限管理接口定义接口定义接口名称公共参数接口参数一可选)接口定义接口定义接口名称公共参数接口参数一-s主体名称(以主体类型开头,如User:rocketmq)-a操作类型(Pub、Sub等)-s主体名称(以主体类型开头,如User:rocketmq)-a操作类型(Pub、Sub等)-s主体名称(以主体类型开头,如User:rocketmq)情-s主体名称(以主体类型开头,如User:rocketmq)表-f过滤条件(支持主体名称模糊、资源名称查询)ClientServiceProviderprovider=ClientServiceProvider.ClientServiceProviderprovider=ClientServiceProvider.loadService();StaticSessionCredentialsProvidersessionCredentialsProvider=newStaticSessionCredentialsProvider(ACCESS_KEY,SECRET_KEY);ClientConfigurationclientConfiguration=ClientConfiguration.newBuilder().setEndpoints(ENDPOINTS).setCredentialProvider(sessionCredentialsProvider)Producerproducer=provider.newProducerBuilder().setClientConfiguration(clientConfiguration).setTopics(TOPICS)Messagemessage=provider.newMessageBuilder().setTopic(TOPIC).setBody(BODY)SendReceiptImplsendResult=(SendReceiptImpl)producer.send(message);客户端使用生产者消费者生产者ClientServiceProviderprovider=ClientServiceProvider.loadService();StaticSessionCredentialsProvidersessionCredentialsProvider=newStaticSessionCredentialsProvider(ACCESS_KEY,SECRET_KEY);ClientConfigurationclientConfiguration=ClientConfiguration.newBuilder().setEndpoints(ENDPOINTS).setCredentialProvider(sessionCredentialsProvider)FilterExpressionfilterExpression=newFilterExpression(TAG,FilterExpressionType.TAG);PushConsumerpushConsumer=provider.newPushConsumerBuilder().setClientConfiguration(clientConfiguration).setConsumerGroup(CONSUMER_GROUP).setSubscriptionExpressions(Collections.singletonMap(TOPIC,filterExpression)).setMessageListener(messageView->{returnConsumeResult.SUCCESS;扩容和迁移扩容扩容接口定义:-u用户名称(可选)-s主体名称(可选) 1.01.0到2.0迁移迁移开启:特别说明:•未存在的用户和权限,系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论