大数据集群集成kerberos

1.背景

2.什么是kerberos

3.kerberos原理浅析

4.kerberos基础操作

5.大数据集成kerberos

1.背景

  1. 近几年,在各大网站上总会时不时的看到一些因为数据安全问题被大面积攻击、勒索的事件。 这种数据安全问题尤其是在大数据时代显得更加凸显。
  2. 在Hadoop初期版本之前,Hadoop没有提供一个有效的安全支持,默认集群内所有角色都是可靠的,用户访问服务时,不需要进行任何验证,导致恶意用户可以很轻松的进行伪装并进入集群内部进行破坏。
    3.因为这些安全问题,Hadoop社区意识到他们需要更加健壮的安全控制,因此,雅虎的一个团队决定重点解决认证问题,选择Kerberos作为Hadoop的认证机制,这在他们2009年的白皮书上有记录。
  3. 在Hadoop发布.20.20x版本时,该版本采用了Kerberos RPC (SASL/GSSAPI) 在RPC连接上做相互认证——用SASL/GSSAPI来实现Kerberos及RPC连接上的用户、进程及Hadoop服务的相互认证。
  4. 为HTTP Web控制台提供“即插即用”的认证——也就是说web应用和web控制台的实现者可以为HTTP连接实现自己的认证机制。包括(但不限于)HTTP SPNEGO认证。

2.什么是kerberos

Kerberos是一种网络身份验证协议,最初设计是用来保护雅典娜工程的网络服务器。Kerberos这个名字源于希腊神话里的三头犬。它旨在通过使用秘***加密为客户端/服务器应用程序提供强身份验证。Kerberos是由麻省理工学院创建,作为解决这些网络安全问题的解决方案。Kerberos协议使用强加密技术,以便客户端可以通过不安全的网络连接向服务器(反之亦然)证明其身份。在客户端和服务器使用Kerberos证明其身份后,他们还可以加密所有通信,以确保在业务开展时的隐私和数据完整性
;

3.kerberos原理浅析

大数据集群集成kerberos
一、Client和AS的交互
1 Client访问TGS获取访问网路中某一Server的ticket请求时,Client端会把第一部分中保存在本地的Ktgs和用SKK加密的客户信息发送KDC的TGS模块
2. AS服务验证该用户信息存在数据库中后,给客户端返回两大块信息:
1). 使用用户的秘钥加密其申请的TGT和一个Session Key返回用户,用户得到加密信息后,使用自己的**解密得到其申请的TGT和Session Key(后续简称SKK).
2). 以KDC自身**加密用户申请的TGT、SKK、用户信息等;简称Ktgs,该部分信息被Client保存在本地
二、Client和TGS的交互
1 Client访问TGS获取访问网路中某一Server的ticket请求时,Client端会把第一部分中保存在本地的Ktgs和用SKK加密的客户信息发送KDC的TGS模块
2 TGS收到请求后,检查请求Server存在数据库中后,用自己的**解密得到TGT中的SKK,然后便可以解密得到用户信息并验证其合法性;验证通过后,TGS会生成一个新的Session Key,简称SKS;同时返回两部分信息:
1) 用SKK加密的SKS、能够访问Service的ticket等信息
2) 用Service**加密的client 端信息、SKS等信息,简称KService

4.kerberos基础操作

1.安装
2.配置相关文件
kdc.conf
默认存放路径/var/kerberos/krb5kdc/kdc.conf
大数据集群集成kerberos
krb5.conf
默认存放路径/etc/krb5.conf
大数据集群集成kerberos
Kadm5.acl
默认存放路径/var/kerberos/krb5kdc/kadm5.acl
大数据集群集成kerberos
3.管理员操作
登录到管理员账户: 如果在本机上,可以通过kadmin.local直接登录。其它机器的,先使用kinit进行验证。

大数据集群集成kerberos
大数据集群集成kerberos
增删改查账户
在管理员的状态下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。

  • kadmin.local: addprinc test
  • kadmin.local: delprinc test
  • kadmin.local: listprincs

生成keytab
Keytab文件,类似于一个密码本,认证时可以直接通过keytab文件认证,不需要输密码。

※注意:不加参数–norandkey ,生成keytab文件时,修改掉原来的密码

用户操作
认证用户有两种方式:1.密码认证,2.keytab认证
大数据集群集成kerberos
大数据集群集成kerberos
销毁认证
大数据集群集成kerberos

5.大数据集成kerberos

CDH开启Kerberos
大数据集群集成kerberos
Command Line集成
先认证,后访问hdfs,可以正常访问
大数据集群集成kerberos
没有认证,直接访问hdfs,报错
大数据集群集成kerberos
大数据集群集成kerberos
Java API访问服务时,主要利用keytab形式认证为主,keytab文件类似于kerberos的密码列表文件,用该形式认证不需要输入密码,对于代码层面非常友好。我们调用hadoop的安全认证UserGroupInformation类进行认证,不管是访问HDFS API还是JDBC连接Hive,都可以使用以下认证代码,并且支持过期续约认证
大数据集群集成kerberos
大数据集群集成kerberos

  1. kerberos服务是单节点的,假如kerberos服务器宕机,将影响整个hadoop集群的认证和使用
  2. Keytab文件虽然认证比较方便,但是如果keytab文件泄露,将危及大数据集群的安全,所以这将增加对keytab文件的管理的工作