CDH6官方文档中文系列(5)----Cloudera安装指南(安装Navigator Encryption)

Cloudera安装指南

最近在学习cdh6的官方文档,网上也比较难找到中文的文档。
其实官方英文文档的阅读难度其实并不是很高,所以在这里在学习官方文档的过程中,把它翻译成中文,在翻译的过程中加深学习了解,并分享出来和大家一起学习。
中文内容是本人的渣渣英文水平结合有道词典,谷歌翻译的结果,文中部分词语可能翻译的并不准确,希望大家多多提出意见,共同进步。
cdh6的官方中文文档系列长期更新,最后目标整理成gitbook,同大家交流学习。
最后,如果你觉得本文对你有用,希望点个赞给作者一点鼓励哈。

与其感慨路难行不如马上上路,诸位道友,共同学习,加油!-------天南第一剑修

文章目录

  • Cloudera安装指南
    • 官方文档
    • 安装Navigator Encryption
      • 安装Cloudera Navigator密钥托管服务器
        • 前提条件
        • 设置内部存储库
        • 安装密钥托管服务器
          • 使用Cloudera管理器安装密钥托管服务器
          • 使用命令行安装密钥托管服务器
        • 保护密钥受托人服务器主机
        • 利用本地处理器指令集
          • AES-NI
          • Intel RDRAND
        • 初始化密钥托管服务器
      • 安装Cloudera Navigator Key HSM
        • 前提条件
        • 设置内部存储库
        • 安装Navigator Key HSM
          • 设置密钥HSM存储库
          • 安装密钥HSM存储库
          • 安装 CDH存储库
          • 安装导航键HSM
      • 安装密钥托管KMS
        • 设置内部存储库
        • 使用包裹安装Key Trustee KMS
        • 使用包安装Key Trustee KMS
        • 安装后配置
      • 安装由Thales HSM支持的Navigator HSM KMS
        • 客户端的需求
        • 设置内部存储库
        • 使用包裹安装Thales HSM支持的Navigator HSM KMS
        • 使用Thales HSM支持的包安装Navigator HSM KMS
        • 安装后配置
      • 安装由Luna KMS支持的Navigator HSM KMS
        • 客户端的先决条件
        • 设置内部存储库
        • 使用包裹安装由Luna HSM支持的Navigator HSM KMS
        • 使用包安装Luna HSM支持的Navigator HSM KMS
        • 安装后配置
      • 安装Cloudera Navigator Encrypt
        • 前置准备
        • 设置内部存储库
        • 安装Navigator Encrypt(rhell兼容的操作系统)
          • 安装Cloudera存储库
          • 安装EPEL存储库
          • 安装内核库
        • 安装Navigator Encrypt(SLES系统)
          • 1. 安装Cloudera存储库
          • 2. 安装NTP
          • 3. 安装内核模块包和Navigator 加密客户端
          • 4. 使不受支持的模块
        • 安装Navigator Encrypt(Debian或Ubuntu)
        • 安装后
        • 为Navigator Encrypt Clients设置TLS
        • 熵要求
          • 使用包管理器安装rng_tools
          • 从源代码构建rng工具
        • 卸载和重新安装Navigator 加密
          • 卸载Navigator 加密
          • 重新安装Navigator 加密

官方文档

本指南提供了在生产环境中安装Cloudera软件(包括Cloudera Manager、CDH和其他托管服务)的指导。

对于非生产环境(例如测试和概念验证用例),请参阅概念验证安装指南,了解简化的(但有限的)安装过程。

本指南包括以下部分:

  • 安装前
  • 安装CM和CDH
  • 安装Navigator Data Management
  • 安装Navigator Encryption
  • 安装后
  • 解决安装问题
  • 卸载Cloudera软件

安装Navigator Encryption

下面几节演示如何安装Cloudera Navigator加密组件,用于加密Cloudera企业中的静止数据:

  • Installing Cloudera Navigator Key Trustee Server
  • Installing Cloudera Navigator Key HSM
  • Installing Key Trustee KMS
  • Installing Navigator HSM KMS Backed by Thales HSM
  • Installing Navigator HSM KMS Backed by Luna HSM
  • Installing Cloudera Navigator Encrypt

安装Cloudera Navigator密钥托管服务器

**重要提示:**在安装Cloudera Navigator密钥托管服务器之前,请参阅对静止数据加密的重要考虑。

在创建密钥受托人服务器角色时,它被紧密绑定到安装它的主机的标识。不支持将角色移动到不同的主机、更改主机名或更改主机的IP

您可以使用带有包裹的Cloudera管理器安装Navigator密钥托管服务器,也可以使用带有包的命令行安装。有关包裹的更多信息,请参见包裹。

**注意:**如果您正在或计划在CDH集群中使用密钥托管服务器,Cloudera强烈推荐使用Cloudera Manager来安装和管理密钥托管服务器,以充分利用Cloudera Manager强大的部署、管理和监控功能。

前提条件

有关加密和密钥托管服务器需求的更多信息,请参见静态数据加密需求。

设置内部存储库

