暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

实用 | 企业数据中心加密最佳实践

Cloudera中国 2016-07-15
725
点击上方“公众号” 可以订阅哦!
作者:Alex Gonzalez 和 Luke Hebert 
Alex Gonzalez是Cloudera公司的一名软件工程师。
Luke Hebert是Cloudera公司的一名客户运营支持工程师和安全产品专家。

数据加密是一项基于Cloudera企业数据中心(EDH)的密匙安全功能。本文解释了一些为实现数据加密而部署Cloudera Navigator Encrypt的最佳实践。

对于那些不熟悉该产品的人员而言,Cloudera Navigator Encrypt提供了针对Apache Hadoop中关键性的数据的可扩展的、高性能的加密功能。Cloudera Navigator Encrypt利用行业标准的AES-256加密技术,并在应用程序和文件系统之间提供了一个透明层。此外,Cloudera Navigator Encrypt还包含基于进程的访问控制功能,允许已授权的进程访问加密的数据,同时防止管理员或超级用户(例如,根用户(root))访问他们并不需要看到的数据。Cloudera Navigator Encrypt是Cloudera公司提出的静态加密总体解决方案的一部分,与在HDFS层级运行的HDFS透明数据加密技术一起配套使用,而Cloudera Navigator Key Trustee是用于管理加密密钥的一个虚拟“保险箱”。

在这篇文章中,我们将提供一份关于企业数据中心加密最佳实践的说明,以及有关如何自定义Cloudera Navigator Encrypt用户的一些信息。

主密钥
主密钥(master key)是用户利用Navigator Key Trustee来登记注册Cloudera Navigator Encrypt所知道和输入的密匙。主密钥可以采用单一密码、双重密码,或RSA文件的形式。主密钥将被上传到Navigator Key Trustee中。

用户将根据其内部安全措施和规程来决定使用何种类型的主密钥:

·  单一密码:单一密码对于系统管理员而言是已知的,并且可以共享到受信任的对等方;单一密码的长度必须在15和32字节之间。

·  双重密码(密码1(passphrase1) + 密码2(passphrase2)):当您希望分担数据加密、解密的责任,或者在两名或多名人员之间执行Cloudera Navigator Encrypt操作时,可以使用此种类型的主密匙。例如,希望在一台主机上加密一些数据时,一名或多名系统管理员/工程师将被要求执行该操作。该一名或多名系统管理员/工程师应该知道密码1(passphrase1)而另外一组不同的系统管理员/工程师应该知道密码2(passphrase2)。

·  RSA:当您需要使用更强大的密钥(密钥长度超过32个字节)时,可采用RSA文件。您应该使用具有其自身密码的RSA密钥以减少与保留此密匙相关的风险,例如密匙盗窃或泄漏。如果您选择了该类型的主密匙,您应该确保针对您的RSA密钥的存储和备份设置了强大的安全策略。

Cloudera Navigator Encrypt可以安全地将您的主密钥存储到Navigator Key Trustee的仓库。这样可以将密匙与主机分离,以便进行非交互式操作(例如,当您重新启动一台主机,并且在启动时自动挂载磁盘)。Cloudera Navigator Encrypt能够独立地执行自己的所需的操作而无需系统管理员提供主密钥。虽然非交互操作是由系统管理操作(例如添加ACL规则、解密数据、加密新的数据目录,等等)自动处理完成的,仍然需要由系统管理员输入主密钥。

挂载点的命名
虽然对于挂载点(mount points)没有命名约定标准,但是在执行Cloudera Navigator Encrypt的部署时一般遵循的是Cloudera的推荐。

一般来说,Cloudera建议挂载点使用一个简短的名称以及一个描述性名词;并且大多数挂载点是根据其使用目的来命名的。例如,/backup/或/image可能被用于引征一个旨在存储备份数据的挂载点。此外,某一些系统管理员也想增加一个描述性的_mnt,以便更清楚地说明正常系统挂载点和额外的用于选择性使用用途的挂载点之间的区别。您可能会发现,使用mnt会让您更容易地标识在后续加密数据集的过程中使用的参数。并且,当其被升级到Cloudera支持团队时,这也将提高对于问题的支撑能力。此外,当您想从我们创建的符号链接中读取加密路径以及同时准备一个加密数据空间时,您就可以很容易地确定其组成部分。

