1. 概述
随着大数据的日益流行,hadoop已经成为大数据处理的基础平台,当hadoop被更多公司使用时平台的安全性也为人们所关注。hadoop有个有文档是来介绍hadoop安全设计方案的,介绍了hadoop在安全设计方面的折衷security-design,对理解hadoop如何使用kerberos时有所帮助。虽然hadoop基于kerberos做安全认证,但与标准的使用方式还是有所不同的,文档里对此有较为详细的解释。
本文用于记录个人对hadoop安全机制的思考、学习过程,更多关注原理方面的东西,不会面面俱到的介绍hadoop如何配置、使用kerberos。
2. 用户认证及安全
首先简单介绍下认证机制需要解决的问题、认证过程中面临的安全问题及如何解决这些问题,这里不会对一些复杂的安全协议、加密算法过程原理做出详细的解释,有兴趣的可以自行google之。
2.1 用户认证
用户认证要解决的问题就是判断用户提供的凭据的合法性,这里的凭据可以是用户名、密码,也可以是公钥、私钥,这个问题看似简单,但当用于通信的网络是不可信时就面临着很多安全问题。
2.2 网络数据安全
在不可信的网络环境中传输数据尤其是用户认证信息时面临几方面的挑战:
数据监听和劫持。如果传输的数据被不怀好意的人监听或劫持,那么用户的认证信息就可能泄露,可能会给用户带来损失。一种方法是保证数据不会被监控或劫持,如果数据传输在可控的局域网内当然可以做,但在复杂的广域网中想要保证数据不被监听几乎不大可能。因此只能保证即使传输的数据被别人拿到也无法得到用户信息,很容易想到就是对数据加密。
数据加密的安全性。加密后的数据就一定安全吗?答案当然是否定的,如果加密后的数据很容易的被破解那么加密也就不管用了,因此数据加密过程也要保证一定的安全性。
2.3 加密安全性
即使数据加密也需要具有一定的安全性,如果很容易就破解出加密的内容,加密也就失去了意义。
加密算法
对称、非对称加密。这种加密都可根据密钥恢复出数据,区别就是加密、解密强度不同。对称加密用的比较多的有DES、AES等加密算法,非对称加密有RSA、椭圆曲线加密算法等。
md5/sha1摘要。对于认证来说只要能够验证用户凭据的合法性就可以,不一定需要得到原始用户凭据,这种情况下用户和认证都用凭据做为key对数据进行md5或sha1摘要(md5或sha1算法的一种计算是可以有key)计算对比摘要是否一致,以此来对用户进行认证。
不能说上面两种加密认证哪种更好,虽说md5签名认证具有不可逆性,但也存在唯一映射关系,比较容易受到词典攻击。
加密安全性
- 破解时间。首先所有的加密算法都可能被破解的,只是成本或时间而已,即使像md5这样的不可逆算法,也可以通过词典匹配进行暴力破解,所以只要数据在其有效时间内不会被破解就能达到数据保密的意义,就像很多绝密资料都是一定的保密期限一样。
- 加密的随机性。如果加密过