ACL(Access control Lists)java
Scheme : id : permission 好比 : world : anyone:crdwaapache
scheme : 验证过程当中使用的检验策略运维
Id :权限被赋予的对象,好比ip或者某个用户ide
Permission为权限,上面crdwa,表示五个权限组合编码
经过setACL 命令设置节点的权限code
节点的acl不具备继承关系server
getACL能够查看节点的acl信息对象
CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为 crwda(即:每一个单词的首字符缩写)继承
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操做权限图片
Scheme:id:permission
id为固定值 :anyone,表示任何用户
world:anyone:crdwa 表示任何用户都具备crdwa权限
Scheme:id:permission 好比:auth:username:password:crdwa
表示给认证经过的全部用户设置acl权限
同时能够添加多个用户
经过addauth命令进行认证用户的添加
addauth digest <username>:<password>
Auth 策略的本质就是digest
若是经过addauth 建立多组用户和密码,当使用setAcl修改权限时,全部的用户和密码的权限都会跟着修改
经过addauth新建立的用户和密码组须要从新调用setAcl才会加入到权限组中去
Scheme:id:permission 好比:digest:username:password:crdwa
指定某个用户及它的密码能够访问
此处的username:password必须通过 SHA-1和BASE64编码 BASE64(SHA1(username:password))
经过addauth命令进行认证用户的添加 addauth digest <username>:<password>
scheme:id:permission ,好比 ip:127.0.0.1:crdwa
指定某个ip地址就能够访问
供运维人员维护节点使用
有权限操做任何节点
启动时,在命令参数中配置
“-Dzookeeper.DigestAuthenticationProvider.superDigest=admin:0uek/hZ/V9fgiM35b0Z2226acMQ=”
打开 zkServer.cmd 在java命令后面增长以上信息
package com.zk.dev.zkClient; import org.apache.zookeeper.server.auth.DigestAuthenticationProvider; import java.security.NoSuchAlgorithmException; public class DigestTest { public static void main(String[] args) throws NoSuchAlgorithmException { System.out.println( DigestAuthenticationProvider. generateDigest("admin:123456")); } }