zookeeper删除节点的权限_三、Zookeeper中节点类型、节点配额与权限控制

一、Zookeeper的节点

1、持久节点 PERSISTENT

节点创建后就会一直存在,不会因客户端会话失效就删除

2、持久序顺序节点 PERSISTENT_SEQUENTIAL

特性与持久节点一样,只不过创建的时候,zookeeper会自动增加一个递增的数字作为节点名

3、临时节点 EPHEMERAL

客户端会话失效或者链接断开后,节点自动删除,且不能有子节点

4、临时顺序节点 EPHEMERAL_SEQUENTIAL

特性与临时节点一样,创建的时候,zookeeper会自动增加一个递增的数字作为节点名,一般用于分布式锁和leader选举

二、通知机制(watch)

客户端监听它关心的节点,当节点发生数据改变、被删除、增删子节点时,zookeeper会通知客户端。可以使用zookeeper的watch机制实现一个简单的发布订阅功能

三、权限控制(acl)

1、access controller lists

acl由三部分组成schema:id:permissions,schema表示某种权限机制world、ip、auth、digest。id表示允许访问的用户,permissions是权限组合字符串,crwda,表示create、read、write、delete、admin

2、权限控制方案schema

world:world下只有一个id,就是anyone,表示所有用户

ip:IP控制策略,使用客户端的ip地址作为id,可以设置ip段,例如:192.168.100.1/100

auth:不需要任何id,只要是通过auth的用户都有权限

digest:用户和密码的方式认证,使用username:BASE64(SHA1(password))作为id

sasl:id为用户的uid,通过sasl Authentication用户的id,在zk3.4.4版本后sasl是通过Kerberos实现(即只有通过Kerberos认证的用户才可以访问权限的znode)

3、权限示例

A、ip地址认证模式

IP地址认证模式会验证客户端来源的IP,根据IP来源分别是否有权限,示例如下

zkCli.sh -server 127.0.0.1:2181

create /test test_data

setAcl /test ip:192.168.24.14:crwda

当 get /test 时,此时已经没有权限

[zk: 127.0.0.1:2181(CONNECTED) 8] get /test

org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for /test

通过另一种方式进入即可

zkCli.sh -server 192.168.24.14:2181

get /test

[zk: 192.168.24.14:2181(CONNECTED) 0] get /test

test_data

B、auth认证模式

不需要指定id,为当前连接中所有认证过的用户(登陆)授权,因为指不指定id都是为当前登陆的用户

addauth digest user1:user1

addauth digest user2:user2

create /test data auth::cdrwa

getAcl /test

返回如下:

'digest,'user1:oMOD60B8cRkgiY51xfdG0FFW3FI=

: cdrwa

'digest,'user2:ExK4ZEpM5XR9l8dLA7B6b79kLIo=

: cdrwa

C、digest模式

需要指定用户名和密码,只授权给指定的登陆用户,并且密码需要使用BASE64(SHA1(password))加密

在shell环境下,可以使用如下方式得到密码

echo -n horace:horace | openssl dgst -binary -sha1 | openssl base64

addauth digest horace:horace

create /test1 data digest:horace:W37bqnoLIAdZoDhHQatGel1g8gU=:cdrwa

getAcl /test1

四、目录配额(quota)

1、子节点限制

创建节点

create /path

查看配额

listquota /path

设置子节点数量

setquota -n 2 /path

创建子节点

create /path/a

create /path/b

create /path/c

超出会打印警告日志

Quota exceeded: /quota count=3 limit=2

2、节点数据大小限制

创建节点

create /path

查看配额

listquota /path

设置子节点数量

setquota -b 2 /path

set /path Horace

超出会打印警告日志

Quota exceeded: /quota bytes=6 limit=2

3、总结

所有的配额限制不会产生实际的作用,超出了会在zookeeper中打印日志,数据会被实际保存下来

注意:本文归作者所有,未经作者允许,不得转载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值