例如:
避免混淆挂载点以及您打算以后使用的标签的名称。(如需了解更多信息,请参考本文的下一节。)例如,让我们来做这样的一个假设,我们希望加密/var/lib/mysql。将挂载点命名为mysql_backup并同时使用标签@mysql将是一种不可取的做法。在系统中将创建的符号链接将与您在下面找到的类似。
虽然这个名称肯定会有效,但是读取该名称肯定会不容易,并且任何人试图帮助您也将不是很直观。一个更好的例子是针对路径/var/lib/mysql使用一个名为db_backup的挂载点和@secure_db的标签。该系统中产生的符号链接将更具可读性和用户直观性,如下所示。

 标签的命名
标签(Categories)是Cloudera Navigator Encrypt中的一个重要组成部分。标签将作为您可以附加规则的容器或锚。规则本身将创建用于授权访问标签中特定加密数据的单个进程。

例如,在:
这两个命令都能够允许进程/usr/sbin/mysqld访问将在/db_backup/secure_db/var/lib/mysql中加密的数据。在这种情况下,您可以发现正在使用的标签为@secure_db。该标签将链接到加密数据路径的允许进程。

Cloudera建议用户在命名特定标签时使用action+noun的格式。例如:
一旦您确定了如何命名标签和挂载点之后,您必须做出一些额外的决定:
·  将使用哪些设备以及哪些挂载点?
·  您希望在哪里存储加密的数据?
·  您将使用什么类型的设备(循环设备、虚拟设备或物理设备)?各种类型的设备都具有自身的优点和缺点。

怎样加密循环设备?
循环设备(loop device)是一种伪设备,从而可以以块设备的形式访问文件。Cloudera建议,使用这种方法来加密临时文件、日志文件或小文件,而不是eCryptfs(请参见下文以了解具体的原因)。我们不建议使用这种方法来加密数据库、HDFS块、Apache Cassandra数据目录或任何其他大型存储空间。相反,我们建议您针对上述这些使用案例使用全区间设备加密方式(物理设备加密)

为什么采用循环设备而不是eCryptfs?
eCryptfs是于2009年推出的一种加密文件系统,是针对文件级加密的一次成功尝试,但是它正在临近其生命周期的结束。Linux发行版(例如,RHEL和CentOS 7.X)已经弃用了eCryptfs,并且其他的发行版肯定很快会跟进这一趋势。

测试结果显示,由于诸多原因eCryptfs的性能并不如DM-Crypt一样好,其中大部分的原因在于其运行层级高于DM-Crypt。

如果您已经开始使用eCryptfs,并计划最终迁移到不再对其提供支持的发行版,您将很有可能在完成迁移之前花费一些额外的步骤。您将不仅需要迁移您的所有数据,并且根据您的使用情况您可能还需要解密您的所有数据,这往往需要耗费大量的资源和时间。

如何加密物理设备?
在Apache Hadoop生态系统中,Apache Hive Metastore(Apache Impala中也使用)是用于加密的目标对象。同时还包括那些可能包含敏感数据的日志文件以及临时文件。Cloudera不推荐在集群中运行可能会影响其性能的任何其他服务,但是如果在集群外部存在可能保存敏感数据的系统,您可以利用Cloudera Navigator Encrypt进行加密。贵公司可能会处理的任何敏感数据都是此等加密的强劲的候选,例如个人信息、信用卡号码、纳税人识别号码、社会保障号码、指纹、财务信息、银行对账单,以及医疗记录。
一般情况下,Cloudera建议集群存储层(HDFS)中的数据应采用HDFS加密技术而不是Cloudera Navigator Encrypt进行加密。(稍后将详细介绍)。

为什么采用DM-Crypt和AES-NI进行物理磁盘加密?
我可以用一个词来回答上述问题:性能。

片上AES-NI加速提高了使用AES加密算法进行数据加密的I/O性能,因为该方法直接在硬件上实施AES算法的一些子步骤。据英特尔公司(Intel)称,这种性能的改善消除了使用加密技术来保护数据的主要异议之一,即:性能损失。

DM-Crypt的核心目的旨在使用AES加密算法时能够自动利用该硬件加速功能。英特尔公司(Intel)从很久之前到现在仍然投入了巨大的成本来积极开发AES-NI,正因为如此,Cloudera Engineering可以通过直接访问其开发路线图,来使加密算法更高效。

可用的加密算法
在使用DM-Crypt时,Cloudera Navigator Encrypt支持各种不同的加密算法,这取决于您的主机操作系统和物理硬件提供的加密算法;但是,其并没有提供关于它自身的任何加密算法。当您准备进行设备加密时,您可以通过检查PROC系统或通过DM-Crypt工具集提供的加密信息,查看您的系统上可用的加密算法。如需了解更多关于加密算法及其实现的详细信息,请参考cryptsetup手册页。

