Zookeeper权限访问控制简介及实操
克日在某项目陈设实验进程中,举办了线上裂痕扫描后,在出具的漏扫陈诉中存在一个需修复项“Zookeeper 未授权会见”。通过查询相识,得知需通过添加身份认证的方法来办理该修复项,在修复、验证以及后续应用上线的进程中,遇到了系列题目,特作记录分享。 一、 题目先容 Zookeeper是漫衍式协同打点器材,常用来打点体系设置信息,提供漫衍式协同处事。Zookeeper以树状布局生涯数据,znode是Zookeeper的根基单位,可以存放数据信息、版本信息等等。如下图,/是Zookeeper的根节点,A、B、C和D均为znode。 Zookeeper这样的树状布局,在默认环境下,只必要提供Zookeeper处事端的IP和Port信息,任何用户可能客户端都可以直接毗连处事端,不必要任何特另外认证,就拥有对znode增、删、改、查、打点等操纵权限。这样的会见方法长短常不安详,较量轻易受到进攻和数据的改动。 二、 Zookeeper行使ACL举办会见节制 鉴于存在这样的安详隐患,Zookeeper通过ACL(Access Control List)的机制来办理这个题目。当客户端毗连到Zookeeper而且做认证的时辰,Zookeeper验证全部从毗连的处事端网络到的id,当处事端试图会见差异的znode节点时,将通过ACL来做验证。 ACL是由(scheme:expression, perms)对组成,expression的名目为如下内置schemes: a. world 有一个特定的的id, anyone,代表全部人。 b. auth 不行使任何id,代表任何已认证的用户。 c. digest 用 username:password 字符串来发生一个MD5串,然后该串被用来作为ACL ID。认证是通过明文发送username:password 来举办的,当用在ACL时,表达式为username:base64 ,base64是password的SHA1择要的编码。 d. ip 行使客户端的主机IP作为ACL ID 。 Perms的名目为如下操纵权限: a. CREATE:可以建设子节点,缩写为C; b. DELETE:可以获取节点下的数据以及目次下的列表,缩写为D; c. WRITE:可以在节点中写入数据,缩写为W; d. DELETE:可以删除子节点,缩写为D: e. ADMIN:可以配置权限,缩写为A; 这里有一点必要留意的是,ACL只合用于当前节点,它长短递归的,并且是不行递归的。好比/aaa节点对用户aaa只读,可是/aaa/bbb节点,对全部用户来说是world的认证方法。 三、 Zookeeper权限设置 通过文档相识后,拟实行行使digest的认证方法作为裂痕的修复本领。 起首登录Zookeeper节制台,如下图所示: 获取当前目次权限: 因为该处事器是已修复的,因此表现的是digest认证的信息。 从头在根目次下建设目次: 从这个步调可以看出,ACL的认证长短递归的,纵然根目次的权限是digest,建设的子目次权限如故是world。 下图通过setAcl的呼吁来配置新目次的权限,而且查察是见效的。 当登录后未行使digster认证时,就会提醒权限不敷。 四、 应用挪用修改 既然提供处事的Zookeeper增进了认证,那么挪用的java措施也是必要举办同步修改的。 按公司应用的布局,只必要添加对应设置即可。 其它在调试进程中发明,公司行使的第三方jar包zkclient.jar的版本是0.1,是不支持ACL的,需改换成高版本2.0即可。 作者先容 陈旭,资深应用维护工程师,结业于浙江大学软件工程学院,通过ITIL认证。先后在互联网创业公司、处所电子港口任职。首要认真中间件运维和自动化运维器材研发,致力于晋升运维处事的类型性和应用处事的高可用性。
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |