Ranger 鉴权

Apache Ranger 是一个用来在 Hadoop 平台上进行监控,启用服务,以及全方位数据安全访问管理的安全框架。 使用 ranger 后,会通过在 Ranger 侧配置权限代替在 Doris 中执行 Grant 语句授权。 Ranger 的安装和配置见下文:安装和配置 Doris Ranger 插件

Ranger 示例​

更改 Doris 配置​

  1. 在 fe/conf/fe.conf 文件中配置鉴权方式为 ranger access_controller_type=ranger-doris

  2. 在所有 FE 的 conf 目录创建 ranger-doris-security.xml 文件,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration><property><name>ranger.plugin.doris.policy.cache.dir</name><value>/path/to/ranger/cache/</value></property><property><name>ranger.plugin.doris.policy.pollIntervalMs</name><value>30000</value></property><property><name>ranger.plugin.doris.policy.rest.client.connection.timeoutMs</name><value>60000</value></property><property><name>ranger.plugin.doris.policy.rest.client.read.timeoutMs</name><value>60000</value></property><property><name>ranger.plugin.doris.policy.rest.url</name><value>http://172.21.0.32:6080</value></property><property><name>ranger.plugin.doris.policy.source.impl</name><value>org.apache.ranger.admin.client.RangerAdminRESTClient</value></property><property><name>ranger.plugin.doris.service.name</name><value>doris</value></property>
    </configuration>
    

    其中需要将 ranger.plugin.doris.policy.cache.dir 和 ranger.plugin.doris.policy.rest.url 改为实际值。

  3. 启动集群

权限示例​

  1. 在 Doris 中创建 user1
  2. 在 Doris 中,先使用 admin 用户创建一个 Catalog:hive
  3. 在 Ranger 中创建 user1
全局权限​

相当于 Doris 内部授权语句的 grant select_priv on *.*.* to user1;

  • catalog 同级下拉框可以找到 global 选项

  • 输入框里只能输入 *

    global

Catalog 权限​

相当于 Doris 内部授权语句的 grant select_priv on hive.*.* to user1;

catalog

Database 权限​

相当于 Doris 内部授权语句的 grant select_priv on hive.tpch.* to user1;

database

Table 权限​

这里的table泛指 表/视图/异步物化视图

相当于 Doris 内部授权语句的 grant select_priv on hive.tpch.user to user1;

table

列权限​

相当于 Doris 内部授权语句的 grant select_priv(name,age) on hive.tpch.user to user1;

column

Resource 权限​

相当于 Doris 内部授权语句的 grant usage_priv on resource 'resource1' to user1;

  • catalog 同级下拉框可以找到 resource 选项

resource

Workload Group 权限​

相当于 Doris 内部授权语句的 grant usage_priv on workload group 'group1' to user1;

  • catalog 同级下拉框可以找到 workload group 选项

group1

行权限示例​

2.1.3 版本支持

  1. 参考 权限示例 给 user1 分配 internal.db1.user 表的 select 权限。

  2. 在 Ranger 中添加一个 Row Level Filter policy

    Row Policy 示例

  3. 使用 user1 登录 Doris。执行 select * from internal.db1.user,只能看到满足 id > 3 且 age = 2 的数据。

数据脱敏示例​

2.1.3 版本支持

  1. 参考 权限示例 给 user1 分配 internal.db1.user 表的 select 权限。

  2. 在 Ranger 中添加一个 Masking policy

    Data Mask 示例

  3. 使用 user1 登录 Doris。执行 select * from internal.db1.user,看到的 phone 是按照指定规则脱敏后的数据。

