首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

大数据平台搭建利器 Ambari 之 Kerberos 集成之路(1)

大数据平台搭建利器 Ambari 之 Kerberos 集成之路(1)

Kerberos 介绍Kerberos 是一个网络认证的框架协议,其设计的初衷便是通过密钥系统为 Client 和 Server 应用程序之间提供强大的认证服务。在使用 Kerberos 认证的集群中,Client 不会直接和 Server 进行认证,而是通过 KDC(Key Distribution Center)来完成互相的认证。首先,我们需要简单的介绍下跟 Kerberos 相关的术语,如表 1 所示。
表 1.Kerberos 相关的术语术语
简述
KDC(Key Distribution Center)
在启用 Kerberos 的环境中,KDC 用于验证各个模块
Kerberos KDC Server
KDC 所在的机器
Kerberos Client
任何一个需要通过 KDC 认证的机器(或模块)
Principal
用于验证一个用户或者一个 Service 的唯一的标识,相当于一个账号,需要为其设置密码(这个密码也被称之为 Key)
Keytab
包含有一个或多个 Principal 以及其密码的文件
Relam
由 KDC 以及多个 Kerberos Client 组成的网络
KDC Admin Account
KDC 中拥有管理权限的账户(例如添加、修改、删除 Principal)
Authentication Server (AS)
用于初始化认证,并生成 Ticket Granting Ticket (TGT)
Ticket Granting Server (TGS)
在 TGT 的基础上生成 Service Ticket。一般情况下 AS 和 TGS 都在 KDC 的 Server 上

Kerberos 的认证过程如下图所示。我们可以简单的理解为,一个 User 或者一个 Service 会用 Principal 到 AS 去认证,AS 会返回一个用 Principal Key 加密的 TGT,这时候只有 AS 和这个 Principal 的使用者可以识别该 TGT。在拿到加密的 TGT 之后,User 或者 Service 会使用 Principal 的 Key 来解密 TGT,并使用解密后的 TGT 去 TGS 获取 Service Ticket。在 Kerberos 认证的集群中,只有拿着这个 Service Ticket 才可以访问真正的 Server 从而实现自己的业务逻辑。一般我们将 TGT 的存放文件,称为 Kerberos Confidential 文件,默认的存放目录为/tmp,文件名则由 krb5cc 和用户的 id 组成,例如“/tmp/krb5cc_0”为 root 的 confidential 文件。
图 1. Kerberos 的认证流程表 2. 常用的 Kerberos 命令命令名
命令简介
Kadmin
用于管理 Kerberos 相关配置的,需要用 Principal 登录(需要 Principal 的 Key),可以在任一个 Kerberos Client 机器上使用
Kadmin.local
同 Kadmin,不过这个命令供 root 使用(只能在 KDC Server 上用)
Kinit
生成初始化 ticket,也就是 TGT,并保存到一个 cache 文件,一般存放在/tmp 目录
Klist
用于列出 Kerberos 的 Confidential 信息,默认会列出/tmp 目录下的 cache 文件中的 Confidential 信息,也可以列出 keytab 文件的 ticket 信息
Ktutil
用于管理 keytab 文件

有兴趣的读者可以在 Kerberos 的环境中试试以上的命令。目前业界常见的 Kerberos 的实现有 MIT Kerberos 和 Microsoft Kerberos,从名称便可以知道分别是由麻省理工和微软实现的。本文将要介绍的 Ambari 的 Automated Kerberization 机制,使用 MIT Kerberos。
返回列表