中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

(可选)配置Keytab和Whitelist

配置Keytab和Whitelist都可以提高系统的安全性和可靠性。Keytab简化了Kerberos认证过程,提高了系统的安全性,而Whitelist则增强了系统的访问控制。配置Keytab和Whitelist之前,需要使用KDC服务器,建议为第三方服务器(非OmniShuffle Shuffle加速组件集群服务器),请提前准备。

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

配置Keytab、Whitelist

  1. 登录OmniShuffle Shuffle加速组件集群服务器,修改每台服务器的“/etc/hosts”文件。

    “hosts”文件中添加KDC服务器的“地址 主机名”映射关系。

    IPaddress1 server
  2. 登入KDC服务器节点。
  3. 在ZooKeeper运行用户与提交Spark任务用户的“${HOME}/.bashrc”中新增OCK_HOME、OCK_VERSION、OCK_BINARY_TYPE环境变量。
    1. 打开文件。
      vi ~/.bashrc
    2. “i”进入编辑模式,在文件中添加以下内容。
      export OCK_HOME=/home/ockadmin/opt/ock
      export OCK_VERSION=24.0.0
      export OCK_BINARY_TYPE=linux-aarch64
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  4. 用户需自行生成KDC所需的数字证书文件、白名单whitelist文件、kmc密钥文件。将文件拷贝至各节点对应用户的指定位置。
    • 生成文件放置于“${OCK_HOME}/security/”目录下。

      ├── 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 配置信息

      用户

      文件

      配置项

      示例路径

      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/keytab

      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

    • 提交Spark任务用户生成的文件位于用户“${SPARK_HOME}/huawei/ock/security”目录下。

      ├── 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

      相关配置如下表所示。

      ca.cert.pem;client.crt.pem;client.pem

      上述3个证书在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

    • ZooKeeper用户生成文件位于用户“${ZOOKEEPER_HOME}/huawei/ock/security”目录下。

      ├── kdc

      │ └── zookeeper_en.keytab

      ├── pmt

      │ ├── master

      │ │ └── ksfa

      │ └── standby

      │ └── ksfb

      相关配置如下:

      用户

      文件

      配置项

      示例路径

      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的具体配置参见章节2.2.3

    • whitelist为rpc建链时使用,有如下几个场景涉及,以1+2+2组网分别进行说明:

      主节点:master

      计算节点:slave02,slave03

      rss节点:slave01,slave04

      1. executor连接driver,使用用户为Sparkadmin,只需要在master节点配置whitelist,内容只需要包含所有计算节点,示例如下:
        {
        	"ock": 
        	[
        		{
        			"user": "ock_client/slave02@HUAWEI.COM",
        			"allow": true
        		},
        		{
        			"user": "ock_client/slave03@HUAWEI.COM",
        			"allow": true
        		}
        	]
        }
      2. 计算节点ock连接rss节点,使用用户为ockadmin,需要在所有rss节点配置whitelist,内容需要包含所有计算节点,示例如下:
        {
        	"ock": 
        	[
        		{
        			"user": "ock_client/slave02@HUAWEI.COM",
        			"allow": true
        		},
        		{
        			"user": "ock_client/slave03@HUAWEI.COM",
        			"allow": true
        		}
        	]
        }
      3. rss节点间的互连,使用用户为ockadmin,需要在所有rss节点配置whitelist,内容需要包含其他rss节点,slave01节点的示例如下:
        {
        	"ock": 
        	[
        		{
        			"user": "ock_server/slave04@HUAWEI.COM",
        			"allow": true
        		}
        	]
        }

      综上,计算节点无需配置whitelist,主节点需配置计算节点信息的whitelist,rss节点需要配置计算节点以及其他rss节点信息的whitelist

      若需要加密,请参考4.2.3章节对白名单进行加密。

      "ock"为固定标识

      ock_client/ock_server为请求发送端标识,ock_server为rss节点间互连使用

      HUAWEI.COM为所属的realm,按照实际使用替换