常见问题​

  1. ranger 访问失败,怎么查看日志

    在所有 FE 的 conf 目录创建 log4j.properties 文件,内容如下:

    log4j.rootLogger = warn,stdout,Dlog4j.appender.stdout = org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target = System.out
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%nlog4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.D.File = /path/to/fe/log/ranger.log
    log4j.appender.D.Append = true
    log4j.appender.D.Threshold = INFO
    log4j.appender.D.layout = org.apache.log4j.PatternLayout
    log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
    

    其中 log4j.appender.D.File 改为实际值,用于存放 Ranger 插件的日志。

  2. 配置了 Row Level Filter policy ,但是用户查询时报没有权限

    Row Level Filter policy 仅用来限制用户访问表中数据的特定记录, 仍需通过 ACCESS POLICY 为用户授权

安装和配置 Doris Ranger 插件​

安装插件​

  1. 下载以下文件

    • ranger-doris-plugin-3.0.0-SNAPSHOT.jar
    • mysql-connector-java-8.0.25.jar
  2. 将下载好的文件放到 Ranger 服务的 ranger-plugins/doris 目录下,如:

    /usr/local/service/ranger/ews/webapp/WEB-INF/classes/ranger-plugins/doris/ranger-doris-plugin-3.0.0-SNAPSHOT.jar
    /usr/local/service/ranger/ews/webapp/WEB-INF/classes/ranger-plugins/doris/mysql-connector-java-8.0.25.jar
    

  3. 重启 Ranger 服务。

  4. 下载 ranger-servicedef-doris.json

  5. 执行以下命令上传定义文件到 Ranger 服务:

    curl -u user:password -X POST \-H "Accept: application/json" \-H "Content-Type: application/json" \http://172.21.0.32:6080/service/plugins/definitions \-d@ranger-servicedef-doris.json
    

    其中用户名密码是登录 Ranger WebUI 所使用的用户名密码。

    服务地址端口可以再 ranger-admin-site.xml 配置文件的 ranger.service.http.port 配置项查看。

    如执行成功,会返回 Json 格式的服务定义,如:

    {"id": 207,"guid": "d3ff9e41-f9dd-4217-bb5f-3fa9996454b6","isEnabled": true,"createdBy": "Admin","updatedBy": "Admin","createTime": 1705817398112,"updateTime": 1705817398112,"version": 1,"name": "doris","displayName": "Apache Doris","implClass": "org.apache.ranger.services.doris.RangerServiceDoris","label": "Doris","description": "Apache Doris","options": {"enableDenyAndExceptionsInPolicies": "true"},...
    }
    

    如想重新创建,则可以使用以下命令删除服务定义后,再重新上传:

    curl -v -u user:password -X DELETE \
    http://172.21.0.32:6080/service/plugins/definitions/207
    

    其中 207 是创建时返回的 id。删除前,需在 Ranger WebUI 界面删除已创建的 Doris 服务。

    也可以通过以下命令列举当前已添加的服务定义,以便获取 id:

    curl -v -u user:password -X GET \
    http://172.21.0.32:6080/service/plugins/definitions/
    

配置插件​

安装完毕后,打开 Ranger WebUI,可以再 Service Manger 界面中看到 Apache Doris 插件:

ranger

点击插件旁边的 + 号添加一个 Doris 服务:

ranger2

Config Properties 部分参数含义如下:

  • Username/Pasword:Doris 集群的用户名密码,这里建议使用 Admin 用户。
  • jdbc.driver_class:连接 Doris 使用的 JDBC 驱动。com.mysql.cj.jdbc.Driver
  • jdbc.url:Doris 集群的 JDBC url 连接串。jdbc:mysql://172.21.0.101:9030?useSSL=false
  • 额外参数:
    • resource.lookup.timeout.value.in.ms:获取元信息的超时时间,建议填写 10000,即 10 秒。

可以点击 Test Connection 检查是否可以联通。

之后点击 Add 添加服务。

之后,可以在 Service Manger 界面的 Apache Doris 插件中看到创建的服务,点击服务,即可开始配置 Ranger。

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

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

相关文章

Sqlserver安全篇之_启用和禁用Named Pipes的案列介绍

