---
title: （可选）配置Keytab和Whitelist
description: "Keytab和Whitelist都是用于增强系统安全性的机制。Keytab文件用于简化Kerberos认证过程，提高系统的安全性，而Whitelist用于限制特定IP地址或主机的访问，增强访问控制。配置Keytab和Whitelist都可以提高系统的安全性和可靠性。"
url: https://www.hikunpeng.com/document/detail/zh/omniruntime/omnishuffle/kunpengbds_omniruntime_20_0311.html
sourcePath: /source/zh/omniruntime/omnishuffle/kunpengbds_omniruntime_20_0311.html
indexId: 20c130279d9085aa108d8f128e4522968d9f44c229d075ab5bdbb6b75ef0cf8970
---
# （可选）配置Keytab和Whitelist

Keytab和Whitelist都是用于增强系统安全性的机制。Keytab文件用于简化Kerberos认证过程，提高系统的安全性，而Whitelist用于限制特定IP地址或主机的访问，增强访问控制。配置Keytab和Whitelist都可以提高系统的安全性和可靠性。

#### 注意事项

- 配置Keytab和Whitelist之前，请准备KDC服务器，建议为第三方服务器（非OmniShuffle Shuffle加速组件集群服务器）。
- 出于安全考虑，建议将各节点运维账户umask修改为077及以上。
- 如果在当前环境中以运维账户执行过kmc_tool相关操作，需要在集群环境中删除运维账户kmc信号量。

  - 查询信号量
    1 ipcs -s -t

  - 删除信号量
    1 2 ## 删除key为0x20161316的信号量 ipcrm -S 0x20161316


#### 配置Keytab和Whitelist

1. 登录OmniShuffle Shuffle加速组件集群服务器，修改每台服务器的“/etc/hosts”文件。在“hosts”文件中添加KDC服务器的“地址 主机名”映射关系。

```
IPaddress
1
server
```


2. 登录KDC服务器节点。
3. 在ZooKeeper运行用户与提交Spark任务用户的“${HOME}/.bashrc”中新增OCK_HOME、OCK_VERSION、OCK_BINARY_TYPE环境变量。

  a. 打开文件。

```
vi
~
/.bashrc
```


  b. 按“i”进入编辑模式，在文件中添加以下内容。