您必须创建一个内部存储库来安装或升级Cloudera Navigator数据加密组件。有关创建内部存储库(包括Cloudera管理器、CDH和ClouderaNavigator 加密组件)的说明,请参见以下主题:

  • 配置本地包裹存储库
  • 配置本地包存储库

安装密钥托管服务器

**重要提示:**该特性需要获得Cloudera企业许可证。Cloudera Express没有。有关更多信息,请参见管理许可证。

使用Cloudera管理器安装密钥托管服务器

**注意:**这些说明仅适用于使用Cloudera管理器。要使用packages安装密钥托管服务器,请跳转到使用命令行安装密钥托管服务器。

如果您正在安装用于HDFS透明加密的密钥托管服务器,则设置HDFS数据静态加密向导将安装和配置密钥托管服务器。有关说明,请参阅使用向导启用HDFS加密。

  1. (建议)在Cloudera Manager中创建一个新的集群,仅包含将安装密钥托管服务器的主机。Cloudera建议每个集群使用自己的KTS实例。尽管跨集群共享单个KTS在技术上是可能的,但出于安全原因——特别是由于多个集群使用的加密密钥的单点失效而增加的安全风险——它既不被批准也不被支持。要更好地了解此建议的其他安全性原因,请参阅静态数据加密参考体系结构。有关如何在Cloudera Manager中创建新集群的说明,请参见添加和删除集群。

重要提示:添加集群向导提示您安装CDH和其他集群服务。若要退出向导而不安装CDH,请选择要安装的CDH版本并继续。当安装开始时,单击左上角的Cloudera Manager徽标,确认您想退出向导。这允许您使用密钥托管服务器主机创建专用集群,而不需要安装CDH或密钥托管服务器不需要的其他服务。

  1. 按照配置Cloudera Manager服务器包设置中的说明,将在设置内部存储库时创建的内部包存储库添加到Cloudera Manager。

  2. 在包含密钥受托人服务器主机的集群上下载、分发和激活密钥受托人服务器包,按照管理包的说明操作。

**重要:**Cloudera Manager中的KEYTRUSTEE包不是密钥托管服务器包;这是KMS主要受托人的包裹。密钥托管服务器的包名是KEYTRUSTEE_SERVER

激活密钥托管服务器包后,Cloudera Manager会提示您重新启动集群。单击Close按钮忽略此提示。安装密钥托管服务器后,不需要重新启动集群。

在使用Cloudera Manager安装密钥托管服务器之后,继续保护密钥托管服务器主机。

使用命令行安装密钥托管服务器

**注意:**这些说明仅适用于使用命令行进行的基于包的安装。要使用Cloudera管理器安装密钥托管服务器,请参见使用Cloudera管理器安装密钥托管服务器。

如果您正在或计划将密钥托管服务器与CDH集群结合使用,Cloudera强烈推荐使用Cloudera Manager来安装和管理密钥托管服务器,以充分利用Cloudera Manager强大的部署、管理和监控功能。

  1. 安装EPEL存储库

    依赖包可以通过Enterprise Linux (EPEL)存储库的额外包获得。要安装EPEL存储库,请安装epel-release包:

    • 复制epel-release-.noarch的URL文件RHEL 6或RHEL 7位于如何我可以使用这些额外的包?EPEL维基页面的一部分。

    • 运行以下命令安装EPEL存储库

    sudo wget <epel_rpm_url>
    sudo yum install epel-release-<version>.noarch.rpm
    

    用下载的RPM的版本号(例如,6-8)替换。

    如果已经安装了epel-release包,您将看到类似如下的消息:

    Examining /var/tmp/yum-root-jmZhL0/epel-release-6-8.noarch.rpm: epel-release-6-8.noarch
    /var/tmp/yum-root-jmZhL0/epel-release-6-8.noarch.rpm: does not update installed package.
    Error: Nothing to do
    

    确认安装了EPEL存储库:

    sudo yum repolist | grep -i epel
    
  2. (仅限RHEL 7)启用额外存储库

    密钥托管服务器需要python-flask包。对于RHEL 6,这个包在EPEL存储库中提供。对于RHEL 7,它在RHEL extras存储库中提供。要启用这个存储库,运行以下命令:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  3. 安装PostgreSQL 9.3存储库

    **注意:**Cloudera Navigator密钥托管服务器目前只支持PostgreSQL 9.3版本。如果您在密钥托管服务器主机上安装了不同版本的PostgreSQL,请在继续或选择安装密钥托管服务器的其他主机之前删除它。

    要安装PostgreSQL 9.3存储库,运行以下命令:

    sudo yum install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-3.noarch.rpm
    

    **重要提示:**如果您正在使用CentOS,请在CentOS基础存储库中添加以下代码:

    exclude=python-psycopg2*
    

    默认情况下,基本存储库位于/etc/yum. repository .d/CentOS-Base.repo.如果您有基本存储库的内部镜像,请针对您的环境更新正确的文件。

  4. 安装Cloudera存储库

    添加您创建的内部存储库。有关更多信息,请参见配置主机以使用内部存储库。

    通过运行以下命令导入GPG密钥:

    sudo rpm --import http://repo.example.com/path/to/RPM-GPG-KEY-cloudera
    
  5. 安装CDH存储库

    密钥托管服务器和密钥HSM依赖于bigtop-utils包,它包含在CDH存储库中。有关添加CDH存储库的说明,请参见配置本地包存储库。

  6. 安装NTP

    网络时间协议(NTP)服务同步系统时间。Cloudera建议使用NTP来确保系统日志、加密签名和其他可审计事件中的时间戳在系统之间保持一致。使用以下命令安装和启动NTP:

    sudo yum install ntp
    sudo service ntpd start
    ## For RHEL/CentOS 7, use 'sudo systemctl start ntpd' instead ##
    
  7. 安装密钥托管服务器

    运行以下命令安装密钥托管服务器:

    sudo yum install keytrustee-server
    
  8. 将服务配置为在开机自启动

    确保ntpdkeytrustee-dbkeytrusteed在引导时自动启动:

    sudo chkconfig ntpd on
    sudo chkconfig keytrustee-db on
    sudo chkconfig keytrusteed on
    

    如果成功,chkconfig命令不提供输出。

    **注意:**当密钥托管服务器启动postgresql数据库时,/etc/init.d/postgresql脚本不工作,不能用于监控数据库的状态。使用/etc/init.d/keytrustee-db代替。

    安装密钥托管服务器后,继续保护密钥托管服务器主机。

