当前位置: 首页 > 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;}

相关文章:

  • 代码随想录训练营第三十天 | 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实现数据迁移
  • UE4做购物网站/企业软文怎么写
  • 免费家装设计效果图/南京seo外包
  • 网站建设山东聚搜网络一x/企业宣传册
  • 有没有a站可以打开/做企业网站建设公司哪家好
  • 外贸网站建设 东莞/怎么宣传网站
  • wordpress文章不能添加标签/济南网络优化厂家