热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kerberos概述(一)

标题配置Kerberos认证使用强身份验证建立用户身份是Hadoop安全访问的基础。用户需要可靠地标识自己,然后在整个Hadoop集群中传播该标识以访问集群资源。H

标题配置Kerberos认证

使用强身份验证建立用户身份是Hadoop安全访问的基础。用户需要可靠地标识自己,然后在整个Hadoop集群中传播该标识以访问集群资源。
Hortonworks使用Kerberos进行身份验证。
Kerberos是用于在Hadoop集群中对用户和资源进行身份验证的行业标准。HDP还包括Ambari,它简化了Kerberos设置、配置和维护。
默认情况下,Ambari要求用户使用用户名和密码进行身份验证。无论您将其配置为使用内部数据库进行身份验证,还是与外部源(如LDAP或Active Directory)进行同步,Ambari都会使用这种身份验证机制。可选地,您可以配置Ambari通过SPNEGO(简单且受保护的GSSAPI协商机制)使用Kerberos令牌进行身份验证。

Kerberos概述

对Kerberos身份验证的高级概述,包括密钥分发中心、主体、身份验证服务器、票据授予票据和票据授予服务器。
强身份验证和建立用户身份的基础是Hadoop中的安全访问。用户需要能够可靠地“识别”
,然后在整个Hadoop集群中传播这个身份。完成此操作后,这些用户就可以访问资源(例如
作为文件或目录)或与集群交互(比如运行MapReduce任务)。Hadoop集群除了用户之外,资源本身(如主机和服务)需要相互验证,以避免潜在的恶意系统或守护进程的“冒充”可信组件的群集以获得对数据的访问。
Hadoop使用Kerberos作为强身份验证和标识的基础用户和服务的传播。
Kerberos是一种第三方身份验证机制,其中用户和服务依赖于第三方(Kerberos服务器)对每个服务进行身份验证到另一个。Kerberos服务器本身称为密钥分发中心,或KDC。
在较高的层次上,它有三部分:
•它所知道的用户和服务(称为主体)及其各自的Kerberos密码的数据库
•一个认证服务器(AS),它执行初始的认证并发出一个票据授予票据(TGT)
•票据授予服务器(TGS),它基于初始的TG签发后续的服务票据

用户主体向AS请求认证。AS返回使用用户主体的Kerberos密码加密的TGT,该密码只有用户主体和AS知道。用户主体使用其Kerberos密码在本地解密TGT,从那时起,直到票据过期,用户主体可以使用TGT从TGS获得服务票据。服务票证允许主体访问各种服务。
因为集群资源(主机或服务)不能每次都提供密码来解密TGT,所以它们使用一个称为keytab的特殊文件,该文件包含资源主体的身份验证凭据。Kerberos服务器控制的一组主机、用户和服务称为领域。

术语

术语(Term)描述
Key Distribution Center, or KDC在支持kerberos的环境中进行身份验证的受信任源。
Kerberos KDC Server充当密钥分发中心(KDC)的机器或服务器。
Kerberos Client集群中针对KDC进行身份验证的任何机器。
Principal根据KDC进行身份验证的用户或服务的唯一名称。
Keytab包含一个或多个主体及其键的文件。
RealmKerberos网络包括一个KDC和许多客户机。
KDC Admin AccountAmbari用于在KDC中创建主体和生成键选项卡的管理帐户。

Kerberos主体概述

Hadoop中的每个服务和子服务都必须有自己的主体。给定领域中的主体名由主名和实例名组成,在本例中,实例名是运行该服务的主机的FQDN。由于服务不使用密码登录以获取票据,因此其主体的身份验证凭据存储在keytab文件中,该文件从Kerberos数据库中提取,并存储在服务组件主机上与服务主体一起的本地安全目录中。

在这里插入图片描述

Principal和Keytab命名约定

资产公约例子
Principalsservicecomponentname/service_component_name/servicecomponentname/FQDN@EXAMPLE.COMnn/c6401.ambari.apache.org@EXAMPLE.COM
Keytabs$service_component_abbreviation.service.keytab/etc/security/keytabs/nn.service.keytab

请注意在前面的示例中,每个服务主体的主名称。这些主要名称(如nn或hive)分别代 NameNode或hive服务。每个主要名称都附加了实例名,即它所运行的主机的FQDN。该约定为运行在多个主机上的服务(如datanode和nodemanager)提供唯一的主体名称。添加主机名是为了区分DataNode a的请求和DataNode b的请求。这一点很重要,原因如下:
•一个DataNode的Kerberos凭证受损不会自动导致所有DataNode的Kerberos凭证受损。
•如果多个datanode具有完全相同的主体并且同时连接到NameNode,并且发送的Kerberos验证器恰好具有相同的时间戳,那么验证将作为重放请求被拒绝。

除了Hadoop服务主体,Ambari本身也需要一组Ambari主体来执行服务“冒烟”检查、执行警报健康检查和从集群组件检索度量。Ambari主体的Keytab文件驻留在每个集群主机上,就像服务主体的Keytab文件一样。

Ambari Principals描述
Smoke and “Headless” Service usersAmbari用于执行服务“冒烟”检查和运行警报运行状况检查。
Ambari Server user当为Kerberos启用集群时,组件REST端点(如YARN ATS组件)需要SPNEGO身份验证。Ambari服务器需要访问这些api,并需要一个Kerberos主体,以便通过SPNEGO对这些api进行身份验证。

推荐阅读
author-avatar
念中怡名哲盈_452
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有