保护密钥受托人服务器主机

Cloudera强烈建议保护密钥托管服务器主机,以防止对密钥托管服务器的未经授权的访问。Red Hat为RHEL提供安全指南:

  • RHEL 6安全指南
  • RHEL 7安全指南

Cloudera还建议将密钥托管服务器主机配置为只允许通过特定端口进行网络通信。

您可以使用以下示例为EDH集群创建iptables规则。根据组织的安全策略添加环境所需的任何其他端口。注意,在本例中,端口5432是用于遗留机器上的关键受托人数据库的数据库端口(在版本5.5之前)。端口11371是密匙受信者通信的当前端口,端口11381是数据库端口。如果阻塞其他端口,请谨慎操作,因为这可能导致服务中断。有关密钥托管服务器使用的端口的详细信息,请参阅Cloudera管理器和ClouderaNavigator 使用的端口。

# Flush iptables
iptables -F
iptables -X

# Allow unlimited traffic on loopback (localhost) connection
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Allow established, related connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Open all Cloudera Manager ports to allow Key Trustee Server to work properly

iptables -A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 11371 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 11381 -j ACCEPT

# Drop all other connections
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Save iptables rules so that they're loaded if the system is restarted
sed 's/IPTABLES_SAVE_ON_STOP="no"/IPTABLES_SAVE_ON_STOP="yes"/' -i /etc/sysconfig/iptables-config
sed 's/IPTABLES_SAVE_ON_RESTART="no"/IPTABLES_SAVE_ON_RESTART="yes"/' -i /etc/sysconfig/iptables-config

利用本地处理器指令集

AES-NI

高级加密标准新指令(AES- ni)指令集旨在提高使用AES加密和解密的速度。一些较新的处理器附带了AES-NI,它可以在每个服务器上启用。如果您不确定设备上是否有AES-NI可用,运行以下命令来验证:

grep -o aes /proc/cpuinfo

要确定是否加载了AES-NI内核模块,运行以下命令:

sudo lsmod | grep aesni

如果CPU支持AES-NI,但没有加载内核模块,请参阅操作系统文档了解安装aesni-intel模块的说明。

Intel RDRAND

Intel RDRAND指令集及其底层的数字随机数生成器(DRNG)对于生成加密协议的密钥不使用haveged的情况非常有用。

要确定CPU是否支持RDRAND,运行以下命令:

grep -o rdrand /proc/cpuinfo

要启用RDRAND,请安装rng-tools版本4或更高版本:

  1. 下载源代码

    sudo wget http://downloads.sourceforge.net/project/gkernel/rng-tools/4/rng-tools-4.tar.gz
    
  2. 提取源代码:

    tar xvfz rng-tools-4.tar.gz
    
  3. 进入rng-tools-4路径:

    cd rng-tools-4
    
  4. Run ./configure

  5. Run make

  6. Run make install

通过以下指令开始rngd

sudo rngd --no-tpm=1 -o /dev/random

初始化密钥托管服务器

在安装密钥受托人服务器之后,必须对其进行初始化,然后才能运行。详情请看:初始化独立密钥托管服务器或Cloudera Navigator密钥托管服务器的指令高可用性。

安装Cloudera Navigator Key HSM

重要提示:在安装Cloudera Navigator密钥HSM之前,请参阅静态数据加密的来进行重要考虑。

Cloudera Navigator Key HSM是一个通用硬件安全模块(HSM)驱动程序,在目标HSM平台和Cloudera Navigator Key托管服务器之间进行转换。

使用Navigator密钥HSM,您可以使用密钥受托服务器安全地存储和检索加密密钥和其他安全对象,而不局限于基于硬件的平台。

前提条件

您必须在密钥托管服务器所在的主机上安装密钥HSM。有关加密和密钥HSM要求的更多信息,请参见静态数据加密要求。

