---
title: （可选）配置keytab和whitelist
description: "安装OmniShuffle特性前，如果需要开启安全策略，则需要配置OmniShuffle特性所需的keytab和whitelist。配置keytab和whitelist之前，需要使用KDC服务器，建议为第三方服务器（非OmniShuffle集群服务器），请提前准备。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2300/bds/kunpengbds_omniruntime_20_0131.html
sourcePath: /source/zh/kunpengboostkithistory/2300/bds/kunpengbds_omniruntime_20_0131.html
indexId: 847e739ccd5bf4a6c9dc9c1aa34e6eb847ffdd4add243bd8ba7a1f022a22754d78
---
# （可选）配置keytab和whitelist

安装OmniShuffle特性前，如果需要开启安全策略，则需要配置OmniShuffle特性所需的keytab和whitelist。配置keytab和whitelist之前，需要使用KDC服务器，建议为第三方服务器（非OmniShuffle集群服务器），请提前准备。

- 出于安全考虑，建议将各节点运维账户umask修改为077及以上。
- 如果在当前环境中以运维账户执行过kmc_tool相关操作，需要在集群环境中删除运维账户kmc信号量。

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

  - 删除信号量。
    1 ipcrm -S 0x20161316


#### 配置keytab、whitelist

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

```
IPaddress
1
master
```


2. 登录KDC服务器节点。
3. 创建“kdc”文件夹。
4. 将kdc_distribute.sh、kdc_kmc_encrypt_wt.sh、kdc_kmc_encrypt_zookeeper_kt.sh、kdc_kmc_encrypt_kt_client.sh、kdc_kmc_encrypt_kt_server.sh五个文件复制并保存到kdc文件夹。
5. 在“kdc”文件夹下，创建node_list文件。

  a. 打开文件。
    1 vi node_list

  b. 按“i”进入编辑模式，文件添加内容如下所示。

```
#
xx.xx.xx.xx
server1 1
#
xx.xx.xx.xx
agent1 0
#
xx.xx.xx.xx
agent2 0
#
xx.xx.xx.xx
agent3 0
```


    该文件中不能存在空行，注意末尾也不能有空行。 xx.xx.xx.xx以实际环境中对应的节点IP地址为准，0代表计算节点，1代表管理节点。 1 #xx.xx.xx.xx 0 or 1

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
6. 在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=23.0.0
export OCK_BINARY_TYPE=linux-aarch64
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
7. 执行kdc_distribute.sh脚本，执行前执行set +o history命令关闭历史记录功能，执行完成后执行set -o history打开历史记录功能。
```
sh kdc_distribute.sh
```

回显内容如下，参考如下提示输入相关信息。

```
Enter OPS_USER：#输入运维账户名
Enter OPS_PWD：#输入运维账户密码
Enter RUN_USER：#输入OmniShuffle运行账户名
Enter RUN_GROUP:#输入OmniShuffle运行账户属组
Enter SPARK_USER：#输入提交Spark任务账户名
Enter ZK_USER：#输入ZooKeeper运行账户名
OCK_HOME：#输入OmniShuffle安装的home路径，如“/home/ockadmin/opt/ock”
Enter REALM：#输入域名，与KDC服务器搭建时设置的保持一致（即与“/etc/krb5.conf”里面配置的一致）
```

- 执行kdc_distribute.sh脚本时，需要输入发送到远端的用户名和密码，同时需要输入当前kerberos域的域名。
- KDC脚本不包含在OmniShuffle软件安装包里，用户直接获取。


脚本执行后在每个节点生成如下文件。
ksfa、ksfb由KDC分发脚本调用kmc_tool工具时，kmc_tool自动生成于“${HOME}/tools/pmt”目录，如果已经生成，则再次执行就不会重复生成。脚本内会将文件拷贝至各节点指定位置。

  - ock用户生成文件位于“${OCK_HOME}/security/”目录下。
    ├── authorization

    │ └── whitelist_en

    ├── kdc

    │ └── krb5-server_en.keytab

    ├── pmt

    │ ├── master

    │ ├── ksfa

    │ └── standby

    │ ├── ksfb

  - 提交Spark任务用户生成文件位于用户“${HOME}/huawei/ock/security”目录下。
    ├── kdc

    │ └── krb5-client_en.keytab

    ├── pmt

    │ ├── master

    │ ├── ksfa

    │ └── standby

    │ ├── ksfb

  - zookeeper用户生成文件位于用户“${HOME}/huawei/ock/security”目录下。
    ├── kdc

    │ └── zookeeper_en.keytab

    ├── pmt

    │ ├── master

    │ ├── ksfa

    │ └── standby

    │ ├── ksfb
