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")); } }