设置内部存储库

您必须创建一个内部存储库来安装或升级Cloudera Navigator密钥HSM。有关创建内部存储库(包括Cloudera Manager、CDH和Cloudera Navigator加密组件)的说明,请参见配置本地包存储库。

安装Navigator Key HSM

**重要提示:**如果您已经实现了密钥托管服务器的高可用性,请在每个密钥托管服务器主机上安装和配置密钥HSM。

  1. 设置密钥HSM存储库

    下载密钥HSM压缩包并使用压缩包中的文件创建一个本地密钥HSM存储库。有关更多信息,请参见上面设置内部存储库。

  2. 安装密钥HSM存储库

    添加在步骤1中创建的本地密钥HSM存储库。有关更多信息,请参见 Configuring a Local Package Repository

	$ sudo rpm --import http://repo.example.com/path/to/RPM-GPG-KEY-cloudera
  1. 安装 CDH存储库

    密钥托管服务器和密钥HSM依赖于bigtop-utils包,它包含在CDH存储库中。有关添加CDH存储库的说明,请参见配置本地包存储库。

  2. 安装导航键HSM

    使用yum安装导航键HSM包

sudo yum Install keytrustee-keyhsm

​ 默认情况下,Cloudera Navigator密钥HSM安装在/usr/share/keytrustee-server-keyhsm目录中。

安装密钥托管KMS

**重要提示:**按照这些说明安装所需的软件,将Key Trustee KMS service添加到您的集群;这使您能够使用Cloudera Navigator Key Trustee Server作为HDFS透明加密的底层密钥存储库。这没有安装Key Trustee Server。有关安装Key Trustee Server的说明,请参见安装Cloudera Navigator密钥托管服务器。在安装和使用Key Trustee KMS之前,必须安装Key Trustee Server。

另外,在创建Key Trustee KMS角色时,它被紧密绑定到安装它的主机的身份。不支持将角色移动到不同的主机、更改主机名或更改主机的IP。

密钥受托人KMS是一个自定义密钥管理服务器(KMS),它使用Cloudera Navigator密钥受托人服务器作为底层密钥存储库,而不是默认基于文件的Java密钥存储库(JKS)的Hadoop KMS。

Key Trustee KMS仅支持在Cloudera管理器部署。您可以使用包裹或包安装该软件,但不支持在Cloudera Manager之外运行密钥托管KMS。

**重要提示:**如果您使用CentOS/Red Hat Enterprise Linux 5.6或更高版本,或使用默认使用AES-256加密的Ubuntu,您必须在所有集群和Hadoop用户机器上安装Java Cryptography Extension (JCE) Unlimited Strength权限策略文件。
有关JCE策略文件安装说明,请参阅jce_policy-x.zip文件中包含的README.txt文件。
有关安装JCE的详细信息,请参阅步骤2:安装用于AES-256加密的JCE策略文件。

设置内部存储库

您必须创建一个内部存储库来安装密钥受托人KMS。有关创建内部存储库(包括Cloudera Manager、CDH和Cloudera Navigator加密组件)的说明,请参见如果您正在使用包裹,则配置本地包存储库;如果您正在使用包,则配置本地包存储库。

使用包裹安装Key Trustee KMS

  1. 前往主机>包裹

  2. 单击配置并将内部存储库添加到远程包裹存储库url部分。更多信息,请参见配置Cloudera管理器以使用内部远程包裹存储库。

  3. 下载、分发和激活密钥托管KMS包裹。有关使用包裹安装或升级组件的详细说明,请参阅管理包裹。

    注意:Cloudera Manager中的KEYTRUSTEE_SERVER包裹不是Key Trustee KMS包裹;它是关键的托管服务器包。密钥受托人KMS的包裹名称为KEYTRUSTEE

使用包安装Key Trustee KMS

  1. 在设置了内部存储库之后,将Key Trustee KMS主机配置为使用存储库。有关更多信息,请参见配置主机以使用内部存储库。
  2. 因为keytrustee-keyprovider包依赖于hadoop-kms包,所以必须添加CDH存储库。
    有关说明,请参见配置本地包存储库。
  3. 使用适合您的操作系统的命令安装keytrustee-keyprovider
  • RHEL-compatible

    sudo yum install keytrustee-keyprovider
    
  • SLES

    sudo zypper install keytrustee-keyprovider
    
  • Ubuntu or Debian

    sudo apt-get install keytrustee-keyprovider
    

安装后配置

有关安装密钥受托人服务器和配置密钥受托人KMS以使用密钥受托人服务器的说明,请参阅以下主题:

  • 安装Cloudera Navigator密钥托管服务器
  • 使用向导启用HDFS加密

安装由Thales HSM支持的Navigator HSM KMS

**重要提示:**按照这些说明安装所需的软件,将Thales HSM支持的Navigator HSM KMS添加到您的集群;这使您能够使用受支持的Thales HSM作为HDFS透明加密的底层密钥存储库

受Thales HSM支持的HSM KSM是一个使用受支持的Thales HSM作为底层密钥存储库的自定义密钥管理服务器(KMS),而不是默认的Hadoop KMS使用的基于文件的Java密钥存储库(JKS)。

