6.3 集群安全管理


文档摘要

6.3 集群安全管理 本节摘要:Hadoop 默认"谁连上谁就是声明的用户",安全体系的核心是 Kerberos 强认证加上权限分层。本节解释 Kerberos 三次握手原理、Hadoop 安全启用后的运行变化、HDFS 与 YARN 的权限模型叠加,以及服务间与用户级两条信任线的配置要点与常见坑。 先看默认状态有多"裸" 一个未启用安全的标准 Hadoop 集群里,任何人 就能以 etl 身份操作——身份来自客户端声明,服务端照单全收。内部实验环境尚可,生产环境等于把所有数据敞开:数据的价值在第 1 章已经算过账,PB 级资产的裸奔不可接受。安全体系要补两条信任线:用户到服务(你是谁)与服务到服务(DataNode 别接受伪造的 NameNode 指令)。

6.3 集群安全管理

本节摘要:Hadoop 默认"谁连上谁就是声明的用户",安全体系的核心是 Kerberos 强认证加上权限分层。本节解释 Kerberos 三次握手原理、Hadoop 安全启用后的运行变化、HDFS 与 YARN 的权限模型叠加,以及服务间与用户级两条信任线的配置要点与常见坑。

先看默认状态有多"裸"

一个未启用安全的标准 Hadoop 集群里,任何人 hadoop fs -D hadoop.job.user=etl -ls / 就能以 etl 身份操作——身份来自客户端声明,服务端照单全收。内部实验环境尚可,生产环境等于把所有数据敞开:数据的价值在第 1 章已经算过账,PB 级资产的裸奔不可接受。安全体系要补两条信任线:用户到服务(你是谁)与服务到服务(DataNode 别接受伪造的 NameNode 指令)。第一条靠 Kerberos,第二条靠服务主体加密通道。

Kerberos:三次握手拿到"限时门票"

Kerberos 建立在一个不信任网络的假设上:一切明文声明身份都不可信,必须由可信第三方背书。参与者三方:KDC(密钥分发中心,含认证服务 AS 与票据授权服务 TGS)、用户服务。用户登录拿到限时门票(Ticket),向服务出示门票证明身份,全程密码不上线。

要点三个。主体(Principal)命名三段式用户/实例@REALM,如 hdfs/namenode.example.com@BIGDATA.COM——服务主体带主机名,一台一个,防止票据被搬到别的机器重放。Keytab 文件是主体密钥的本地存储,服务进程(NameNode 用 hdfs 主体)与自动化任务用它免交互登录;keytab 泄漏等于账号泄漏,权限与文件属主要收紧。门票限时(默认 10 小时)加自动续租,长跑任务的凭证更新由框架处理,人只需要 kinit 一次。

Hadoop 启用安全后的运行变化

开启 hadoop.security.authentication=kerberos 后集群的行为变化,比配置步骤更值得理解:

  • NameNode 启动时必须持有 hdfs 主体 keytab,DataNode 注册时也须持自己的主体票据——伪造的 DataNode 无法再混进集群(此前任何人起个进程就能自称 DataNode 拿到块数据);
  • Web UI 与 REST 接口引入 SPNEGO 协商认证,浏览器裸访问变成 401;
  • MapReduce 任务容器需要拿用户的委托凭证(Delegation Token),作业跨节点运行期间无需反复 KDC 认证——KDC 否则会成为心跳风暴的中心;
  • YARN 上每个应用以提交者身份记账,队列 ACL(4.2 节)从"君子协定"变成强制的访问控制。

启用流程概括:建 KDC 与 REALM → 为每个守护进程生成主体与 keytab → 各组件 core-site/hdfs-site/yarn-site 打开认证与授权配置 → 分发 keytab 并逐服务重启 → 客户端 kinit 后验证。配置片段:

<property> <name>hadoop.security.authentication</name> <value>kerberos</value> </property> <property> <name>hadoop.security.authorization</name> <value>true</value> </property> <property> <name>dfs.namenode.kerberos.principal</name> <value>hdfs/_HOST@BIGDATA.COM</value> </property> <!-- _HOST 展开为各机器主机名 一份配置全集群分发 -->

⚠️ 最常见的启用事故:在已有集群上直接开安全重启,数据目录的属主与权限在两种模式下的校验不同,NameNode 可能因目录权限拒绝启动。标准做法是先在测试环境全流程演练,生产分批切换并准备好回退配置。

权限分层:三道闸门

认证解决"你是谁",授权决定"你能干什么"。Hadoop 的授权分三层,粒度从粗到细:

HDFS POSIX 权限(用户、组、其他 × 读写执行):目录级控制谁能读什么数仓路径,是数据隔离的第一道闸。配合 5.1 节外部表,按业务线划根目录属组。

扩展 ACL:POSIX 三元组不够用(要给"组 A 只读、用户 B 读写")时按目录追加 ACL,hdfs dfs -setfacl -m user:analyst:rw- /data/sales

YARN 队列 ACL(4.2 节):谁能向队列提交(acl_submit_applications)、谁能管理(acl_administer_queue)——控制的是算力资源的租户边界,与数据权限正交。

三道闸门组合才能拼出完整的策略:"分析师组能读销售目录(HDFS ACL)、能向 adhoc 队列提交(YARN ACL),但不能写生产目录、不能动 etl 队列"。只配一层的团队总会在另一层漏风。

审计与加密:合规的两块补丁

审计:hdfs-audit.log 记录每次文件系统操作的发起主体、路径、结果,开启聚合分析后回答"谁在什么时候动过这份风控报表"。等保与行业合规普遍要求保留半年以上。

传输加密(HDFS 数据传输协议走 TLS/加密管道)与落盘加密(透明数据加密 TDE:加密区内的文件落盘即密文,密钥由 KMS 管理,读取自动解密)。性能代价在 10% 量级,敏感字段(手机号、身份证)所在分区启用是常见折中——比全盘加密省,比"存在库里再说"安全。

本节要点回顾

  • 默认集群身份靠声明,两条信任线(用户到服务、服务到服务)都要 Kerberos 补;
  • 三次握手换限时门票,密码永不上网;主体三段式带主机名防重放,keytab 即账号要严管;
  • 开安全后:DataNode 无法伪造、Web 需协商认证、任务用委托凭证避免 KDC 风暴;
  • 授权三道闸:HDFS POSIX、扩展 ACL、YARN 队列 ACL,正交组合才无漏风;
  • 审计与加密按合规分级:审计必开,TDE 用于敏感分区,全盘加密按需。

安全就位,最后一节讲兜底:备份恢复与滚动升级。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U