Kerberos 认证与 Ranger 权限实战
从 OpenLDAP+Kerberos 账号统一到 Ranger 多组件权限策略配置,覆盖大数据平台安全加固的端到端实战
大数据平台的安全加固涉及两个核心维度:身份认证解决"系统里有没有这个人",权限管理解决"他能做什么"。Kerberos 是大数据生态中最广泛支持的认证机制,而 Apache Ranger 则是与众多大数据组件集成的权限管理框架。两者的结合构成了大数据平台安全体系的基石。本文从 OpenLDAP + Kerberos 的账号统一方案出发,覆盖 Ranger 多组件权限策略配置的端到端实战。
为什么需要统一认证与权限
在一个未加固的大数据集群中,任何能访问集群节点的用户都可以自由地读写 HDFS 上的数据、提交 Spark 作业、查询 Hive 表。这在开发测试环境中或许可以接受,但在生产环境中,这意味着数据泄露和误操作的风险几乎无法控制。
企业通常已经建立了以 OpenLDAP 或 Windows AD 为代表的中心化账号管理系统。将大数据平台的认证对接到这套系统上,可以实现"一个账号走天下"——用户使用同一套用户名和密码登录集群节点、提交作业、访问数据服务。Kerberos 虽然在大数据生态中的支持最广泛,但它和 OpenLDAP 是两套独立的认证系统,需要通过一系列技术手段将两者的账号打通。
OpenLDAP 与 Kerberos 的账号统一
OpenLDAP 与 Kerberos 的深度集成分为三个阶段,每个阶段解决一个核心问题。
第一阶段:将 Kerberos 数据库迁移到 OpenLDAP。 这一步将 Kerberos 的后台存储从本地文件迁移到 OpenLDAP,使得两个系统的账号数据可以共存在同一条 LDAP 记录中。具体操作包括:在 OpenLDAP 中导入 Kerberos Schema,修改 KDC 配置文件使其指向 LDAP 后端,在 OpenLDAP 上创建 Kerberos 数据库,然后将原有的 Kerberos 数据备份并恢复到新数据库中。
迁移完成后,通过 addprinc -x dn=... 命令创建 Kerberos 账号时,可以指定其在 LDAP 中的存放位置,将 Kerberos 账号属性写入对应的 LDAP 记录。这样,一个用户的 LDAP 账号和 Kerberos 账号就存储在了同一条记录中。
第二阶段:配置 SSSD 实现 Linux 登录。 SSSD(System Security Services Daemon)是 Linux 系统与 OpenLDAP 对接的桥梁。在大数据集群的每个节点上配置 SSSD 后,用户可以使用 LDAP 账号通过 SSH 登录集群节点。配置要点包括:指定 LDAP 服务器地址和 Base DN,配置 Bind DN 和密码,设置密码缓存策略以避免 LDAP 服务不可用时无法登录。
第三阶段:基于 SASL/GSSAPI 实现深度集成。 这是最关键的一步,目标是让用户使用同一个密码既能登录 Linux 系统,又能自动完成 Kerberos 认证。实现方法是配置 OpenLDAP 的 SASL/GSSAPI 映射规则,将 Kerberos 账号映射到对应的 LDAP 账号;同时配置 saslauthd,让 OpenLDAP 委托 Kerberos 验证密码。这样,用户通过 GSSAPI 方式 SSH 登录时,系统会自动向 Kerberos KDC 验证密码,并在登录成功后自动获取 Kerberos 票据。
智能运维 YCOS
统一指标、日志、链路,覆盖监控、告警、根因定位与智能运维的可观测平台
Ranger 权限管理的定位
在身份认证问题解决后,权限管理成为下一个需要解决的问题。Apache Ranger 提供了一个集中化的权限管理框架,通过 Web UI 为管理员提供统一的策略配置界面,策略生效后由各个组件的 Ranger 插件在本地执行权限校验。
Ranger 的核心架构包括三个组件:Ranger Admin 负责存储和管理策略,提供 Web UI 和 REST API;Ranger Usersync 负责从外部认证源(如 LDAP)同步用户和组信息;Ranger Plugin 部署在各个大数据组件中,在每次数据访问时向 Ranger Admin 请求策略并进行本地校验。
Ranger 支持的策略类型包括:访问策略(授予或拒绝特定用户/组对特定资源的操作权限)、数据脱敏策略(对敏感字段进行遮蔽或替换)、行级过滤策略(根据用户身份过滤行数据)。这些策略可以精确到列级别,甚至支持基于正则表达式的动态资源匹配。
多组件 Ranger 策略配置实战
Hive 的 Ranger 权限配置
Hive 是 Ranger 集成最成熟的组件。安装 Ranger Hive Plugin 后,在 Ranger Web UI 中创建 Hive 服务并配置连接信息,即可开始定义策略。
一个典型的策略配置包括:服务名称(与 Ranger Hive Plugin 的配置保持一致)、策略类型(Hive 表级别的访问控制)、用户或组、操作权限(SELECT、INSERT、UPDATE、DELETE 等)、以及资源范围(指定数据库、表、列的匹配模式)。
例如,要让 analytics 组的用户只能查询 sales_db 数据库中所有表的前 10 列,可以创建一条策略:用户/组选择 analytics,操作选择 SELECT,数据库设为 sales_db,表设为 .*(通配所有表),列限制为前 10 个字段名。
Doris 的 Ranger 权限配置
Doris 的 Ranger 集成相对较新,但已经支持了完整的策略类型。配置流程分为两步:先在 Ranger 服务端安装 Doris 插件(上传 JAR 包和服务定义 JSON),然后在 Doris FE 侧配置 access_controller_type=ranger-doris 并放置 ranger-doris-security.xml 配置文件。
Doris 的 Ranger 策略支持 Catalog 级别、库级别、表级别和列级别的权限控制,还支持行级过滤和数据脱敏。需要注意的是,行级过滤和数据脱敏功能要求 Doris 版本在 2.1.3 以上。
Kerberos 环境下的特殊配置
当 Ranger Admin 服务本身开启了 Kerberos 认证时,Doris 的 Ranger Client 在拉取策略时需要以 Kerberos 身份向 Ranger Admin 鉴权。此时需要在所有 FE/BE 节点上合并 krb5.conf(如果存在多个 Realm),并在 ranger-doris-security.xml 中追加 Kerberos UGI 相关配置项,包括 keytab 文件路径和 Principal 名称。
数据治理
统一标准、质量、安全与资产管理,沉淀高质量数据集,支撑经营决策、监管合规与 AI 应用。
常见问题与排查
Kerberos 认证失败。 最常见的原因是时间不同步。Kerberos 协议对时钟偏差非常敏感,默认允许的最大偏差为 5 分钟。确保集群所有节点与 KDC 服务器的时间同步(通过 NTP 或 Chrony),是排查认证失败的第一步。
Ranger 策略不生效。 检查 Ranger Plugin 的缓存目录是否正确配置,策略拉取的轮询间隔是否合理。如果 Ranger Admin 不可达,Plugin 会使用本地缓存的策略,可能导致新策略无法及时生效。建议将轮询间隔设置为 30 秒以内,并监控策略拉取的成功率。
SSSD 登录延迟。 如果 LDAP 服务器响应较慢,SSSD 的查询操作可能导致 SSH 登录延迟。解决方案是启用 SSSD 的本地缓存功能,将用户信息和凭证缓存到本地,在 LDAP 不可达时使用缓存数据进行认证。
Kerberos 票据过期。 Kerberos 票据有生命周期限制(默认 10 小时),过期后需要重新认证。对于长时间运行的作业,需要配置自动续票机制。Hadoop 生态中的 kinit 命令和 keytab 文件可以实现无人值守的自动续票。
安全加固是一个渐进的过程。从 OpenLDAP 与 Kerberos 的账号统一开始,到 Ranger 多组件权限策略的配置,再到日常运维中的故障排查,每一步都需要仔细规划和充分测试。建立完善的安全体系后,大数据平台才能在保障数据安全的前提下,充分发挥数据的价值。
从账号统一到权限闭环:端到端流程
将上述各环节串联起来,一个完整的大数据平台安全加固流程可以概括为以下步骤。
第一步是规划账号体系。在 OpenLDAP 中建立统一的组织结构,定义用户 OU 和服务账号 OU。为每个需要访问大数据平台的用户创建 LDAP 账号,同时在 Kerberos 中创建对应的 Principal。确保两个系统的用户名部分保持一致,这是后续所有集成工作的基础。
第二步是部署和配置认证基础设施。在 OpenLDAP 上完成 Kerberos Schema 的导入和数据库迁移,配置 SSSD 使集群节点能够通过 LDAP 进行用户认证,最后通过 SASL/GSSAPI 实现 Kerberos 与 OpenLDAP 的深度集成。这个过程需要在集群的每个节点上重复执行 SSSD 和 Kerberos 客户端的配置。
第三步是部署 Ranger 并配置各组件的权限策略。先确保 Ranger Admin 和 Usersync 正常运行,然后为 Hive、Doris、HDFS 等组件依次安装 Ranger Plugin,创建对应的服务定义,并在 Ranger Web UI 中配置访问策略、脱敏策略和行级过滤策略。策略的配置顺序建议从粗粒度开始,逐步细化到列级和行级。
第四步是验证和收尾。使用不同身份的测试账号验证认证和权限是否按预期工作:普通用户能否正常登录并访问授权范围内的数据,未授权的访问是否被正确拒绝,Kerberos 票据的生命周期管理是否正常。同时建立日常运维的监控机制,跟踪认证失败率、策略拉取状态和 KDC 服务的可用性。


