Kettle数据库明文密码加密
Kettle 数据库JNDI方式数据库密码不能加密,搞他!
1
新建数据库连接
1.1 普通局部变量
Step 1: 选择连接类型,这里选择Oracle
Step 2: 连接方式选择Native(JDBC)
Step 3: 右侧填写数据库连接信息
Step 4: 点击【测试】,保存即可
1.2 变量局部配置
Step 1: 在家目录下找到.kettle文件夹,适用linux和windows
Step 2: 编辑[.kettle/kettle.properties],加入
STAT_IP=host
STAT_PORT=port
STAT_DB=数据库
STAT_USER=用户
STAT_PWD=密码
Step 3: 重启Kettle,如图所示,使用 ${}引用变量 即可
Step 4: 点击【测试】,保存即可
1.3 全局配置
Step 1: 选择连接类型,这里选择Oracle
Step 2: 连接方式选择JNDI
Step 3: 右侧填写JNDI编写的名称(名称是jdbc.properties内‘/’前的名称,如下面的stat)
Step 4: 点击【测试】,保存即可
-
JNDI模板如下
#Oracle
stat/type=javax.sql.DataSource
stat/driver=oracle.jdbc.driver.OracleDriver
stat/url=jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = host)(PORT = port))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = serviceInstance)))
stat/user=
stat/password=
#MySql
mysql/type=javax.sql.DataSource
mysql/driver=com.mysql.jdbc.Driver
mysql/url=jdbc:mysql://host:port/db?useUnicode=true&characterEncoding=utf-8
mysql/user=
mysql/password=
2
数据库密码加密
企业安全规定都会要求明文密码加密,接下来操作会很重要。
2.1 普通局部配置
在数据库连接里面直接写密码,在保存的时候,kettle 会自动对密码进行加密处理。
2.2 变量局部配置
在kettle目录下会看到Encr.bat这样一个命令行工具,在当前目录打开cmdEncr.bat -kettle password,会生成出一串加密串。(linux 下是Encr.sh)
将Encrypted xxxxxxxxxxxxx在kettle.properties替换即可,STAT_PWD=Encrypted xxxxxxxxxxxxx
2.3 全局配置
测试发现,JNDI全局配置方式不支持明文加密。
》》》一言不合,直接撸源码
kettle 8.2 引用 simple-jndi-1.0.0.jar,在获取数据库连接前没有解密操作。
github上simple-jndi-1.0.3.jar 版本已经加上明文加密处理。看来已经有大佬解决了,一梭子就是干!!!
》》》》开搞
下载源码到本地,编译,打包。
注意:parent-pom 也需要编译 ,https://github.com/pentaho/maven-parent-poms
-
下面有编译好的jar 见云盘
链接: https://pan.baidu.com/s/17bmq4Oy1gKtk9c6fna-L2Q 提取码: ub7c
》》》》升级
simple-jndi-1.0.3.jar,pentaho-encryption-support-9.1.0.0-20200803.052023-95.jar
-
将上面两个jar放到$KETTLE_HOME/data-integration/lib下
-
两个jar的其他版本请备份,之后重启Kettle
》》》》测试
simple-jndi-1.0.3.jar,pentaho-encryption-support-9.1.0.0-20200803.052023-95.jar
-
将上面两个jar放到$KETTLE_HOME/data-integration/lib下
-
两个jar的其他版本请备份,之后重启Kettle
3
数据库连接方式推荐
-
数据库连接方式JNDI
-
JNDI名称使用变量局部配置
长按,扫码,关注
及时收看更多精彩内容