阿里云云原生開源開發(fā)者沙龍 -RocketMQ ACL 2.0全新升級(jí) 消息系統(tǒng)企業(yè)級(jí)安全體系的進(jìn)化之路_第1頁
阿里云云原生開源開發(fā)者沙龍 -RocketMQ ACL 2.0全新升級(jí) 消息系統(tǒng)企業(yè)級(jí)安全體系的進(jìn)化之路_第2頁
阿里云云原生開源開發(fā)者沙龍 -RocketMQ ACL 2.0全新升級(jí) 消息系統(tǒng)企業(yè)級(jí)安全體系的進(jìn)化之路_第3頁
阿里云云原生開源開發(fā)者沙龍 -RocketMQ ACL 2.0全新升級(jí) 消息系統(tǒng)企業(yè)級(jí)安全體系的進(jìn)化之路_第4頁
阿里云云原生開源開發(fā)者沙龍 -RocketMQ ACL 2.0全新升級(jí) 消息系統(tǒng)企業(yè)級(jí)安全體系的進(jìn)化之路_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

RocketMQACL2.0全新升級(jí)徒鐘(丁雙喜)阿里云消息團(tuán)隊(duì)2024/04/13 02特性與原理NameServerNameServer客戶端RocketMQACL簡(jiǎn)介RocketMQ作為一款流行的分布式消息中間件,被廣泛應(yīng)用于各種大型分布式系統(tǒng)中,承擔(dān)著異步通信、系統(tǒng)解耦、削峰填谷和消息通知等重要角色隨著技術(shù)的演進(jìn)和業(yè)務(wù)規(guī)模的擴(kuò)大,安全挑戰(zhàn)日益突出,訪問控制變得尤為重要。然而現(xiàn)有的ACL1.0已經(jīng)無法滿足發(fā)展的需求訪問控制訪問控制用戶是否傳遞YY用戶是否存在YNNNN用戶簽名認(rèn)證YY用戶權(quán)限校驗(yàn)Y用戶是否傳遞YY用戶是否存在YNNNN用戶簽名認(rèn)證YY用戶權(quán)限校驗(yàn)YRocketMQACL1.0痛點(diǎn)問題全局全局IP白名單校驗(yàn)用戶用戶IP白名單校驗(yàn)是否是否admin用戶Y用戶權(quán)限校用戶權(quán)限校驗(yàn)Y繞過訪問控制的IP白名單缺乏對(duì)管控API精細(xì)化控制管控API的權(quán)限,僅支持Topic和Group的元數(shù)據(jù)管理、Broker配置等9個(gè)操作,集群管缺少集群組件間訪問控制可自行搭建Broker從節(jié)點(diǎn)或者Proxy組件,可繞過安全機(jī)制獲取集RocketMQACL2.0新特性概覽精細(xì)化的API資源權(quán)限定義?對(duì)系統(tǒng)涉及所有資源進(jìn)行定義,包括集授權(quán)資源的多種匹配模式?引入了三種靈活的匹配模式:完全匹?用戶根據(jù)資源的命名規(guī)范和結(jié)構(gòu)特點(diǎn),支持集群組件間訪問控制存儲(chǔ)層用戶數(shù)據(jù)應(yīng)用層核心層集成層用戶認(rèn)證和權(quán)限校驗(yàn)分離?通過兩個(gè)模塊進(jìn)行邏輯拆分,提供類似只認(rèn)證?兩個(gè)組件可以獨(dú)立發(fā)展,擴(kuò)展出多樣的認(rèn)證方安全性與性能之間的平衡?無狀態(tài)策略:每次請(qǐng)求都經(jīng)過認(rèn)證和授權(quán),確?有狀態(tài)策略:僅對(duì)首次請(qǐng)求進(jìn)行認(rèn)證和授權(quán),靈活可擴(kuò)展的插件化機(jī)制?設(shè)計(jì)了一套插件化框架,支持對(duì)認(rèn)證和授權(quán)策?滿足用戶根據(jù)自身業(yè)務(wù)場(chǎng)景定制和擴(kuò)展相應(yīng)的訪問控制模型普通用戶超級(jí)用戶操作操作環(huán)境基于屬性的訪問控制,通過用戶、資源、環(huán)境、操用戶資源認(rèn)證(Authentication)統(tǒng)一主體模型的抽象角色分級(jí)與權(quán)限賦予?普通用戶:需要明確授權(quán)。根據(jù)組織的政策和安全需求,賦予合適的權(quán)限用戶狀態(tài)一鍵禁啟用解析認(rèn)證參數(shù)查詢用戶Y解析認(rèn)證參數(shù)查詢用戶Y認(rèn)證流程YYNYNY客戶端流程?在構(gòu)建RPC請(qǐng)求時(shí),檢查是否設(shè)置了用戶名和密碼,若未配置,則直接?使用預(yù)定的加密算法對(duì)請(qǐng)求參數(shù)進(jìn)行加密處理,生成對(duì)應(yīng)的數(shù)字簽名(Signature)。服務(wù)端流程?獲取用戶密碼,服務(wù)端采用相同加密算法進(jìn)行加密生成數(shù)字簽名授權(quán)(Authorization)靈活的資源匹配模式?在資源類型方面,支持集群、命名空間、主題、消費(fèi)者組等類型,用于對(duì)不同統(tǒng)一的資源操作類型?在集群和資源管控的接口方面,統(tǒng)一映射為為CREATE、UPDATE、DELETE、堅(jiān)實(shí)的訪問環(huán)境控制YYYY授權(quán)流程YYNYNY客戶端流程?客戶端在構(gòu)建RPC請(qǐng)求時(shí),構(gòu)建本次調(diào)用接口的入?yún)?,接口定義對(duì)應(yīng)資服務(wù)端流程?對(duì)請(qǐng)求中和授權(quán)相關(guān)的數(shù)據(jù)進(jìn)行解析和組裝,包括用戶信息、訪問的資?根據(jù)用戶名獲取授權(quán)策略列表,對(duì)本次請(qǐng)求的資源、操作,以及環(huán)境進(jìn)授權(quán)參數(shù)解析1.硬編碼方式解析權(quán)限策略優(yōu)先級(jí)在權(quán)限策略匹配方面,由于支持多種資源匹配模式,可能出現(xiàn)同一個(gè)資源對(duì)應(yīng)多個(gè)權(quán)授權(quán)參數(shù)解析1.硬編碼方式解析權(quán)限策略優(yōu)先級(jí)在權(quán)限策略匹配方面,由于支持多種資源匹配模式,可能出現(xiàn)同一個(gè)資源對(duì)應(yīng)多個(gè)權(quán)對(duì)于消息發(fā)送和消費(fèi)這類接口,參數(shù)相對(duì)較為復(fù)雜,且請(qǐng)求頻次也相對(duì)較高??紤]到2.注解方式解析2.優(yōu)先級(jí)舉例假設(shè)配置了以下授權(quán)策略,按照以上優(yōu)先1*23Topic:test-*Topic:test-1234Topic:test-abcTopic:test-abc5Topic:test-abc-1Topic:test-abc-1對(duì)于大量的管控接口,采用硬編碼的方式工作量巨大,且這些接授權(quán)參數(shù)解析與權(quán)限策略優(yōu)先級(jí)無狀態(tài)策略?每個(gè)請(qǐng)求經(jīng)過完整的認(rèn)證和授權(quán)過程,可以提供最高級(jí)別的無狀態(tài)策略?每個(gè)請(qǐng)求經(jīng)過完整的認(rèn)證和授權(quán)過程,可以提供最高級(jí)別的安全保證?在流量較高場(chǎng)景下會(huì)導(dǎo)致性能下降,增加系統(tǒng)CPU開銷以及請(qǐng)求的耗時(shí)?對(duì)權(quán)限進(jìn)行變更,可以更加實(shí)時(shí)地反映在隨后的請(qǐng)求中,無需任何延遲安全與性能的權(quán)衡有狀態(tài)策略有狀態(tài)策略?可能存在會(huì)話被劫持的安全風(fēng)險(xiǎn),對(duì)權(quán)限的變更也無法做到實(shí)時(shí)的生效認(rèn)證和授權(quán)策略的擴(kuò)展?認(rèn)證和授權(quán)策略的擴(kuò)展?提供無狀態(tài)和有狀態(tài)兩種策略,滿足基本安全和性能要求?后續(xù)可以探索更優(yōu)的策略,來兼顧安全和性能之間的平衡認(rèn)證和授權(quán)方式的擴(kuò)展認(rèn)證和授權(quán)流程的編排?基于責(zé)任鏈設(shè)計(jì)模式,支持認(rèn)證授權(quán)流程進(jìn)行靈活的編排用戶和權(quán)限存儲(chǔ)的擴(kuò)展?采用RocksDB在Broker本地節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)和提供遠(yuǎn)程訪問?可數(shù)據(jù)搬遷到第三方存儲(chǔ)或服務(wù),優(yōu)化架構(gòu)設(shè)計(jì)和操作效率客戶端插件化機(jī)制認(rèn)證流程認(rèn)證流程認(rèn)證流程授權(quán)流程授權(quán)方式用戶存儲(chǔ)權(quán)限存儲(chǔ)授權(quán)策略認(rèn)證方式認(rèn)證策略部署架構(gòu)存算一體架構(gòu)存算分離架構(gòu)AuthenticationAuthenticationauthenticationEnableauthenticationEnableauthenticationProvider=vider.DefaultAuthenticationProviderinitAuthenticationUser={"username":"rocketmq","password":"12innerClientAuthenticationCredentials={"accessKey":"rocketmq","secretKey":"123authenticationMetadataProvider=vider.LocalAuthenticationMetadataP{"vider.DefaultAuthenticati"authenticationMetada"xy.auth.ProxyAuthenticationMetad"innerClientAuthenticationCredentials":"{\"\"secretKey\":\"12345678\"}"}認(rèn)證參數(shù)配置參數(shù)列表參數(shù)定義參數(shù)名稱參數(shù)描述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}授權(quán)參數(shù)配置參數(shù)列表參數(shù)定義參數(shù)名稱參數(shù)描述vider.DefaultAuthorizatiovider.LocalAuthorizationMexy.auth.ProxyAuthorizationMetadataProrg.apache.rocketmq.auth.authorization.strategy.StatelessAuthorizationStratorg.apache.rocketmq.auth.authorization.strategy.StatefulAuthorizationStrate用戶權(quán)限配置管理權(quán)限管理用戶管理權(quán)限管理接口定義接口定義接口名稱公共參數(shù)接口參數(shù)一可選)接口定義接口定義接口名稱公共參數(shù)接口參數(shù)一-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);客戶端使用生產(chǎn)者消費(fèi)者生產(chǎn)者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;擴(kuò)容和遷移擴(kuò)容擴(kuò)容接口定義:-u用戶名稱(可選)-s主體名稱(可選) 1.01.0到2.0遷移遷移開啟:特別說明:?未存在的用戶和權(quán)限,系

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論