许多担忧安全和隐私的组织有加密的需求。Hadoop提供用于网络传输中的加密机制。尽管这些机制能够提供认证,但它们不提供加密或保密——所有文件管理软件数据都是明文传输的。更进一步,客户端和DataNode使用Hadoop数据传输协议来传输数据,而这也是未加密的。如果网络中有敏感数据,而且有保护集群以防偷听和网络嗅探需求的话,那么最想要的可能就是加密这些交互数据了。
  幸运的是,Hadoop为所有网络通信提供了网络加密数据——RPC加密、HDFC数据传输和HTTP,如下所述:
  RPC加密——当使用Kerberos RPC时,使用基于Kerberos GSSAPI的SASL。之前学到的SASL的用途是在协议协商中提供灵活性。这种灵活性的一部分是提供质量保护的功能,它可以是仅认证、认证和消息完整性,或者认证、完整性和保密性。这些值可以在core-site.xml配置文件的hadoop.rpc配置中进行设置。当把此属性设置为privacy时,这对应于SASL,它确保了SASL连接中的所有传输都是加密的。
  HDFS数据传输加密——客户端被NameNode授予块访问令牌,而这些令牌会随着对数据块的请求提供给DataNode。通过将dfs.encrypt.data.transfer配置属性设置为加密的。如果启用了HDFS数据传输加密,那么还应该确保RPC加密已启用,因为密钥交换恰好使用Hadoop RPC(如果加密了数据,但使用明文传输加密密钥,那么仅会因为加密而使速度变得更慢,但却使数据加密失去了作用。)