**重要提示:**Thales HSM支持的HSM KSM仅在Cloudera Manager部署中得到支持。您可以使用包裹或包安装该软件,但不支持运行由Thales HSM支持的HSM KMS以外的Cloudera Manager。

客户端的需求

Thales HSM支持的Navigator HSM KMS仅支持在Thales HSMs上 。必须首先安装Thales HSM客户端。

需要以下Thales nSolo、nConnect软件和固件:

  • 服务器版本:3.67.11cam4
  • 固件:2.65.2
  • 安全世界版本:12.30

在执行Thales HSM设置之前,运行nfkminfo命令来验证是否正确配置了Thales HSM。

$ sudo /opt/nfast/bin/nfkminfo
          World generation 2
          state      0x1727 Initialised Usable Recovery !PINRecovery !ExistingClient
                     RTC NVRAM FTO !AlwaysUseStrongPrimes SEEDebug

如果状态报告!Usable,而不是Usable,那么在继续之前配置Thales HSM。有关如何配置Thales 客户机的详细信息,请参阅Thales 产品文档。

运行以下命令手动将KMS用户添加到nfast组:

usermod -a -G nfast kms

如果不手动添加KMS用户,安装可能会失败。

设置内部存储库

要安装泰利斯HSM支持的Navigator HSM km,必须创建一个内部存储库。有关创建内部存储库(包括Cloudera Manager、CDH和Cloudera Navigator加密组件)的说明,请参见如果您正在使用包裹,则配置本地包存储库;如果您正在使用包,则配置本地包存储库。

使用包裹安装Thales HSM支持的Navigator HSM KMS

  1. 前往主机>**;包裹**。

  2. 单击配置并将内部存储库添加到远程包裹存储库url部分。有关更多信息,请参见配置Cloudera管理器以使用内部远程包裹存储库。

  3. 下载、分发并激活Navigator HSM KMS包裹。有关使用包裹安装或升级组件的详细说明,请参阅管理包裹。

    注意:Cloudera Manager中的KEYTRUSTEE_SERVER包裹不是Key Trustee KMS包裹;
    它是关键的托管服务器包。Thales HMS支持的Navigator HSM KMS的包裹名称是KEYTRUSTEE

  4. 如果您正在6.0.0系统中新安装Thales HSM KMS,那么在在Cloudera Manager中添加Thales 服务支持的HSM KMS之前,必须将端口设置为非默认值。
    推荐的端口是11501。非特权端口的默认值是9000(无需更改)。要更改特权端口,请登录到Thales HSM KMS计算机,并运行以下命令

sudo /opt/nfast/bin/config-serverstartup --enable-tcp --enable-privileged-tcp --privport=11501
[server_settings] change successful; you must restart the hardserver for this to take effect
# sudo /opt/nfast/sbin/init.d-ncipher restart
 -- Running shutdown script 90ncsnmpd

 -- Running shutdown script 60raserv

...

'ncsnmpd' server now running

使用Thales HSM支持的包安装Navigator HSM KMS

  1. 配置完内部存储库之后,配置由Thales HSM主机支持的Navigator KMS服务,以使用存储库。有关更多信息,请参见配置主机以使用内部存储库。
  2. 因为keytrustee-keyprovider包依赖于hadoop-kms包,所以必须添加CDH存储库。
    有关说明,请参见配置本地包存储库。
  3. 使用适合您的操作系统的命令安装keytrustee-keyprovider包:

**重要通知:**通过包安装时,确保在希望运行HSM KMS服务的每台主机上安装。

RHEL-compatible

sudo yum install keytrustee-keyprovider

如果您正在6.0.0系统中新安装Thales HSM KMS,那么在在Cloudera Manager中添加Thales 服务支持的HSM KMS之前,必须将端口设置为非默认值。推荐的端口是11501。非特权端口的默认值是9000(无需更改)。要更改特权端口,请登录到Thales HSM KMS机器,并运行以下命令:

# sudo /opt/nfast/bin/config-serverstartup --enable-tcp --enable-privileged-tcp --privport=11501
[server_settings] change successful; you must restart the hardserver for this to take effect
# sudo /opt/nfast/sbin/init.d-ncipher restart
 -- Running shutdown script 90ncsnmpd

 -- Running shutdown script 60raserv

...

'ncsnmpd' server now running

安装后配置

有关配置HSM KMS的说明,请参阅使用向导启用HDFS加密。

安装由Luna KMS支持的Navigator HSM KMS

**重要提示:**按照这些说明安装所需的软件,将Luna HSM支持的Navigator KMS服务添加到您的集群;这使您能够使用受支持的Luna HSM作为HDFS透明加密的底层密钥存储库。

luna HSM支持的Navigator HSM KMS是一个定制的密钥管理服务器(KMS),它使用受支持的Luna HSM作为底层密钥存储库,而不是默认的Hadoop KMS使用的基于文件的Java密钥存储库(JKS)。

