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

在大数据场景中,文件系统和应用组件的权限管理至关重要。在最新发布的 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 的插件定期拉取策略,并在内存中进行权限校验。

JuiceFS 与 Ranger 的集成架构

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

  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 的集成能够为大数据平台提供强有力的安全保障。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6月8日day48打卡

随机函数与广播机制 知识点回顾: 随机张量的生成:torch.randn函数卷积和池化的计算公式(可以不掌握,会自动计算的)pytorch的广播机制:加法和乘法的广播机制 ps:numpy运算也有类似的广播机制&…

计算机常用快捷键分类汇总,涵盖 Windows、macOS 以及通用软件场景

一、系统通用快捷键 功能Windows 快捷键macOS 快捷键复制Ctrl CCommand C粘贴Ctrl VCommand V剪切Ctrl XCommand X撤销Ctrl ZCommand Z全选Ctrl ACommand A保存Ctrl SCommand S打印Ctrl PCommand P新建窗口/标签页Ctrl NCommand N关闭当前窗口/标签页Ctrl WC…

ES6中的Map与Set数据结构的简单应用

一、Map定义和基本用法 Map是一种键值对集合,其中键和值都可以是任何类型(对象、原始值等)。与普通对象不同,Map保持键值对的插入顺序,并且允许使用任何类型的键。 1、创建Map const map new Map()2、添加键值对。…

25.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--用户服务接口

用户管理是任何系统的基础功能之一,本篇介绍了如何实现一个完整的用户管理模块,包括用户信息的增删改查、用户状态管理、分页查询、数据验证和权限控制。核心代码实现部分涵盖了控制器(UserController)、服务接口(IUse…

基于深度学习的无人机轨迹预测

完整代码见文末 随着无人机技术的不断发展,无人机在农业、物流、监控等领域的应用日益广泛。精准的轨迹预测不仅能够提高无人机飞行的效率和安全性,还能在应对复杂环境下的突发状况时做出迅速反应。因此,基于深度学习的无人机轨迹预测已成为当前研究和应用的热门方向。 无…

AUTOSAR实战教程--DoIP_02_诊断链路建立流程

第一步:DoIP实体车辆声明/诊断仪车辆识别请求 打开激活线以后,DoIP实体发的三帧车辆声明报文。其中包含了DoIP实体的诊断逻辑地址(可以类比DoCAN的物理请求/响应地址),对应车辆的VIN码(若已配置&#xff0…

跟我学c++中级篇——多线程中的文件处理

一、文件处理 作为IO处理的一种重要场景,文件处理是几乎所有编程都无法绕过的一个情况。稍微复杂的一些的程序都可能需要文件处理,不管这种文件处理对开发者来说是显式的还是隐式的。相对于其它语言,C并未提供多么好的文件处理API接口&#…

Flutter知识点汇总

Flutter架构解析 1. Flutter 是什么?它与其他移动开发框架有什么不同? Flutter 是 Google 开发的开源移动应用开发框架,可用于快速构建高性能、高保真的移动应用(iOS 和 Android),也支持 Web、桌面和嵌入式设备。。它与其他移动开发框架(如 React Native、Xamarin、原…

【会员专享数据】1980—2022年中国逐日月年潜在蒸散发栅格数据

气象数据是我们在各项研究中都经常使用的数据,尤其是高精度的气象数据应用价值非常高。 之前我们分享过研究者张凌, 胡英屹等发布在国家冰川冻土沙漠科学数据中心平台上的nc格式的1980—2022年中国高分辨率逐日、逐月、逐年气象数据!很多小伙伴拿到数据…

前端打包工具简单介绍

前端打包工具简单介绍 一、Webpack 架构与插件机制 1. Webpack 架构核心组成 Entry(入口) 指定应用的起点文件,比如 src/index.js。 Module(模块) Webpack 把项目当作模块图,模块可以是 JS、CSS、图片等…

工业控制核心引擎高性能MCU——MM32F5370

RAMSUN提供的MM32F5370搭载180MHz Arm China Star-MC1处理器,集成DSP、FPU与三角函数加速单元(CORDIC),轻松应对复杂算法需求。其技术亮点包括: 超高精度PWM:8通道208ps级高精度PWM输出,满足储能…

AI架构师修炼之道

1 AI时代的架构革命 与传统软件开发和软件架构师相比,AI架构师面临着三重范式转换: 1.1 技术维度,需处理异构算力调度与模型生命周期管理的复杂性; 1.2 系统维度,需平衡实时性与资源约束的矛盾; 1.3 价…

数学建模期末速成 主成分分析的基本步骤

设有 n n n个研究对象, m m m个指标变量 x 1 , x 2 , ⋯ , x m x_1,x_2,\cdots,x_m x1​,x2​,⋯,xm​,第 i i i个对象关于第 j j j个指标取值为 a i j a_{ij} aij​,构造数据矩阵 A ( a i j ) n m A\left(\begin{array}{c}a_{ij}\end{array}\right)_{…

博图 SCL 编程技巧:灵活实现上升沿与下降沿检测案例分享(上)

博图 SCL 编程技巧:灵活实现上升沿与下降沿检测案例分享 在 PLC 编程中,检测信号从 0 变为 1 (上升沿) 或从 1 变为 0 (下降沿) 是最基础也是最关键的操作之一。它常用于启动单次动作、计数、状态切换等场景。在西门子 TIA Portal 环境中,虽…

深度学习入门Day3--鱼书学习(2)

这俩天刚忙完答辩的事情,终于有时间学习了 一、3层神经网络实现 1.本节中的符号使用说明。 w 12 ( 1 ) w_{12}^{(1)} w12(1)​表示前一层的第2个神经元 x 2 x_{2} x2​到后一层的第一个神经元 a 1 a_{1} a1​的权重。权重右下角按照“后一层的索引号、前一层的索引…

服务器 | Centos 9 系统中,如何部署SpringBoot后端项目?

系列文章目录 虚拟机 | Ubuntu 安装流程以及界面太小问题解决 虚拟机 | Ubuntu图形化系统: open-vm-tools安装失败以及实现文件拖放 虚拟机 | Ubuntu操作系统:su和sudo理解及如何处理忘记root密码 文章目录 系列文章目录前言一、环境介绍二、 使用syst…

CNN核心机制深度解析:卷积池化原理 PyTorch实现经典网络

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文系统讲解CNN核心原理、经典网络架构和图像分类实战,涵盖卷积层、池化层、LeNet/AlexNet/VGG/ResNet设计思想,并提供CIFAR-…

6个月Python学习计划 Day 17 - 继承、多态与魔术方法

第三周 Day 4 🎯 今日目标 理解类的继承和方法重写掌握多态思想及其实际应用了解并使用常见的魔术方法(如 str、len 等) 🧬 类的继承(Inheritance) Python 支持单继承与多继承,常用语法如下&…

抖音怎么下载视频

抖音作为一款短视频社交平台,凭借其独特的短视频形式和丰富的内容,吸引了大量用户。有些用户在欣赏完抖音视频后,想要将其保存下来,以便日后观看。如何在抖音下载视频呢?本文将为您详细介绍抖音视频下载的技巧和方法。…

使用MinIO搭建自己的分布式文件存储

目录 引言: 一.什么是 MinIO ? 二.MinIO 的安装与部署: 三.Spring Cloud 集成 MinIO: 1.前提准备: (1)安装依赖: (2)配置MinIO连接: &…