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