**重要提示:**Luna HSM支持的Navigator HSM KMS仅在Cloudera Manager部署中支持。您可以使用包裹或包安装该软件,但不支持运行由Luna HSM在Cloudera Manager之外支持的Navigator HSM KMS。

客户端的先决条件

Luna HSM支持的Navigator HSM KMS只支持Luna HSMs。首先必须安装Luna HSM客户机。

关所需的Luna软件和固件的详细信息,请参阅Navigator HSM KMS:推荐硬件和支持的发行版。

在执行Luna HSM KMS设置之前,运行vt1 verify命令(位于/usr/safenet/lunaclient/bin/vtl),以验证Luna HSM配置正确。有关如何配置Luna HSM客户机的详细信息,请参阅Luna产品文档。

设置内部存储库

要安装Luna HSM支持的导航HSM km,必须创建一个内部存储库。有关创建内部存储库(包括Cloudera Manager、CDH和Cloudera Navigator加密组件)的说明,请参见如果您正在使用包裹,则配置本地包裹存储库;如果您正在使用包,则配置本地包存储库。

使用包裹安装由Luna HSM支持的Navigator HSM KMS

  1. 前往主机>包裹

  2. 单击配置并将内部存储库添加到远程包裹存储库url部分。有关更多信息,请参见配置Cloudera管理器以使用内部远程包裹存储库。

  3. 下载、分发并激活Navigator HSM KMS包裹。有关使用包裹安装或升级组件的详细说明,请参阅管理包裹。

注意:Cloudera Manager中的KEYTRUSTEE_SERVER包裹不是Key Trustee KMS包裹;它是关键的托管服务器包。由Luna HSM支持的航海家HSM公里的包裹名称是KEYTRUSTEE

使用包安装Luna HSM支持的Navigator HSM KMS

  1. 设置好内部存储库之后,配置Luna HSM主机支持的Navigator HSM KMS来使用存储库。有关更多信息,请参见配置主机以使用内部存储库。

  2. 因为keytrustee-keyprovider包依赖于hadoop-kms包,所以必须添加CDH存储库。有关说明,请参见配置本地包存储库。

  3. 使用适合您的操作系统的命令安装keytrustee-keyprovider包:

    **重要提示:**通过包安装时,请确保安装在希望运行HSM KMS服务的每台主机上。

    RHEL-compatible

	sudo yum install keytrustee-keyprovider

安装后配置

有关配置HSM KMS的说明,请参见使用向导启用HDFS加密

安装Cloudera Navigator Encrypt

**重要提示:**在安装ClouderaNavigator 加密之前,请参阅“静止加密数据”和“ClouderaNavigator 加密兼容矩阵”,了解重要事项

前置准备

有关加密和Navigator 加密要求的更多信息,请参见静态数据加密要求。

设置内部存储库

要安装或升级Navigator 加密,必须创建一个内部存储库。有关创建内部存储库(包括Cloudera Manager、CDH和Cloudera Navigator加密组件)的说明,请参见配置本地包存储库。

安装Navigator Encrypt(rhell兼容的操作系统)

**注意:**有关受支持的Linux操作系统的详细信息,请参阅Cloudera Navigator加密兼容矩阵。

  1. 安装Cloudera存储库

    添加您创建的内部存储库。有关更多信息,请参见配置主机以使用内部存储库。

    通过运行以下命令导入GPG密钥:

    sudo rpm --import http://repo.example.com/path/to/gpg_gazzang.asc
    
  2. 安装EPEL存储库

    依赖包可以通过Enterprise Linux (EPEL)存储库的额外包获得。要安装EPEL存储库,请安装epel -release包:

    1. 复制epel-release-.noarch文件的URL用于RHEL 6或RHEL 7,位于如何我可以使用这些额外的包?EPEL维基页面的一部分。

    2. 运行以下命令安装EPEL存储库:

      sudo wget <epel_rpm_url>
      sudo yum install epel-release-<version>.noarch.rpm
      

      用下载的RPM的版本号(例如,6-8)替换。

      如果已经安装了epel-release包,您将看到类似如下的消息:

      Examining /var/tmp/yum-root-jmZhL0/epel-release-6-8.noarch.rpm: epel-release-6-8.noarch
      /var/tmp/yum-root-jmZhL0/epel-release-6-8.noarch.rpm: does not update installed package.
      Error: Nothing to do
      

      确认安装了EPEL存储库:

      sudo yum repolist | grep -i epel
      
  3. 安装内核库

    要使Navigator 加密作为内核模块运行,必须下载并安装内核开发头文件。每个内核模块都是专门针对底层内核版本编译的。作为内核模块运行允许Navigator 加密,以向用户空间应用程序提供高性能和完全透明性。

    要确定当前内核版本,请运行uname -r

    要安装当前内核版本的开发头文件,请运行:

    sudo yum install kernel-headers-$(uname -r) kernel-devel-$(uname -r)
    

    ​ 对于具有Unbreakable Enterprise Kernel (UEK)的OL,运行:

    sudo yum install kernel-uek-headers-$(uname -r) kernel-uek-devel-$(uname -r)
    

    ​ 注意:对于UEK3,你不需要安装kernel-uek-header -*

    ​ 如果yum找不到这些包,它会显示如下错误:

    	Unable to locate package .
    

    在这种情况下,执行以下操作之一以继续:

    • ​ 使用像RPM Pbone这样的工具找到并安装内核头文件包。

    • ​ 将内核升级到最新版本。如果升级内核,则必须在升级后重新启动,并从grub菜单中选择内核以使其处于活动状态。

  4. (仅限RHEL或CentOS)手动安装dkms

    由于在所有版本的RHEL或CentOS中都存在一个破碎的依赖关系,您必须手动安装dkms包:

    sudo yum install http://repository.it4i.cz/mirrors/repoforge/redhat/el6/en/x86_64/rpmforge/RPMS/dkms-2.1.1.2-1.el6.rf.noarch.rpm
    
  5. 安装Navigator Encrypt

    使用yum包管理器安装Navigator 加密客户端:

    sudo yum install navencrypt
    

    如果您尝试安装Navigator 加密不正确或缺少内核头,您会看到如下消息:

    Building navencryptfs 3.8.0 DKMS kernel module...
    
    #################### BUILDING ERROR ####################
    
    
    
    Creating symlink /var/lib/dkms/navencryptfs/3.8.0/source ->
                     /usr/src/navencryptfs-3.8.0
    
    DKMS: add completed.
    Error! echo
    Your kernel headers for kernel 3.10.0-229.4.2.el7.x86_64 cannot be found at
    /lib/modules/3.10.0-229.4.2.el7.x86_64/build or /lib/modules/3.10.0-229.4.2.el7.x86_64/source.
    
    #################### BUILDING ERROR ####################
    
    Failed installation of navencryptfs 3.8.0 DKMS kernel module !
    

    要恢复,请参阅Navigator 加密内核模块设置。

