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

輸入圖片說明

相關文章
相關標籤/搜索