Skip to content

RIP 5 RocketMQ ACL

Heng Du edited this page Jan 9, 2019 · 1 revision

ACL Design

èźŸèźĄç›źæ ‡

äžș Apache RocketMQ æäŸ›æƒé™èźżé—źæŽ§ćˆ¶

总䜓攁皋

ćźąæˆ·ç«Żé€šèż‡ RPCHook æłšć…„AccessKeyïŒŒä»„ćŠćˆ©ç”š SecretKey ç­ŸććŸ—ćˆ°çš„ç­ŸćïŒ› æœćŠĄç«Żé€šèż‡ RPCHookćŻčç­Ÿćèż›èĄŒæ ĄéȘŒïŒŒćč¶ćŻč AccessKey æ‰€æ‹„æœ‰çš„æƒé™èż›èĄŒæ ĄéȘŒïŒŒæ ĄéȘŒäžèż‡ïŒŒæŠ›ć‡șćŒ‚ćžžïŒ›

æŽ„ćŁèźŸèźĄ

ć‚è€ƒ AccessResource 撌 AccessValidator

æƒé™ćźšäč‰

权限 搫äč‰
DENY 拒绝
ANY PUB 或者 SUB 权限
PUB ć‘é€æƒé™
SUB èźąé˜…æƒé™

ć‚è€ƒ Permission æ–čæł•。

æƒé™è§Łæž

ćŻčèŻ·æ±‚èż›èĄŒè§ŁæžïŒŒæ‹żćˆ°éœ€èŠé‰Žæƒçš„ć­—æź”ă€‚

äž»èŠćŒ…æ‹ŹïŒš 1.AccessKey类䌌äșŽç”šæˆ·ćïŒŒä»ŁæŒ‡ç”šæˆ·äž»äœ“ïŒŒæƒé™æ•°æźäžŽäč‹ćŻčćș” 2.SignatureïŒŒćźąæˆ·æ čæź SecretKey ç­ŸććŸ—ćˆ°çš„äžČïŒŒæœćŠĄç«Żć†ç”šSecretKeyèż›èĄŒç­ŸćéȘŒèŻïŒ› 3.ResourceMap, 搄äžȘ蔄æșä»„ćŠæ‰€éœ€çš„æƒé™ïŒ›Topic 的蔄æșćć°±æ˜Ż Topic ćć­—ïŒŒConsumerGroup 的蔄æșćć°±æ˜Ż %RETRY% + ConsumerGroup ćć­—ïŒ›

ć‚è€ƒ PlainAccessValidator 的 parse æ–čæł•。

æƒé™æ ĄéȘŒ

æ ĄéȘŒé€»èŸ‘

  1. æŁ€æŸ„æ˜ŻćŠć‘œäž­ć…šć±€ IP ç™œćć•ïŒ›ćŠ‚æžœæ˜ŻïŒŒćˆ™èź€äžșæ ĄéȘŒé€šèż‡ïŒ›ćŠćˆ™è”° 2
  2. æŁ€æŸ„æ˜ŻćŠć‘œäž­ç”šæˆ· IP ç™œćć•ïŒ›ćŠ‚æžœæ˜ŻïŒŒćˆ™èź€äžșæ ĄéȘŒé€šèż‡ïŒ›ćŠćˆ™è”° 3
  3. æ ĄéȘŒç­ŸćïŒŒæ ĄéȘŒäžé€šèż‡ïŒŒæŠ›ć‡șćŒ‚ćžžïŒ›æ ĄéȘŒé€šèż‡ïŒŒćˆ™è”° 4
  4. ćŻčç”šæˆ·èŻ·æ±‚æ‰€éœ€çš„æƒé™ 撌 ç”šæˆ·æ‰€æ‹„æœ‰çš„æƒé™èż›èĄŒæ ĄéȘŒïŒ›äžé€šèż‡ïŒŒæŠ›ć‡șćŒ‚ćžžïŒ›

ç”šæˆ·æ‰€éœ€æƒé™çš„æ ĄéȘŒéœ€èŠæłšæ„ć·Č例憅ćźč 1.ç‰čæźŠçš„èŻ·æ±‚äŸ‹ćŠ‚ UPDATE_AND_CREATE_TOPIC 等ćȘ胜由 admin èŽŠæˆ·èż›èĄŒæ“äœœïŒ› 2.ćŻčäșŽæŸäžȘ蔄æșïŒŒćŠ‚æžœæœ‰æ˜Ÿæ€§é…çœźæƒé™ïŒŒćˆ™é‡‡ç”šé…çœźçš„æƒé™ïŒ›ćŠ‚æžœæČĄæœ‰æ˜Ÿæ€§é…çœźæƒé™ïŒŒćˆ™é‡‡ç”šé»˜èź€çš„æƒé™ïŒ›

ć‚è€ƒ PlainPermissionLoader 的 validate æ–čæł•。

æƒé™ć­˜ć‚š

é»˜èź€ćźžçŽ°æ˜ŻćŸșäșŽ yml çš„æ–‡ä»¶ć­˜ć‚šă€‚

热感矄 æŁ€æ”‹ćŻč权限文件的æ”čćŠšïŒŒćč¶è‡ȘćŠšćˆ·æ–°æƒé™æ•°æźă€‚

æ•°æźæ ŒćŒïŒš

ć­—æź” ć–ć€Œ 搫äč‰
globalWhiteRemoteAddresses *;192.168.*.*;192.168.0.1 ć…šć±€IPç™œćć•
accessKey 歗笩äžČ Access Key
secretKey 歗笩äžČ Secret Key
whiteRemoteAddress *;192.168.*.*;192.168.0.1 甚户IPç™œćć•
admin true;false æ˜ŻćŠçźĄç†ć‘˜èŽŠæˆ·
defaultTopicPerm DENY;PUB;SUB;PUB|SUB é»˜èź€çš„Topic权限
defaultGroupPerm DENY;PUB;SUB;PUB|SUB é»˜èź€çš„ConsumerGroup权限
topicPerms topic=权限 搄äžȘTopic的权限
groupPerms group=权限 搄äžȘConsumerGroup的权限

ć‚è€ƒ transport.yml

Clone this wiki locally