安装Navigator Encrypt(SLES系统)

1. 安装Cloudera存储库

​ 添加您创建的内部存储库。有关更多信息,请参见配置主机以使用内部存储库。

​ 通过运行以下命令导入GPG密钥:

sudo rpm --import http://repo.example.com/path/to/gpg_gazzang.asc
2. 安装NTP

​ 网络时间协议(NTP)服务同步系统时间。Cloudera建议使用NTP来确保系统日志、加密签名和其他可审计事件中的时间戳在系统之间保持一致。使用以下命令安装和启动NTP:

  • SLES 11

    $ sudo zypper install ntp
    # /etc/init.d/ntp start
    
  • SLES 12

    $ sudo zypper install ntp
    # service ntpd start
    
3. 安装内核模块包和Navigator 加密客户端

​ 使用zypper安装内核模块包(KMP)和Navigator 加密客户端:

sudo zypper install cloudera-navencryptfs-kmp-
sudo zypper install navencrypt

​ 将替换为系统的内核。Navigator 加密支持defaultxenec2内核风格。

4. 使不受支持的模块

编辑/etc/modprobe.d/ unsupportedmodules,并设置allow_unsupported_modules1。例如:

#
# Every kernel module has a flag 'supported'. If this flag is not set loading
# this module will taint your kernel. You will not get much help with a kernel
# problem if your kernel is marked as tainted. In this case you firstly have
# to avoid loading of unsupported modules.
#
# Setting allow_unsupported_modules 1 enables loading of unsupported modules
# by modprobe, setting allow_unsupported_modules 0 disables it. This can
# be overridden using the --allow-unsupported-modules command line switch.
allow_unsupported_modules 1
  1. (仅限SLES 12)运行systemctl守护进程-重新加载

由于SLES 12中的更改,您必须在安装Navigator加密后运行以下命令:

sudo systemctl daemon-reload

安装Navigator Encrypt(Debian或Ubuntu)

  1. 安装Cloudera存储库

添加您创建的内部存储库。有关更多信息,请参见配置主机以使用内部存储库。

  • Ubuntu

    echo "deb http://repo.example.com/path/to/ubuntu/stable $DISTRIB_CODENAME main" | sudo tee -a /etc/apt/sources.list
    
  • Debian

    echo "deb http://repo.example.com/path/to/debian/stable $DISTRIB_CODENAME main" | sudo tee -a /etc/apt/sources.list
    

    通过运行以下命令导入GPG密钥:

wget -O - http://repo.example.com/path/to/gpg_gazzang.asc | apt-key add -
  1. 安装NTP

    网络时间协议(NTP)服务同步系统时间。Cloudera建议使用NTP来确保系统日志、加密签名和其他可审计事件中的时间戳在系统之间保持一致。使用以下命令安装和启动NTP:

    sudo apt-get install ntp
    sudo /etc/init.d/ntp start
    
  2. 安装内核头文件

    通过运行uname -r确定内核版本,并安装相应的头文件:

    sudo apt-get install linux-headers-$(uname -r)
    
  3. 安装Navigator Encrypt客户端

    安装Navigator Encrypt:

    sudo apt-get install navencrypt
    

安装后

为了确保Navigator 加密和NTP在重新启动后启动,请使用chkconfig将它们添加到启动顺序中:

sudo chkconfig --level 235 navencrypt-mount on
sudo chkconfig --level 235 ntpd on