例如:
当准备对设备进行eCryptfs或DM-Crypt加密时,Cloudera Navigator Encrypt在默认情况下将选择一种AES加密算法,采用的密钥长度为256位。AES加密算法是迄今为止最广泛接受和部署的加密算法。

操作系统级加密与HDFS加密
如前所述,HDFS透明数据加密(TDE)是Cloudera公司推荐的EDH存储层内部的静态数据加密选项。TDE的设计和开发目的旨在充分利用HDFS的许多优势,而这些优势使得TDE成为EDH中一个可扩展的和可靠的存储层。HDFS TDE通常更容易部署,并且与EDH完全集成在一起,同时可以通过一个扩展了内核本地组件的强大的密匙提供器实现密钥管理。

虽然Cloudera Navigator Encrypt也可以加密JVM内部的HDFS数据块,但是其相对于集群内HDFS加密技术而言也存在一些不足之处。出于这个原因,Cloudera Navigator Encrypt主要被建议作为确保EDH存储层外部的敏感数据安全性的一种数据加密解决方案。

Cloudera Navigator Encrypt主要依赖一个内核模块,该内核模块是专门使用DKMS针对一个系统本地内核而构建的。由于该模块是专门针对系统主动内核而构建的并且加载到内核空间中,因此其表现出非常好的性能。由于可以在更低的层级运行,因此使得其能够以用户空间工具不能采取的方式挂接到文件系统中。但是,用户必须维护开发软件包,例如其系统上的安装内核开发包(kernel-devel)、内核头文件(kernel-headers)和编译器(gcc)。由于该模块是针对主机上活跃的每一个内核版本重新构建的,内核架构中出现的重大变化可能会破坏该模块,并且会阻止您访问您先前已经加密的数据,直到该模块被成功重新构建。在使用HDFS加密技术时不会出现这一问题;相反,HDFS加密适用于各个客户端JVM内部的Hadoop文件系统级别。

HDFS加密技术的另一个优点是,KMI(密钥管理基础设施)现正与Cloudera Manager集成在一起。这种集成使得它更易于管理、监控和部署HDFS加密。虽然Cloudera Navigator Encrypt仍可以使用Key Trustee Server,但是Key Trustee Server现在未与Cloudera Manager集成在一起。如果由于某种原因某一个节点发生故障,将无法通知您或以其他方式表示发生了问题。

Cloudera Navigator Encrypt和Navigator Key Trustee HA
Cloudera Navigator Key Trustee Server是一种不透明的对象存储库,其可以在企业数据中心(EDH)内部和外部提供集中式密钥管理功能。在生产部署中,至关重要的一点是您的基础设施的这一部分应部署在隔离且高可用性(HA)的配置中。在部署Key Trustee服务器期间,您应该采取相应的措施以确保满足以下标准。

·  隔离和离散集群;
·  增强型的物理和网络安全架构;
·  受控用户访问;
·  采用物理硬件隔离,以确保高性能、可靠性和弹性。

如今,Navigator Key Trustee HA实现了一个热备的故障转移系统,使得Key Trustee Client(例如在EDH(KMS)内部和EDH(Cloudera Navigator Encrypt)外部发现的Key Trustee Client)能够继续以只读模式运行,直至恢复完整的服务外可用性。

作为一个Key Trustee客户端,Cloudera Navigator Encrypt可以充分利用自动故障转移功能来实现此客户端新版本的只读操作。当在客户端注册期间使用--被动故障转移(--passive switch)时,客户端将具备HA能力并且具备以类似于KMS的方式进行工作的能力。

在这种模式下,Key Trustee客户端可以从密钥管理基础设施(KMI)中读取现有的关密匙材料,但将无法提交新的密钥以便进行存储。

·  对于EDH内部预先登记的客户端,例如Key Trustee KMS,您的系统将继续具备向现有的加密区域执行读取和写入的能力。
·  对于EDH外部预先登记的客户端,例如Cloudera Navigator Encrypt,您的系统将继续具备安装现有的块设备并在这些安装的设备上正常运行的能力。
·  在上述两种情况下,将不会允许执行新的客户端注册、主密钥提交和新的加密区密钥提交,直至恢复全面的服务可用性。

总结
在阅读这篇文章后,您将对基于Cloudera的企业数据中心中实现数据加密的基本最佳实践有一个很好的理解。如需了解有关安全性的一般的更多信息,请参阅《Cloudera安全指南》(Cloudera Security Guide)。


请点击阅读全文进入微站
(更多技术干货、行业动态,请关注【微站】,不定时更新)
文章转载自Cloudera中国,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论