zookeeper -- 第五章 zookeeper ACL讲解

一、ACL 概述

ACL(Access control Lists)java

二、ACL 组成

  • 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类型 -- world

  • Scheme:id:permission

  • id为固定值 :anyone,表示任何用户

  • world:anyone:crdwa 表示任何用户都具备crdwa权限

输入图片说明

四、Scheme类型 -- auth

  • Scheme:id:permission 好比:auth:username:password:crdwa

  • 表示给认证经过的全部用户设置acl权限

  • 同时能够添加多个用户

  • 经过addauth命令进行认证用户的添加

  • addauth digest <username>:<password>

  • Auth 策略的本质就是digest

  • 若是经过addauth 建立多组用户和密码,当使用setAcl修改权限时,全部的用户和密码的权限都会跟着修改

  • 经过addauth新建立的用户和密码组须要从新调用setAcl才会加入到权限组中去

输入图片说明

五、Scheme类型 -- digest

  • Scheme:id:permission 好比:digest:username:password:crdwa

  • 指定某个用户及它的密码能够访问

  • 此处的username:password必须通过 SHA-1和BASE64编码 BASE64(SHA1(username:password))

  • 经过addauth命令进行认证用户的添加 addauth digest <username>:<password>

输入图片说明

输入图片说明

六、Scheme类型 -- ip

  • scheme:id:permission ,好比 ip:127.0.0.1:crdwa

  • 指定某个ip地址就能够访问

输入图片说明

七、Scheme类型 -- super

  • 供运维人员维护节点使用

  • 有权限操做任何节点

  • 启动时,在命令参数中配置

“-Dzookeeper.DigestAuthenticationProvider.superDigest=admin:0uek/hZ/V9fgiM35b0Z2226acMQ=”

打开 zkServer.cmd 在java命令后面增长以上信息

  • 用户名和密码也须要经过base64 和sha-1编码

输入图片说明

输入图片说明

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

输入图片说明

相关文章
相关标签/搜索