```
export OCK_HOME=/home/ockadmin/opt/ock
export OCK_VERSION=24.0.0
export OCK_BINARY_TYPE=linux-aarch64
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
4. 用户需自行生成KDC所需的数字证书文件、白名单whitelist文件、kmc密钥文件。将文件拷贝至各节点对应用户的指定位置。

  a. 生成文件放置于“${OCK_HOME}/security/”目录下。
  b. 修改目录/文件属主为ockadmin:ockadmin，目录权限为700，文件权限为600。

```
├── authorization
│   └── whitelist_en
├── kdc
│   └── krb5-server_en.keytab
├── pmt
│   ├── master
│   │   └── ksfa
│   └── standby
│       └── ksfb
└── tls
├── client.crt.pem
├── client.pem
├── server
│   ├── ca.cert.pem
│   ├── server.cert.pem
│   ├── server.keypass.key
│   └── server.private.key.pem
└── server.crt.pem
```


    相关配置如表1 配置信息所示。

**表1 配置信息**

| 用户 | 文件 | 配置项 | 示例路径 |
| --- | --- | --- | --- |
| ockadmin | whitelist\_en | ock.ucache.rpc.author.file.path | /home/ockadmin/opt/ock/security/authorization/whitelist\_en |
| ockadmin | krb5\-server\_en.keytab | ock.ucache.rpc.auth.kerb.server.keytab | /home/ockadmin/opt/ock/security/kdc/krb5\-server\_en.keytab |
| ockadmin | krb5\-server\_en.keytab | ock.zookeeper.security.client.keytab | /home/ockadmin/opt/ock/security/kdc/krb5\-server\_en.keytab |
| ockadmin | ksfa | ock.ucache.kmc.ksf.primary.path | /home/ockadmin/opt/ock/security/pmt/master/ksfa |
| ockadmin | ksfb | ock.ucache.kmc.ksf.standby.path | /home/ockadmin/opt/ock/security/pmt/standby/ksfb |
| ockadmin | client.crt.pem | ock.zookeeper.security.certs | /home/ockadmin/opt/ock/security/tls/client.crt.pem |
| ockadmin | client.pem | ock.zookeeper.security.certs | /home/ockadmin/opt/ock/security/tls/client.pem |
| ockadmin | ca.cert.pem | ock.ucache.rpc.tls.ca.cert.path | /home/ockadmin/opt/ock/security/tls/server/ca.cert.pem |
| ockadmin | server.cert.pem | ock.ucache.rpc.tls.cert.path | /home/ockadmin/opt/ock/security/tls/server/server.cert.pem |
| ockadmin | server.keypass.key | ock.ucache.rpc.tls.key.pass.path | /home/ockadmin/opt/ock/security/tls/server/server.keypass.key |
| ockadmin | server.private.key.pem | ock.ucache.rpc.tls.key.path | /home/ockadmin/opt/ock/security/tls/server/server.private.key.pem |
| ockadmin | server.crt.pem | ock.zookeeper.security.certs | /home/ockadmin/opt/ock/security/tls/server.crt.pem |


  c. 提交Spark任务用户生成的文件位于用户“${SPARK_HOME}/huawei/ock/security”目录下。
  d. 修改目录/文件属主为Sparkadmin:ockadmin，目录权限为700，文件权限为600。

```
├── authorization
│   └── whitelist_en
├── kdc
│   ├── krb5-client_en.keytab
│   └── krb5-server_en.keytab
├── pmt
│   ├── master
│   │   └── ksfa
│   └── standby
│       └── ksfb
│
└── tls
├──
ca.cert.pem
├──
client.crt.pem
├──
client.pem
├── server.cert.pem
├── server.crt.pem
├── server.keypass.key
└── server.private.key.pem
```

相关配置如表2 配置信息所示。
ca.cert.pem、client.crt.pem、client.pem3个证书在Spark Driver和Spark Executor分离部署，仅需要生成在Spark Driver节点上，Spark Executor节点可以不生成。


**表2 配置信息**

| 用户 | 文件 | 配置项 | 示例路径 |
| --- | --- | --- | --- |
| Sparkadmin | whitelist\_en | ock.ucache.rpc.author.driver.file.path | /home/Sparkadmin/huawei/ock/security/authorization/whitelist\_en |
| Sparkadmin | krb5\-client\_en.keytab | ock.ucache.rpc.auth.kerb.client.keytab | /home/Sparkadmin/huawei/ock/security/kdc/krb5\-client\_en.keytab |
| Sparkadmin | krb5\-client\_en.keytab | ock.zookeeper.sdk.security.client.keytab | /home/Sparkadmin/huawei/ock/security/kdc/krb5\-client\_en.keytab |
| Sparkadmin | krb5\-server\_en.keytab | ock.ucache.rpc.auth.driver.kerb.server.keytab | /home/Sparkadmin/huawei/ock/security/kdc/krb5\-server\_en.keytab |
| Sparkadmin | ksfa | ock.ucache.sdk.kmc.ksf.primary.path | /home/Sparkadmin/huawei/ock/security/pmt/master/ksfa |
| Sparkadmin | ksfb | ock.ucache.sdk.kmc.ksf.standby.path | /home/Sparkadmin/huawei/ock/security/pmt/standby/ksfb |
| Sparkadmin | client.crt.pem | ock.zookeeper.sdk.security.certs | /home/Sparkadmin/huawei/ock/security/tls/client.crt.pem |
| Sparkadmin | client.pem | ock.zookeeper.sdk.security.certs | /home/Sparkadmin/huawei/ock/security/tls/client.pem |
| Sparkadmin | ca.cert.pem | ock.ucache.rpc.tls.sdk.ca.cert.path | /home/Sparkadmin/huawei/ock/security/tls/ca.cert.pem |
| Sparkadmin | server.cert.pem | ock.ucache.rpc.tls.driver.cert.path | /home/Sparkadmin/huawei/ock/security/tls/server.cert.pem |
| Sparkadmin | server.keypass.key | ock.ucache.rpc.tls.driver.key.pass.path | /home/Sparkadmin/huawei/ock/security/tls/server.keypass.key |
| Sparkadmin | server.private.key.pem | ock.ucache.rpc.tls.driver.key.path | /home/Sparkadmin/huawei/ock/security/tls/server.private.key.pem |
| Sparkadmin | server.crt.pem | ock.zookeeper.sdk.security.certs | home/Sparkadmin/huawei/ock/security/tls/server.crt.pem |


目录说明：

    - authorization目录下的文件是鉴权相关文件。
    - kdc目录下的文件是安全认证相关文件。
    - tls目录下的文件是tls安全传输通信的相关文件。
    - pmt目录下的文件是对证书文件进行加密的加密密钥。
authorization、kdc、tls目录下的文件需要调用kmc_tools工具使用pmt目录下的加密密钥对文件进行加密，具体加密使用方法见章节4.2。
  e. ZooKeeper用户生成文件位于用户“${ZOOKEEPER_HOME}/huawei/ock/security”目录下。
  f. 修改目录/文件属主为Zookeeperadmin:ockadmin，目录权限为700，文件权限为600。

```
├── kdc
│   └── zookeeper_en.keytab
├── pmt
│   ├── master
│   │   └── ksfa
│   └── standby
│       └── ksfb
```


    相关配置如表3 配置信息所示。

**表3 配置信息**

| 用户 | 文件 | 配置项 | 示例路径 |
| --- | --- | --- | --- |
| Zookeeperadmin | zookeeper\_en.keytab | keytab | /home/Zookeeperadmin/huawei/ock/security/kdc/zookeeper\_en.keytab |
| Zookeeperadmin | ksfa | kmc.ksf.primary.path | /home/Zookeeperadmin/huawei/ock/security/pmt/master/ksfa |
| Zookeeperadmin | ksfb | kmc.ksf.standby.path | /home/Zookeeperadmin/huawei/ock/security/pmt/standby/ksfb |


    Zookeeper的具体配置，请参见（可选）配置ZooKeeper。
