You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark 3.3.1本地部署环境下安全认证传递与最佳实践咨询

分布式Spark 3.3.1环境安全最佳实践及端到端认证传递方案

一、针对你的架构的认证传递实现流程

你的场景需要从Spark客户端到集群再到HDFS的身份链传递,核心依赖Kerberos认证+Spark委托令牌机制,具体步骤如下:

1. 基础Kerberos环境配置

  • 集群所有节点(Client、Master、Workers、Hive、HDFS)加入同一Kerberos域,为每个服务创建主体:
    • HDFS服务主体:hdfs@YOUR.REALM
    • Spark服务主体:spark@YOUR.REALM
    • 业务用户主体:如joe@YOUR.REALM
  • 所有节点配置统一的krb5.conf指向KDC,强制开启NTP时间同步(Kerberos对时间差敏感)

2. Spark客户端认证配置

  • 用户提交作业前获取Kerberos票据:kinit joe@YOUR.REALM
  • 在spark-defaults.conf中添加核心配置:
    spark.security.credentials.hadoop.enabled true
    spark.hadoop.hadoop.security.authentication kerberos
    spark.hadoop.hdfs.security.authentication kerberos
    spark.yarn.principal spark@YOUR.REALM
    spark.yarn.keytab /opt/spark/conf/spark.keytab
    
  • 提交作业时显式指定用户身份:
    spark-submit --principal joe@YOUR.REALM --keytab /home/joe/joe.keytab \
      --class com.your.app.YourJob \
      --master spark://spark-master:7077 \
      your-job.jar
    

3. Spark集群到HDFS的委托令牌传递

  • 确保Spark自动获取HDFS委托令牌:spark.security.credentials.hadoop.enabled=true会让Driver在作业启动时从HDFS获取委托令牌,分发给所有Executor
  • HDFS侧开启委托令牌支持,修改hdfs-site.xml:
    <property>
      <name>hadoop.security.token.service.use_ip</name>
      <value>false</value>
    </property>
    <property>
      <name>dfs.permissions.enabled</name>
      <value>true</value>
    </property>
    <property>
      <name>dfs.block.access.token.enable</name>
      <value>true</value>
    </property>
    
  • 此配置下,Executor无需单独执行kinit,即可用委托令牌以提交用户的身份访问HDFS

4. Delta Lake权限适配

  • 底层存储权限:直接通过HDFS ACLs控制用户对Delta表存储目录的读写权限,例如:
    hdfs dfs -setfacl -m user:joe:rw- /path/to/delta-table
    
  • 表级元数据权限:结合Hive Metastore的Kerberos认证,通过Hive的GRANT/REVOKE命令控制用户对Delta表的访问(需确保Delta表注册到Hive Metastore)

二、安全最佳实践核心要点

1. Spark层安全

  • 强制开启Kerberos认证,禁用简单认证模式
  • 启用全链路加密:
    • 节点间通信加密:spark.network.crypto.enabled=true
    • Shuffle数据加密:spark.shuffle.encrypt=true
    • 本地临时磁盘加密:配置spark.local.dir到加密磁盘
  • 限制集群端口访问:用防火墙隔离Spark Master/Worker的内部端口,仅允许客户端和集群节点访问
  • 开启审计日志:spark.history.server.eventLog.enabled=true,记录作业提交、执行、资源访问行为

2. Hadoop生态层安全

  • HDFS严格权限控制:禁用dfs.permissions.enabled=false,使用ACLs替代粗放的权限位设置
  • Hive Metastore安全:启用Kerberos认证,禁止匿名访问,定期清理无效用户权限
  • 密钥轮换:定期轮换服务keytab和用户票据,避免长期密钥泄露风险
  • 数据静态加密:启用HDFS透明数据加密(TDE),对敏感数据的存储目录加密

三、常见问题排查

  • 委托令牌失效:检查Executor日志中的DelegationToken关键字,确认令牌是否成功获取;调整spark.hadoop.kerberos.ticket.renewal.timeout延长有效期
  • 权限拒绝:用hdfs dfs -getfacl /path/to/delta-table查看目录ACL,确认提交用户有对应权限
  • Kerberos认证失败:检查krb5.conf配置、时间同步状态,以及keytab文件的权限(需确保只有所有者可读)

内容的提问来源于stack exchange,提问作者Joe Ingle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:25:21