From adba3d06026e1712faa873248bd9bda0b58c9fab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Mon, 3 Jun 2019 15:55:32 +0800 Subject: [PATCH] Zookeeper ACL --- notes/Zookeeper_ACL权限控制.md | 35 +++++++++++++++--------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/notes/Zookeeper_ACL权限控制.md b/notes/Zookeeper_ACL权限控制.md index 62c8275..2271001 100644 --- a/notes/Zookeeper_ACL权限控制.md +++ b/notes/Zookeeper_ACL权限控制.md @@ -46,21 +46,21 @@ getAcl path Zookeeper的权限由[scheme : id :permissions]三部分组成,其中Schemes和Permissions内置的可选项分别如下: -Permissions可选项: +**Permissions可选项**: -- CREATE:允许创建子节点; -- READ:允许从节点获取数据并列出其子节点; -- WRITE:允许为节点设置数据; -- DELETE:允许删除子节点; -- ADMIN:允许为节点设置权限。 +- **CREATE**:允许创建子节点; +- **READ**:允许从节点获取数据并列出其子节点; +- **WRITE**:允许为节点设置数据; +- **DELETE**:允许删除子节点; +- **ADMIN**:允许为节点设置权限。 -Schemes可选项: +**Schemes可选项**: -- world:默认模式, 所有客户端都拥有指定权限。world下只有一个id选项,就是anyone,通常组合写法为`world:anyone:[permissons]`; -- auth:只有经过认证的用户, 才拥有指定的权限。通常组合写法为`auth:user:password:[permissons]`,使用这种模式时,你需要先进行登录,之后采用auth模式时,user和password都将使用登录的用户名和密码; -- digest:只有经过认证的用户, 才拥有指定的权限。通常组合写法为`auth:user:BASE64(SHA1(password)):[permissons]`,这种形式下的密码必须通过SHA1和BASE64进行双重加密; -- ip:限制只有特定IP的客户端才拥有指定的权限。通常组成写法为`ip:182.168.0.168:[permissions]`; -- super:代表超级管理员,拥有所有的权限,需要修改Zookeeper启动脚本进行配置。 +- **world**:默认模式,所有客户端都拥有指定的权限。world下只有一个id选项,就是anyone,通常组合写法为`world:anyone:[permissons]`; +- **auth**:只有经过认证的用户才拥有指定的权限。通常组合写法为`auth:user:password:[permissons]`,使用这种模式时,你需要先进行登录,之后采用auth模式设置权限时,`user`和`password`都将使用登录的用户名和密码; +- **digest**:只有经过认证的用户才拥有指定的权限。通常组合写法为`auth:user:BASE64(SHA1(password)):[permissons]`,这种形式下的密码必须通过SHA1和BASE64进行双重加密; +- **ip**:限制只有特定IP的客户端才拥有指定的权限。通常组成写法为`ip:182.168.0.168:[permissions]`; +- **super**:代表超级管理员,拥有所有的权限,需要修改Zookeeper启动脚本进行配置。 @@ -123,7 +123,7 @@ Authentication is not valid : /hadoop # 权限不足 : cdrwa ``` -到这里你可以发现使用auth模式设置的权限和使用digest模式设置的权限,在最终结果上,得到的权限模式都是`digest`。某种程度上,你可以把auth模式理解成是digest模式的一种简便实现。因为在digest模式下,每次设置都需要书写用户名和加密后的密码,这是比较繁琐的,采用auth模式,则可以在登录一次后就可以不用重复书写了。 +到这里你可以发现使用`auth`模式设置的权限和使用`digest`模式设置的权限,在最终结果上,得到的权限模式都是`digest`。某种程度上,你可以把`auth`模式理解成是`digest`模式的一种简便实现。因为在`digest`模式下,每次设置都需要书写用户名和加密后的密码,这是比较繁琐的,采用`auth`模式就可以避免这种麻烦。 #### 4. ip模式 @@ -135,11 +135,11 @@ Authentication is not valid : /hadoop # 权限不足 Authentication is not valid : /hive # 当前主机已经不能访问 ``` -这里可以使用限定IP的主机客户端进行访问,也可以使用下面的super模式配置超级管理员进行访问。 +这里可以看到当前主机已经不能访问,想要能够再次访问,可以使用对应IP的客户端,或使用下面介绍的`super`模式。 #### 5. super模式 -需要修改启动脚本`zkServer.sh`,在指定位置添加管理员账户和密码信息: +需要修改启动脚本`zkServer.sh`,并在指定位置添加超级管理员账户和密码信息: ```shell "-Dzookeeper.DigestAuthenticationProvider.superDigest=heibai:sCxtVJ1gPG8UW/jzFHR0A1ZKY5s=" @@ -172,10 +172,11 @@ numChildren = 0 ### 3.1 主要依赖 -使用前需要导入curator相关Jar包,完整依赖如下: +这里以 Apache Curator 为例,使用前需要导入相关依赖,完整依赖如下: ```xml + org.apache.curator curator-framework @@ -202,7 +203,7 @@ numChildren = 0 ### 3.2 权限管理API - Curator权限设置、修改和查看的API调用示例如下: + Apache Curator 权限设置的示例如下: ```java public class AclOperation {