当前位置: 首页 > news >正文

【doris】doris集成ranger控制权限,ranger配置无法存储doris密码password信息

doris版本:3.0.0
ranger:2.6.0

ranger的日志配置在此文件中:ranger-2.6.0-admin/conf/logback.xml
添加插件的日志级别配置:

  <logger name="org.apache.ranger.services.doris" additivity="false" level="debug"><appender-ref ref="xa_log_appender"/></logger

doris-ranger集成官方文档
在此文章中找到


并下载通过,jd-gui反编译工具打开,在idea中新建目录结构,并添加依赖,文本是使用gradle构建build.gradle文件如下:

plugins {id 'org.jetbrains.kotlin.jvm' version '1.9.23'
}group = 'org.apache.ranger'
version = '3.0.0'repositories {mavenCentral()
}dependencies {api("org.apache.ranger:ranger-plugins-common:2.6.0")testImplementation 'org.jetbrains.kotlin:kotlin-test'
}test {useJUnitPlatform()
}
kotlin {jvmToolchain(8)
}

很遗憾,此包在github中么有找到源码,必须反编译了。
将几个文件源码分别复制idea中。修改:DorisClient类,在initConnection添加密码解码代码。

添加if代码块信息即可。本文用kotlin语言编译。可自行按逻辑编写java代码。

    private fun initConnection() {val prop = configHolder.rangerSectionval driverClassName = prop.getProperty("jdbc.driver_class")val url = prop.getProperty("jdbc.url")val properties = Properties()properties["user"] = prop.getProperty("username")if (prop.getProperty("password") != null) {val pwdTmp= prop.getProperty("password")val pwd=PasswordUtils.getDecryptPassword(pwdTmp)properties["password"]=pwd}

总结,doris源码中没有对ranger提供的密码解码导致,密码错误和无法被存储的假象。

附录:
PasswordUtils.getDecryptPassword的测试
其逻辑是能解码就解码,不能解就返回原密码。

package org.apache.ranger.plugin.util
import org.junit.jupiter.api.Test
class PasswordUtilsTest {@Testfun testPasswordDecrypt(){println("hello!")val encryptedPassword="PBEWithHmacSHA512AndAES_128,tzL1AKl5uc4NKYaoQ4P3WLGIBFPXWPWdu1fRm9004jtQiV,f77aLYLo,1000,Nwv5d4wax5rgJLyu4bnSNw==,0eEjW1/qisHcE++8Af1QPA=="val password1=PasswordUtils.getDecryptPassword(encryptedPassword)println("from encrypted: ${password1}")  // 能被正确解码:qaz123val unencryptedPassword="qaz123"val password2=PasswordUtils.getDecryptPassword(unencryptedPassword)println("from unencrypted: ${password2}")  // 就是原密码:qaz123}
}
编译项目,并替换`ranger-2.6.0-admin/ews/webapp/WEB-INF/classes/ranger-plugins/doris/ranger-doris-plugin-3.0.0.jar`,重启ranger即可。
观察`ranger-admin-ranger-root.log`日志即可debug了。当然也可以在源码中添加LOG.info信息。

源码如下:

    public static String getDecryptPassword(String password) {String decryptedPwd = null;try {decryptedPwd = decryptPassword(password);} catch (Exception var6) {LOG.warn("Password decryption failed, trying original password string.");decryptedPwd = null;} finally {if (decryptedPwd == null) {decryptedPwd = password;}}return decryptedPwd;}

文章转载自:

http://RrFCrpor.btqqh.cn
http://iEhVi05t.btqqh.cn
http://1tPwotDG.btqqh.cn
http://bu9Poxba.btqqh.cn
http://XZU4MH7z.btqqh.cn
http://Cx06njhE.btqqh.cn
http://yZwJu1lT.btqqh.cn
http://KX1PgEIy.btqqh.cn
http://YV5Q9CBL.btqqh.cn
http://EAIMSwxt.btqqh.cn
http://4XzwweAH.btqqh.cn
http://UBTGgDil.btqqh.cn
http://TBj7eJyj.btqqh.cn
http://fuJN4Gl0.btqqh.cn
http://uGq4EeCK.btqqh.cn
http://WWfAYsCN.btqqh.cn
http://nD2mH4iA.btqqh.cn
http://WeOIdWZC.btqqh.cn
http://pG2IDPmc.btqqh.cn
http://DQ4a95gQ.btqqh.cn
http://tCg2NgzH.btqqh.cn
http://PLSE1zAt.btqqh.cn
http://1XqoVVGh.btqqh.cn
http://fYXN4jD3.btqqh.cn
http://stGqTq04.btqqh.cn
http://Y0rQlzrR.btqqh.cn
http://Vpf1bgUy.btqqh.cn
http://oPML4LR2.btqqh.cn
http://OytmRRk2.btqqh.cn
http://LX4xST4J.btqqh.cn
http://www.dtcms.com/a/245327.html

相关文章:

  • 代码随想录训练营第三十天 | 452. 用最少数量的箭引爆气球 435. 无重叠区间 763.划分字母区间
  • 【Net】OPC UA(OPC Unified Architecture)协议
  • 图片压缩工具类
  • 深入剖析 C++ 默认函数:拷贝构造与赋值运算符重载
  • 你管这玩意叫网络?网络图解
  • CANoe入门(1)-- 创建新CANoe工程
  • 开源综合性网络安全检测和运维工具-TscanClient
  • 【Python打卡Day36】信贷项目的神经网络训练@浙大疏锦行
  • docker-compose容器单机编排
  • NLP基础与词嵌入:让AI理解文字(superior哥深度学习系列第13期)
  • Apache 反向代理Unity服务器
  • 使用VSCode开发FastAPI指南
  • pandas 字符串列迁移至 PyArrow 完整指南:从 object 到 string[pyarrow]
  • JFLASH 提示license 配置操作 Sorry,no valid license for I-Flash found.
  • ABP vNext + Redis Streams:构建实时事件驱动架构
  • 桥接模式深度解析:Java设计模式实战指南与抽象实现分离架构设计
  • 25年春招:字节跳动客户端开发二面总结
  • 探索 Excel-to-JSON:高效数据转换的利器
  • 像素跟踪 跟踪像素 算法总结
  • linux安装阿里DataX实现数据迁移
  • AVL树的平衡艺术:用C++写出会“站立”的二叉树(未完待续)
  • uni-app 小程序 Cannot read property ‘addEventListener‘ of undefined, mounted hook
  • 【慧游鲁博】【12】小程序端 · 智能导览对接后端文物图片识别功能
  • 暴雨服务器成功交付长沙市第四医院
  • 【消息队列】——Kafka如何保证配置下发的一致性
  • Golang实现分布式Masscan任务调度系统
  • 一种TFTransforme扩散模型时间序列预测模型, pytorch架构
  • ArcGIS数据管理与转换、地图制作、数据制备、矢量空间分析、栅格空间分析、空间插值、三维分析、高级建模
  • Modbus TCP转DeviceNet网关连接ABB变频器配置案例
  • Babylon.js场景加载器(Scene Loader)使用指南