Zookeeper ACL
This commit is contained in:
parent
47b4eef1a2
commit
adba3d0602
@ -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
|
||||
<dependencies>
|
||||
<!--Apache Curator相关依赖-->
|
||||
<dependency>
|
||||
<groupId>org.apache.curator</groupId>
|
||||
<artifactId>curator-framework</artifactId>
|
||||
@ -202,7 +203,7 @@ numChildren = 0
|
||||
|
||||
### 3.2 权限管理API
|
||||
|
||||
Curator权限设置、修改和查看的API调用示例如下:
|
||||
Apache Curator 权限设置的示例如下:
|
||||
|
||||
```java
|
||||
public class AclOperation {
|
||||
|
Loading…
x
Reference in New Issue
Block a user