Apache ZooKeeper |
您所在的位置:网站首页 › 怎么修复word2003中的自由防问权限 › Apache ZooKeeper |
在这里插入图片描述概述 ACL全称为Access Control List(访问控制列表),用于控制资源的访问权限,可以控制节点的读写操作,保证数据的安全性 。 ZooKeeper使用ACL来控制对其znode的防问。 Zookeeper ACL 权限设置分为 3 部分组成,分别是:权限模式(Scheme)、授权对象(ID)、权限信息(Permission) 基于scheme:id:permission的方式进行权限控制: scheme表示授权模式、id模式对应值、permission即具体的增删改权限位。 权限模式(Scheme)用来设置 ZooKeeper 服务器进行权限验证的方式 。 方案 描述 world 开放模式,world表示全世界都可以访问(这是默认设置) ip ip模式,限定客户端IP防问 auth 用户密码认证模式,只有在会话中添加了认证才可以防问 digest 与auth类似,区别在于auth用明文密码,而digest 用sha-1+base64加密后的密码。在实际使用中digest 更常见。 口令验证用户名密码的方式 在 ZooKeeper 中这种验证方式是 Digest 认证,而 Digest 这种认证方式首先在客户端传送“username:password”这种形式的权限表示符后,ZooKeeper 服务端会对密码 部分使用 SHA-1 和 BASE64 算法进行加密,以保证安全性。 范围验证范围验证就是说 ZooKeeper 可以针对一个 IP 或者一段 IP 地址授予某种权限。、 我们可以让一个 IP 地址为“ip:192.168.11.123”的机器对服务器上的某个数据节点具有写入的权限。或者也可以通过“ip:192.168.0.1/24”给一段 IP 地址的机器赋权。 Super权限模式Super可以认为是一种特殊的 Digest 认证。具有 Super 权限的客户端可以对 ZooKeeper 上的任意数据节点进行任意操作. 授权对象(ID)授权对象就是说我们要把权限赋予谁,而对应于 4 种不同的权限模式来说, 如果我们 选择采用 IP 方式,使用的授权对象可以是一个 IP 地址或 IP 地址段使用 Digest 或 Super 方式,则对应于一个用户名World 模式,是授权系统中所有的用户权限信息(Permission)权限就是指我们可以在数据节点上执行的操作种类,如下所示:在 ZooKeeper 中已经定义好的权限有 5 种: 数据节点(c: create)创建权限,授予权限的对象可以在数据节点下创建子节点;数据节点(w: wirte)更新权限,授予权限的对象可以更新该数据节点;数据节点(r: read)读取权限,授予权限的对象可以读取该节点的内容以及子节点的列表信息;数据节点(d: delete)删除权限,授予权限的对象可以删除该数据节点的子节点;数据节点(a: admin)管理者权限,授予权限的对象可以对该数据节点体进行 ACL 权限设置。ACL相关命令命令 使用方式 描述 getAcl getAcl path 读取ACL权限 setAcl setAcl path acl 设置ACL权限 addauth addauth scheme auth 添加认证用户 在这里插入图片描述跳过ACL检测可以通过系统参数zookeeper.skipACL=yes进行配置,默认是no,可以配置为true, 则配置过的ACL将不再进行权限检测 zkServer.sh 在这里插入图片描述修改后重启zk . 任意节点均可访问 在这里插入图片描述实操ACL生成授权ID方式一 Code代码语言:javascript复制public void generateSuperDigest() throws NoSuchAlgorithmException { String sId = DigestAuthenticationProvider.generateDigest("artisan:xgj"); System.out.println(sId); }方式二 shell命令代码语言:javascript复制echo -n : | openssl dgst -binary -sha1 | openssl base64举例 代码语言:javascript复制[root@localhost bin]# echo -n artisan:xgj | openssl dgst -binary -sha1 | openssl base64 Xe7+HMYId2eNV48821ZrcFwIqIE= [root@localhost bin]# 方式一 digest 密文授权创建Node的时候 设置acl 代码语言:javascript复制[zk: localhost:2181(CONNECTED) 10] create /artisan_node artisan_value digest:artisan:Xe7+HMYId2eNV48821ZrcFwIqIE=:cdrwa Created /artisan_node [zk: localhost:2181(CONNECTED) 11] get /artisan_node # 直接查看没有访问权限的 org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for /artisan_node [zk: localhost:2181(CONNECTED) 12] 在这里插入图片描述或者创建node的时候不指定acl ,然后用setAcl 设置 代码语言:javascript复制setAcl /artisan_node digest:artisan:Xe7+HMYId2eNV48821ZrcFwIqIE=:cdrwa如何才能有访问权限呢? 因为是给artisan这个用户赋权的 【访问前需要添加授权信息】addauth 代码语言:javascript复制[zk: localhost:2181(CONNECTED) 12] addauth digest artisan:xgj [zk: localhost:2181(CONNECTED) 13] get /artisan_node artisan_value [zk: localhost:2181(CONNECTED) 14] 方式二 auth 明文授权代码语言:javascript复制[zk: localhost:2181(CONNECTED) 14] addauth digest aaa:passwddd [zk: localhost:2181(CONNECTED) 15] create /artisanNNN nodeValue auth:aaa:passwddd:cdwra # 这是aaa用户授权信息会被zk保存,可以认为当前的授权用户为aaa Created /artisanNNN [zk: localhost:2181(CONNECTED) 16] get /artisanNNN nodeValue [zk: localhost:2181(CONNECTED) 17] 方式三 IP授权模式创建时设置ip的权限 代码语言:javascript复制create /node-ip data ip:192.168.11.123:cdwra或者创建完成以后 手工调用setAcl 代码语言:javascript复制setAcl /node-ip ip:192.168.11.123:cdwra在这里插入图片描述登录 109.130 ,然后访问zk 在这里插入图片描述在这里插入图片描述多个指定IP可以通过逗号分隔, 如 setAcl /node-ip ip:IP1:rw,ip:IP2:a Super 超级管理员模式是一种特殊的Digest模式, 在Super模式下超级管理员用户可以对Zookeeper上的节点进行任何的操作. 代码语言:javascript复制-Dzookeeper.DigestAuthenticationProvider.superDigest=super: |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |