周更快变成月更了,但还是要坚持,本文来聊聊hadoop中的token,涉及到的点如下图所示。
【Hadoop为什么需要Token】
hadoop最初的实现中并没有认证机制,这意味着存储在hadoop中的数据很容易泄露。后来,基于kerberos认证的安全特性被加入到hadoop中,但是基于kerberos的认证在使用过程中,会存在以下问题:
过程比较复杂,认证过程中还需要涉及到第三方的服务
kdc服务存在单点问题(不管是可靠性,还是性能瓶颈),尤其是当有大量用户请求需要通过kdc来获取tgt票据时。
因此Token认证被引入充当kerberos的补充,在兼顾安全认证的同时,性能没有较大的损耗。
在hadoop中,token主要包括DelegationToken,以及其他一些token,例如之前文件介绍过的BlockToken,以及yarn中一系列的token。
【Token是什么】
所谓token,本质上就是服务端生成的一串加密字符串,以作为客户端请求的一个“令牌”。 通常而言,用户第一次通过使用账号密码成功登录后,服务端会生成一个token及token的有效时间返回给客户端,此后,客户端只需要在有效时间内带上这个token发送请求即可。而不需要再次带上用户名和密码。
token具有以下优点:
随机性,不可预测性,时效性,无状态,跨域等特点
完全有应用管理,可以避开同源策略
可以避免CSRF攻击
可以在多个服务间共享
【SASL是什么】
token认证通常是在SASL中进行的,接下来就简单介绍下SASL。
简单认证与安全层(Simple Authentication And Security Layer)是一个在网络协议中用来认证和数据加密的框架。它把认证机制从程序中分离开,理论上使用SASL的程序协议都可以使用SAS