Hadoop生态的权限管理通常由身份认证、授权与访问控制、统一策略与审计三层构成。生产上常见做法是先启用Kerberos做强认证,再在HDFS层用POSIX+ACL做细粒度访问控制,在Hive/HBase层用RBAC(如 Sentry 或 Ranger)做库表列级授权,并通过Ranger统一策略与审计。Hadoop 本身并不存储用户与用户组信息,通常依赖Linux/OpenLDAP进行集中管理,必要时通过 PAM/LDAP 同步用户与组到操作系统。
核心组件与适用场景
| 组件 | 作用 | 典型场景 | 关键要点 |
|---|---|---|---|
| Kerberos | 强身份认证(Service Principal、keytab) | 集群启用安全模式 | 统一身份、票据生命周期管理 |
| HDFS POSIX+ACL | 文件/目录级权限与扩展ACL | 数据仓库目录、表数据路径 | 目录继承、默认ACL、umask |
| Hive/Impala 授权 | 库/表/列级与URI授权 | 外部表数据路径、敏感列脱敏 | 支持 RBAC(Sentry/Ranger) |
| HBase ACL | 命名空间/表/列族/列级 | 实时查询细粒度控制 | 需为长期任务处理 TGT 续期 |
| YARN ACL/队列 ACL | 提交作业与队列访问控制 | 多租户资源隔离 | 队列ACL与调度器配合 |
| Apache Ranger | 统一授权与审计策略 | 跨组件集中治理 | HDFS/Hive/HBase/YARN 策略统一 |
| Apache Sentry | 组件级授权(Hive/Impala) | CDH 场景常见 | 角色-组-对象授权模型 |
实施步骤
统一用户与组管理
建议以OpenLDAP为权威源,使用 PAM 将 LDAP 用户/组同步到各节点操作系统,避免多系统重复维护;Kerberos 仅负责认证,不管理组信息。
启用 Kerberos 强认证
在所有节点配置 /etc/krb5.conf 与 KDC(kdc.conf),为服务创建 Service Principal(如 hdfs/_HOST@REALM、hive/_HOST@REALM),生成 keytab 并分发;用户/服务通过 kinit 获取票据,使用 klist/kdestroy 管理票据生命周期。
配置 HDFS 权限与 ACL
在 hdfs-site.xml 启用权限与 ACL:
配置 Hive/Impala 授权(Sentry 或 Ranger)
配置 YARN 队列与作业 ACL
在 mapred-site.xml 启用队列 ACL:mapred.acls.enabled=true;在调度器(如 Fair Scheduler)配置队列与 ACL 规则,控制用户/组的作业提交与管理权限。
常见注意事项
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。