一.引言
Hadoop集群的完整安全体系建立在"认证→授权→审计"三层架构之上,LDAP、Kerberos和Ranger分别承担不同职责,三者协同形成闭环:
- Kerberos:负责身份认证(Authentication) ,解决"你是谁"的问题;
- LDAP:负责用户/组信息统一存储与管理,解决"用户身份从何而来"的问题;
- Ranger:负责细粒度授权(Authorization)与审计(Auditing) ,解决"你能做什么"的问题。
这三者并非互斥关系,而是互相配合:LDAP作为统一的身份源存储用户和组信息;Kerberos利用LDAP中的身份信息进行强认证;Ranger则基于LDAP中的用户/组信息制定和执行细粒度的访问控制策略。

二、安全组件介绍
1.LDAP ------ 统一身份源与用户目录
LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)用于集中化用户管理和身份存储。在Hadoop安全体系中,LDAP通常与Kerberos配合使用:LDAP做账号管理,Kerberos做认证。LDAP作为权威身份源,提供用户和组信息的统一存储与查询服务。
- 集中化用户管理:所有用户的账户信息(用户名、UID、组成员关系等)在LDAP中统一维护,避免各节点分散管理;
- 层次化目录结构:采用树状结构存储目录条目,便于组织架构映射和权限继承;
- 标准化访问协议:基于TCP/IP的标准协议,被Hadoop生态各组件广泛支持;
- 可扩展性:支持与Kerberos的SASL/GSSAPI集成,实现安全认证通信;
- 与企业系统集成:支持与Microsoft Active Directory、OpenLDAP等主流目录服务无缝对接。

2.Ranger ------ 统一授权与审计平台
Apache Ranger是为Hadoop生态系统设计的集中式安全管理框架,提供统一的授权管理和审计能力。用户可以通过Ranger对Hadoop组件(如HDFS、Hive、HBase、Kafka、YARN等)实现细粒度的访问控制。
- 细粒度访问控制:支持数据库/表/列/行级别的权限控制,提供列掩码和行过滤等高级安全特性;
- 统一策略管理界面:提供直观的Web UI和REST API,支持集中化的策略创建、管理和监控;
- 广泛的组件适配:覆盖HDFS、YARN、Hive、HBase、Kafka、Solr、NiFi等几乎所有Hadoop核心组件;
- 丰富的审计能力:提供全组件统一审计日志,记录用户、操作、资源、结果等细节,可与Elasticsearch、Kibana集成实现日志分析和合规报告生成;
- 动态策略生效:支持实时更新访问控制策略,无需重启服务;
- 多种权限模型支持:支持基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC)混合模型。

Ranger的核心组件包括Ranger Admin(提供Web UI和策略管理API)、Ranger Plugins(嵌入各组件主守护进程节点的策略执行代理)以及审计存储系统(通常使用Solr)。Ranger Admin通常部署在Master节点,Ranger Plugin则根据组件分布部署在不同节点上。

3.Kerberos ------ Hadoop生态的认证基石
Kerberos是一种基于对称密钥加密的网络认证协议,为Hadoop集群提供强身份认证能力。当Hadoop配置为安全模式运行时,每个Hadoop服务和每个用户都必须通过Kerberos进行身份验证。
- 强双向认证:基于密钥加密技术,客户端和服务端相互验证身份,防止中间人攻击和身份伪造;
- 单点登录(SSO) :用户一次认证获得票据授予票据(Ticket-Granting Ticket, TGT),即可访问集群内所有Kerberos化服务,有效期通常为8-24小时;
- 防重放攻击:服务票据具有时效性和唯一性,防止攻击者截获后重复使用;
- 无明文密码传输:使用加密票据而非明文密码,有效保护网络传输安全;
- 服务间互信:Hadoop各服务组件(NameNode、DataNode、ResourceManager等)通过各自的service principal实现服务间认证。
Kerberos核心组件包含:
- KDC(密钥分发中心):包含 AS(认证服务器)和 TGS(票据授予服务器),负责票据发放和认证管理
- Principal(主体):用户或服务的唯一标识,格式为name/instance@REALMApache Had...
- Keytab:存储主体密钥的文件,用于无密码认证Apache Had...
- TGT(票据授予票据):用户首次认证后获取,用于后续申请服务票据
- Service Ticket:访问特定服务所需的票据

在Hadoop安全模式下,所有服务主机必须正确配置正向和反向主机查找,可使用DNS或/etc/hosts文件配置。每个Hadoop服务实例都需配置其Kerberos principal和keytab文件位置,principal格式为ServiceName/_HOST@REALM.TLD,例如nn/_HOST@EXAMPLE.COM。
4.三层安全架构总结
| 维度 | Kerberos | LDAP | Apache Ranger |
|---|---|---|---|
| 职责 | 身份认证 | 用户/组信息存储 | 授权+审计 |
| 解决的核心问题 | 确认"你是谁" | 谁是谁、谁属于哪个组 | 能做什么、做了什么 |
| 典型配置 | 各服务principal+keytab | 统一身份源,支持AD/OpenLDAP | Admin Server + 组件插件 |
| 技术特点 | 对称加密票据、SSO、防重放 | 层次化目录、标准化协议 | 细粒度RBAC/ABAC、统一审计 |
| 与Hadoop集成方式 | core-site.xml设置认证类型 | 通过SSSD/PAM同步到OS | 插件嵌入各组件进程 |
三、总结展望
Hadoop生态系统中,除了LDAP+Kerberos+Ranger组合外,还有多种安全认证与鉴权方案:
- Simple+ACL:简单认证,常用于测试环境
- Kerberos+Sentry:Sentry是Cloudera早期开发的授权模块,已逐步淘汰
- Knox + Kerberos + Ranger:Knox与Ranger常组合使用,形成"网关防护 + 细粒度授权"的完整安全链路,用于集群边界防护,简化外部访问
随着技术的不断迭代与云原生的发展,也涌现了诸如FreeIPA+Ranger(集成Kerberos/LDAP简化部署)、OAuth2/OIDC/IAM+Ranger(云原生场景下的认证)等安全方案,未来也会朝着云原生与AI智能化的方向演进。