Kerberos入门
1. Kerberos概述
1.1 Kerberos的简介
Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。
1.2 Hadoop的安全模式
需要和Hadoop集群中的Safe Mode区分,Safe Mode指的是HDFS的一种临时保护状态,用于在NameNode启动或集群异常时维护数据块的一致性,防止因数据块副本不完整而导致的数据损坏。Hadoop的安全模式文档链接如下:
Haoop的安全模式建立在Kerberos之上实现。意味着所有用户、所有Hadoop服务必须通过Kerberos认证。
2. Kerberos概念
Kerberos中有以下一些概念需要了解:
(1)KDC:密钥分发中心,负责管理发放票据,记录授权。
(2)Realm:Kerberos管理领域或范围的标识名称。
(3)principal:Kerberos所管理的一个用户或者服务,可以理解为Kerberos中保存的一个账号,通常principl的格式为:主名称/实例名@领域名(如果是用户格式简单为:用户名@领域名,实例名可以省略;如果是服务则为:服务名/主机名@网站的域名)。
(4)keytab: Kerberos中的用户认证,可通过密码或者密钥文件证明身份,其中密钥文件就是keytab。对于用户来说使用密码进行认证比较方便,对于服务来说使用密钥文件进行认证。
3. Kerberos认证原理
下面通过用户访问HDFS为例:
可以看到KDC是由三部分组成:AS、Database、TGS。要使用Kerberos,在Apache的大数据集群中需要做三件事:
- 提前在Kerberos注册用户(客户端机器)
- 注册用户用户主体和服务主体(大数据各种组件)
- 用户的认证(使用Kerberos)
而在CDH中服务主体(大数据各种组件)的注册步骤已经被CDH做了可以省略。