为Navigator Encrypt Clients设置TLS

传输层安全(TLS)证书用于使用Navigator 加密来保护通信。Cloudera强烈建议使用由受信任证书颁发机构(CA)签署的证书。

如果TLS证书是由无法识别的CA(例如内部CA)签名的,那么您必须将根证书添加到每个Navigator 加密客户机的主机证书信任存储库中。请注意,Navigator加密使用操作系统的信任存储,这与Cloudera管理器使用的JDK信任存储不同。

在Navigator 加密客户端上设置TLS证书

  1. 如果还没有安装,请安装CA-certificates:

    yum install ca-certificates
    
  2. 启用动态CA配置功能:

    update-ca-trust enable
    
  3. 将根证书复制到主机证书信任存储库中

    cp /path/to/root.pem /etc/pki/ca-trust/source/anchors/
    
  4. 更新主机证书信任存储

    update-ca-trust
    

例子

[root@navencrypt-1 ~]# service navencrypt-mount stop
Stopping navencrypt directories
 * Umounting /dev/nvtest/test1 ...                         [  OK  ]
 * Umounting /dev/nvtest/test2 ...                         [  OK  ]
 * Unloading module ...                                    [  OK  ]

[root@navencrypt-1 ~]# update-ca-trust enable
[root@navencrypt-1 ~]# cp dd-1.lab.usa.company.com.pem /etc/pki/ca-trust/source/anchors/
[root@navencrypt-1 ~]# update-ca-trust

[root@navencrypt-1 ~]# service navencrypt-mount start
Starting navencrypt directories
 * Mounting '/dev/nvtest/test1'                            [  OK  ]
 * Mounting '/dev/nvtest/test2'                            [  OK  ]

熵要求

许多加密操作,如那些使用TLS或HDFS加密的操作,需要足够的系统熵来确保随机性;同样,Navigator 加密需要一个随机数源来确保良好的性能。因此,您需要确保运行Navigator加密(以及密钥受托人服务器、密钥受托人KMS)的主机具有足够的熵来执行加密操作。

你可以通过运行下面的命令来检查Linux系统的可用熵:

cat /proc/sys/kernel/random/entropy_avail

出显示当前可用的熵。多次检查熵,以确定系统上的熵池的状态。如果熵一直很低(500或更低),则必须通过安装rng-tools version 4或更高版本并启动rngd服务来增加它。

使用包管理器安装rng_tools

如果rng-tools包的版本4或更高版本可以从本地包管理器(yum)获得,那么直接从包管理器安装它。如果适当版本的rng工具不可用,请参阅从源代码构建rng工具。

**注意:**如果您正在使用RHEL 6.7和更高版本,或者最新版本的Ubuntu、Debian和SLES,那么package manager应该提供版本4。x或更高。在安装之前,一定要检查包管理器提供的rng工具的版本,以确定是否需要从源代码构建。

在RHEL 6兼容系统上运行以下命令:

sudo yum install rng-tools
sudo service rngd start
sudo chkconfig rngd on

对于RHEL 7,运行以下命令:

sudo yum install rng-tools
cp /usr/lib/systemd/system/rngd.service /etc/systemd/system/
systemctl daemon-reload
systemctl start rngd
systemctl enable rngd
从源代码构建rng工具

如果无法使用包管理器安装rng工具,则从源代码进行构建。

**注意:**如果包管理器只提供较旧的版本(3。x或更早),那么您必须从源代码构建。

要安装和启动rngd并从源代码构建:

  1. 下载源代码:

    sudo wget http://downloads.sourceforge.net/project/gkernel/rng-tools/4/rng-tools-4.tar.gz
    
  2. 提取源代码:

    tar xvfz rng-tools-4.tar.gz
    
  3. 输入rng-tools-4目录:

    cd rng-tools-4
    
  4. 运行. / configure

  5. 运行make

  6. 运行make install

安装rng-tools后,以root身份运行以下命令启动rngd守护进程:

sudo rngd --no-tpm=1 -o /dev/random

为了提高性能,Cloudera建议将Navigator加密配置为直接从/dev/random读取,而不是从/dev/ urandom直接读取。

要将Navigator 加密配置为使用/dev/random作为熵源,请在设置Navigator 加密时向navencrypt-prepare命令添加——use-random

卸载和重新安装Navigator 加密

卸载Navigator 加密

对RHEL兼容的系统:

sudo yum remove navencrypt
sudo yum remove navencrypt-kernel-module

这些命令会删除软件本身。在与rhell兼容的操作系统上,在卸载时不会删除/etc/navencrypt目录。如果需要,手动删除它。

重新安装Navigator 加密

卸载导航器加密后,在安装Cloudera导航器加密时,重新执行您的发行版的安装说明。

当Navigator加密被卸载时,位于/etc/navencrypt中的配置文件和目录不会被删除。因此,在重新安装期间不需要使用navencrypt register命令。如果不再需要/etc/navencrypt目录中以前的安装配置信息,可以删除其中的内容。

你可能感兴趣的:(手撕官方文档系列,大数据,运维,cloudera)