https://learn.microsoft.com/zh-cn/sql/tools/configuration-manager/named-pipes-properties?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/tools/configuration-manager/client-protocols-named-pipes-properties-protocol-tab?viewsql-server-ver16 默认…

深入解析过滤器模式(Filter Pattern):一种灵活高效的设计模式

过滤器模式&#xff08;Filter Pattern&#xff09;&#xff0c;也被称为标准模式&#xff0c;是一种常见的结构型设计模式。它通过将对象分为不同的标准或条件&#xff0c;使得对对象集合的操作变得更加灵活和高效。特别适用于处理复杂查询和条件过滤的场景。过滤器模式不仅能…

Spring Boot 整合 Elasticsearch 实践:从入门到上手

引言 Elasticsearch 是一个开源的分布式搜索引擎&#xff0c;广泛用于日志分析、搜索引擎、数据分析等场景。本文将带你通过一步步的教程&#xff0c;在 Spring Boot 项目中整合 Elasticsearch&#xff0c;轻松实现数据存储与查询。 1. 创建 Spring Boot 项目 首先&#xff…

2025年Postman的五大替代工具

虽然Postman是一个广泛使用的API测试工具&#xff0c;但许多用户在使用过程中会遇到各种限制和不便。因此&#xff0c;可能需要探索替代解决方案。本文介绍了10款强大的替代工具&#xff0c;它们能够有效替代Postman&#xff0c;成为你API测试工具箱的一部分。 什么是Postman&…

Redis之单线程与多线程

redis 单线程与多线程 Redis是单线程&#xff0c;主要是指Redis的网络IO和键值对读写是由一个线程来完成的&#xff0c;Redis在处理客户端的请求时包含获取(socket读)、解析、执行、内容返回&#xff08;socket写&#xff09;等都由一个顺序串行的主线程处理&#xff0c;这就是…

C#的简单工厂模式、工厂方法模式、抽象工厂模式

工厂模式是一种创建型设计模式&#xff0c;主要将对象的创建和使用分离&#xff0c;使得系统更加灵活和可维护。常见的工厂模式有简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;以下是 C# 实现的三个案例&#xff1a; 简单工厂模式 简单工厂模式通过一个工厂类来创建…

python基础8 单元测试

通过前面的7个章节&#xff0c;作者学习了python的各项基础知识&#xff0c;也学习了python的编译和执行。但在实际环境上&#xff0c;我们需要验证我们的代码功能符合我们的设计预期&#xff0c;所以需要结合python的单元测试类&#xff0c;编写单元测试代码。 Python有一个内…

算法刷题力扣

先把大写的字母变成小写的&#xff0c;用大写字母32即可变为小写字母。 写循环跳过字符。 然后判断是否相等即可。具体代码如下&#xff1a; class Solution { public: bool isPalindrome(string s) { int sizes.size(); int begin0; int ends.size()-1; for(int i0;i<s…

allure下载安装及配置

这里写目录标题 一、JDK下载安装及配置二、allure下载三、allure安装四、allure环境变量配置五、allure验证是否安装成功 一、JDK下载安装及配置 allure 是一个java测试报告框架。所以要基于JDK环境。 JDK下载与安装及配置&#xff1a;https://blog.csdn.net/qq_24741027/arti…

linux之 内存管理(1)-armv8 内核启动页表建立过程

一、内核启动时&#xff0c;页表映射有哪些&#xff1f; Linux初始化过程&#xff0c;会依次建立如下页表映射&#xff1a; 1.恒等映射&#xff1a;页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射&#xff1a;页表基地址init_pg_dir; 3.fixmap映射&#xff1a;页表基地址为…

【面试问题】Java 接口与抽象类的区别

引言 在 Java 面向对象编程中&#xff0c;接口&#xff08;Interface&#xff09;和抽象类&#xff08;Abstract Class&#xff09;是两个重要的抽象工具。它们都能定义未实现的方法&#xff0c;但设计目标和使用场景截然不同。本文将通过语法、特性和实际案例&#xff0c;深入…

