0
点赞
收藏
分享

微信扫一扫

10天学会kotlin DAY6 继承、类、重载

棒锤_45f2 04-01 06:30 阅读 3

一、ACL组成简介 (Access Control List)

ACL 权限设置由scheme:expression, perms 三部分组成,分别代表了认证模式(scheme)、授权对象id、对应的权限;

1、认证模式(scheme)

(1)digest模式 ( user:password)

create /zk-node-create-schema mydata digest:user1:+owfoSBn/am19roBPzR1/MfCblE=:crwad
set /zk-node-create-schema  digest:user1:+owfoSBn/am19roBPzR1/MfCblE=:crwad

密码是加密密码,加密步骤如下:
1、首先先对user:password 使用sha1算法得出摘要(digest);
2、然后使用base64算法对该摘要加密;
命令如下:

echo -n user:password | openssl dgst -binary -sha1 | openssl base64 

(2)world模式,即world:anynoe cdrwa

world模式是节点的默认模式,当一个节点被创建就会被赋予这种模式,world模式代表所有人对该节点有cdrwa权限。

(3)auth模式

要使用该模式,首先要使用addauth命令添加用户,否则会报错;权限设置命令如下:

create  /test10 hello  auth:user1:明文密码:permissions 
setAcl  /test10   auth:user1:明文密码:permissions 

在auth模式下,对应于上述命令,会自动忽略其中的user1和明文密码字段,而使用通过addauth命令添加的用户和密码,虽然会忽略user1和明文密码字段,但是不能取消,否则会报错;如果添加了多个用户,会对所有已添加的用户设置相同的权限,详情请见下文。

(4)ip模式 ip:具体ip:permissions

该模式对连接服务器的客户端ip进行认证,可以设置多个ip,多个ip通过逗号分隔;

setAcl  /test  ip:IP1:cr,ip:IP2,rw

(5) x509模式

2、权限(permissions)

权限类型ACL简写说明
createc可以创建一个子节点
readr可以获取节点的数据以及列出子节点
writew可以对节点设置数据
deleted可以删除一个子节点
admina具有设置该节点ACL权限的权限

二、相关命令

1、create

创建节点的时候就指定权限,指定权限的同时需要执行节点值,否则会将权限设置为节点值;

create [-s] [-e] [-c] [-t ttl] path [data] [acl]

# create a node with the schema
[zkshell: 11] create /zk-node-create-schema mydata digest:user1:+owfoSBn/am19roBPzR1/MfCblE=:crwad
	Created /zk-node-create-schema
[zkshell: 12] addauth digest user1:12345
[zkshell: 13] getAcl /zk-node-create-schema
	'digest,'user1:+owfoSBn/am19roBPzR1/MfCblE=
	: cdrwa

2、addauth scheme auth 与auth模式认证

==scheme一般是digest,并且auth中的密码是明文 ==

[zkshell: 9] getAcl /acl_digest_test
    Insufficient permission : /acl_digest_test
[zkshell: 10] addauth digest user1:12345
[zkshell: 11] getAcl /acl_digest_test
    'digest,'user1:+owfoSBn/am19roBPzR1/MfCblE=
    : cdrwa

addauth 命令用于在当前seesion中添加用户,当查询或者更改节点信息的时候,服务器会校验当前seesion中是否存在此用户,并校验其密码是否正确,否则会报错

当使用 以下两种方式创建ACL控制权限的时候,需要注意:

create  /test10 hello  auth:user1:明文密码:permissions 
setAcl  /test10   auth:user1:明文密码:permissions 

需要先使用addauth 添加用户,否则会报错,可以添加多个用户,如果添加多个用户,就会对所有用户赋一样的权限,例如:

addauth digest ramboo1:ramboo1
addauth digest ramboo2:ramboo2
addauth digest ramboo3:ramboo3
setAcl /auth auth:ramboo1:ramboo1:cdrwa
getAcl /auth

结果如下

'digest,'ramboo1:JXpHVJcEMUsIf5MM6u7TlOp3pqo=
: cdrwa
'digest,'ramboo2:lTTHGKOT6A3iEwj/SV5meGTXbAM=
: cdrwa
'digest,'ramboo3:b8+HkvFoPszTILQTMB1YFQ+Yvus=
: cdrwa

3、setAcl

setAcl   /test10  scheme:expression, perms 

4、getAcl 获取节点的ACL权限

[zkshell: 4] create /acl_test mydata ip:127.0.0.1:crwda
	Created /acl_test
[zkshell: 5] getAcl /acl_test
	'ip,'127.0.0.1
	: cdrwa
	[zkshell: 6] getAcl /testwatch
	'world,'anyone
	: cdrwa

三、ACL权限特性说明

  • 1、ACL权限控制是基于znode节点的,需要对节点设置权限;
  • 2、ACL权限控制只针对当前节点,并不会对子节点有效,即ACL权限并不会递归;
  • 3、一个节点最原始的权限是world:anynoe cdrwa,即任何人拥有所有权限;
  • 4、每个znode支持设置多种权限控制方案和多个权限;

四、实践

1、digest模式加密

[zhjl@yyzc-zhjlpi02 ~]$ echo -n lichf1:12345| openssl dgst -binary -sha1 | openssl base64
PLvXdiB/dq9VM2nkYPecse4HT98=
[zhjl@yyzc-zhjlpi02 ~]

2、digest模式创建–需要先通过addauth添加用户才可以进行后续操作

[zk: localhost:2181(CONNECTED) 5] create /test7  'hello world ' digest:lichf1:PLvXdiB/dq9VM2nkYPecse4HT98=:crwad
Created /test7
[zk: localhost:2181(CONNECTED) 6] get /test7
Insufficient permission : /test7
[zk: localhost:2181(CONNECTED) 7] addauth digest lichf1:12345
[zk: localhost:2181(CONNECTED) 8] get /test7
hello world
[zk: localhost:2181(CONNECTED) 9] getAcl /test7
'digest,'lichf1:PLvXdiB/dq9VM2nkYPecse4HT98=
: cdrwa
[zk: localhost:2181(CONNECTED) 10]

3、模式错误会报错,并退出连接

[zk: localhost:2181(CONNECTED) 8] addauth lichf4
[zk: localhost:2181(CONNECTED) 9]
WATCHER:
WatchedEvent state:AuthFailed type:None path:null
2024-03-27 21:48:09,838 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@578] - EventThread shut down for session: 0x10b1f1382d70039

4、auth模式

[zk: localhost:2181(CONNECTED) 0] addauth digest lichf:12345
[zk: localhost:2181(CONNECTED) 2] create /test12 hhh  auth:lichf:12345:crw
Created /test12
[zk: localhost:2181(CONNECTED) 3] getAcl /test12
'digest,'lichf:x
: crw
[zk: localhost:2181(CONNECTED) 4] get /test12
hhh

5、auth模式–addauth用户添加

添加了两个用户,两个用户分别对应不同的znode节点

[zk: localhost:2181(CONNECTED) 0] addauth digest lichf:12345
[zk: localhost:2181(CONNECTED) 1] addauth digest lichf1:12345
[zk: localhost:2181(CONNECTED) 2] getAcl /test12
'digest,'lichf:x
: crw
[zk: localhost:2181(CONNECTED) 3] getAcl /test11
'digest,'lichf1:PLvXdiB/dq9VM2nkYPecse4HT98=
: cdrwa
[zk: localhost:2181(CONNECTED) 4]
举报

相关推荐

作业day6

ARM day6

Day6 FileUpload

Python Day6

java学习 day6

Linux学习-DAY6

JAVA学习day6

0 条评论