JuiceFS v1.3-Beta2:集成 Apache Ranger,实现更精细化的权限控制

2025-06-06
汤友棚

在大数据场景中,文件系统和应用组件的权限管理至关重要。在最新发布的 JuiceFS 社区版 v1.3-Beta 2 中,JuiceFS 引入了与 Apache Ranger 的集成,提供了更为灵活和细粒度的权限控制解决方案。

本文将介绍 JuiceFS 社区版如何与 Apache Ranger 进行集成,并探讨其权限管理的实现方式。该功能由多点 DMALL 数据平台团队李铭贡献,特此感谢她对社区的贡献。

01 JuiceFS 文件系统权限管理概述

JuiceFS 作为一个 POSIX 文件系统,其权限管理方式与本地文件系统类似。每个文件或目录都通过用户和用户组进行管理。具体来说:

  • 用户和用户组管理:每个文件或目录都有一个所属用户和用户组。这些用户和用户组的信息存储在 JuiceFS 的元数据中,通常以 UID(用户 ID)和 GID(组 ID)的形式存储,而不是直接存储用户名或组名。由于不同机器上相同的 UID 可能对应不同的用户名,因此在使用 JuiceFS 时,通常需要确保所有节点上的 UID/GID 与用户名的映射关系保持一致。

  • ACL(访问控制列表):除了基本的用户和用户组权限管理外,JuiceFS 还支持 ACL。ACL 允许用户为特定文件或目录设置更为细粒度的权限。例如,可以直接为某个用户赋予对某个文件的读写权限,而不需要将该用户添加到文件所属的用户组中。

02 JuiceFS 与 Apache Ranger 的集成

为了方便用户以细粒度的方式管理文件权限,并通过 web ui 集中管理。JuiceFS 选择支持 Hadoop 生态系统常用的 Apache Ranger。

Apache Ranger 简介

Apache Ranger 是一个用于 Hadoop 生态系统的集中式安全管理框架,提供了对 HDFS、Hive、HBase 等组件的细粒度权限控制。Ranger 通过 Web 界面进行策略管理,并将这些策略存储在数据库中。HDFS NameNode 等组件通过 Ranger 的插件定期拉取策略,并在内存中进行权限校验。

HDFS NameNode 组件
HDFS NameNode 组件

JuiceFS 与 Ranger 的集成架构

JuiceFS 社区版与 Apache Ranger 的集成主要依赖于 Ranger 的插件机制。由于 JuiceFS 社区版没有服务端,所有的权限校验逻辑都在客户端完成。具体架构如下:

JuiceFS 集成 Ranger 架构
JuiceFS 集成 Ranger 架构
  1. Ranger 插件:JuiceFS 客户端中集成了 Ranger 插件,该插件负责从 Ranger 服务端拉取权限策略,并在本地进行权限校验。

  2. 策略同步:为了避免多个 JuiceFS 客户端同时从 Ranger 服务端拉取策略导致 Ranger Admin 压力过大,JuiceFS 采用了一种优化策略:只有一个客户端会定期从 Ranger 服务端拉取策略,并将其写入 JuiceFS 的某个目录中。其他客户端则直接从 JuiceFS 文件系统中读取策略,从而减少对 Ranger 服务端的压力。

  3. 权限校验流程:当用户访问某个目录或文件时,JuiceFS 客户端首先会检查 Ranger 策略中是否对该目录或文件有明确的权限设置。如果有明确的允许或拒绝规则,则按照规则执行;如果没有明确规则,则回退到 POSIX 的权限管理机制(即基于 UID/GID 的权限校验)。

权限校验流程
权限校验流程

配置步骤

配置也比较简单,通过 JuiceFS 命令行增加如下配置

# format 的时候指定 ranger 配置
juicefs format META-URL NAME --ranger-rest-url http://localhost:6080 --ranger-service jfs

# 已有的文件系统增加 ranger 配置
juicefs config META-URL --ranger-rest-url http://localhost:6080 --ranger-service jfs
  1. Ranger 服务地址:指定 Ranger 服务端的地址,JuiceFS 客户端将通过该地址与Ranger服务端通信。

  2. Ranger 服务名称:指定 Ranger 中对应的服务名称,JuiceFS 客户端将根据该名称拉取相应的权限策略。

注意事项

  • 日志管理:JuiceFS 社区版的权限校验逻辑在客户端完成,且客户端数量可能非常多,目前不支持审计日志。

  • 安全性: 由于权限校验逻辑在客户端执行且代码开源,权限校验的强制性相对较弱。用户可以通过修改代码或其他手段绕过权限校验。因此,在实际使用中,需要通过管理措施来确保权限控制的有效性。

  • 仅 Java 客户端支持:目前,Ranger 的客户端代码是基于Java 的,因此 JuiceFS 与 Ranger 的集成主要适用于 Hadoop SDK 。

03 总结

JuiceFS 社区版与 Apache Ranger 的集成为大数据环境下的文件系统权限管理提供了一种灵活且细粒度的解决方案。通过 Ranger 的集中式策略管理,用户可以方便地为 JuiceFS 中的文件和目录设置访问控制规则。JuiceFS 与 Ranger 的集成能够为大数据平台提供强有力的安全保障。

Author

汤友棚
Juicedata 全栈工程师,负责 JuiceFS 对接 Hadoop平台相关工作

相关博客

JuiceFS v1.3-Beta1:一亿文件备份分钟级完成,性能优化全解析

2025-05-21
在最新发布的 JuiceFS v1.3 Beta1 版本中,我们引入了一种全新的二进制备份机制,相比现有的 JSON 备份方式,该机制在导入导出元数据时不仅大幅提升了处理速度,还显著降低了内存占用。

JuiceFS v1.3-beta1:新增 Python SDK,特定场景性能 3 倍于 FUSE

2025-05-09
本文将简要介绍 Python SDK 的功能特性,以及我们在性能方面的一些探索实践。欢迎社区用户尝试这一新功能,并反馈使用体验和建议。

JuiceFS v1.3-beta1:全面优化 SQL 数据库支持,十亿级元数据管理新选项

2025-04-23
JuiceFS v1.3-beta1 发布啦~在这个版本中,除了进行了大量使用体验优化和 bug 修复外,新增新增 Python SDK;Windows 客户端可用性大幅优化;新增二进制备份功能;全…

JuiceFS 社区版 v1.2 发布,新增企业级权限管理、平滑升级功能

2024-06-21
JuiceFS 社区版 v1.2 今天正式发布,这是自 2021 年开源以来的第三个大版本。v1.2 也是一个长期支持版本(LTS)。我们将持续维护 v1.2 以及 v1.1 这两个版本,v1.0 …