【资料分享】全志科技T113-i全国产(1.2GHz双核A7 RISC-V)工业核心板规格书

核心板简介 创龙科技SOM-TLT113 是一款基于全志科技T113-i 双核ARM Cortex-A7 玄铁C906 RISC-V HiFi4 DSP 异构多核处理器设计的全国产工业核心板&#xff0c;ARM Cortex-A7 处理单元主频高达1.2GHz。核心板 CPU、ROM、RAM、电源、晶振等所有元器件均采用国产工业级方案&…

R语言高效数据处理-自定义格式EXCEL数据输出

注&#xff1a;以下代码均为实际数据处理中的笔记摘录&#xff0c;所以很零散&#xff0c; 将就看吧&#xff0c;这一篇只是代表着我还在&#xff0c;所以可能用处不大&#xff0c;这一段时间都很煎熬&#xff01; 在实际数据处理中为了提升效率&#xff0c;将Excel报表交付给…

LeetCode 30 —— 30.串联所有单词的子串

题目&#xff1a; 给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 注意子串要与 words 中的单词完全匹配&#xff0c;中间不能有其他字符&#xff0c;但不需要考虑 words 中单词串联的顺序。 示例 1&#xff…

《算法笔记》9.2小节——数据结构专题(2)->二叉树的遍历 问题 A: 复原二叉树(同问题 C: 二叉树遍历)

题目描述 小明在做数据结构的作业&#xff0c;其中一题是给你一棵二叉树的前序遍历和中序遍历结果&#xff0c;要求你写出这棵二叉树的后序遍历结果。 输入 输入包含多组测试数据。每组输入包含两个字符串&#xff0c;分别表示二叉树的前序遍历和中序遍历结果。每个字符串由…

SpringBoot-2整合MyBatis以及基本的使用方法

目录 1.引入依赖 2.数据库表的创建 3.数据源的配置 4.编写pojo类 5.编写controller类 6.编写接口 7.编写接口的实现类 8.编写mapper 1.引入依赖 在pom.xml引入依赖 <!-- mysql--><dependency><groupId>com.mysql</groupId><artifac…

Unity Shader Graph高级节点逻辑设计:程序化噪声生成技术详解

一、程序化噪声的核心价值 程序化噪声生成是Shader开发中的关键核心技术&#xff0c;通过数学算法直接生成纹理信息&#xff0c;相较于传统位图纹理具有以下优势&#xff1a; 无限分辨率&#xff1a;可动态适应任意显示精度 参数化控制&#xff1a;实时调整噪声频率、振幅等属…

[蓝桥杯 2023 省 B] 飞机降落(不会dfs的看过来)

[蓝桥杯 2023 省 B] 飞机降落 题目描述 N N N 架飞机准备降落到某个只有一条跑道的机场。其中第 i i i 架飞机在 T i T_{i} Ti​ 时刻到达机场上空&#xff0c;到达时它的剩余油料还可以继续盘旋 D i D_{i} Di​ 个单位时间&#xff0c;即它最早可以于 T i T_{i} Ti​ 时刻…

英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析

【完整版】3月19日&#xff0c;黄仁勋Nvidia GTC 2025 主题演讲&#xff5c;英伟达 英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析 一、引言 1.1 分析内容 本研究主要采用了文献研究法、数据分析以及专家观点引用相结合的方法。在文献研究方面&#xff0c;广泛收集了…

强化学习 - PPO控制无人机

PPO&#xff08;Proximal Policy Optimization&#xff0c;近端策略优化&#xff09;是一种强化学习算法&#xff0c;用于训练智能体&#xff08;无人机&#xff09;如何在环境中做出决策。它本质上是 策略梯度&#xff08;Policy Gradient&#xff09;方法 的一种改进&#xf…