Security 在sqoop中传递密码的安全方法
我担心sqoop批处理中数据库密码的安全性(无交互输入) 在过去,对于sqoop批处理,您唯一能做的就是使用Security 在sqoop中传递密码的安全方法,security,batch-file,sqoop,Security,Batch File,Sqoop,我担心sqoop批处理中数据库密码的安全性(无交互输入) 在过去,对于sqoop批处理,您唯一能做的就是使用--password在命令行上传递它,但是使用简单的ps命令就很容易读取密码 现在我们有了--password file选项,但它需要将未加密的密码存储在磁盘上,这并不是真正的“安全”做法,也不方便为单个参数设置单个文件 我正在考虑将加密密码存储在配置文件中,然后动态解密,存储在临时文件中,设置权限(使用chmod命令),调用sqoop,然后删除该文件。。。但我可能会错过一条不那么麻烦的路
--password
在命令行上传递它,但是使用简单的ps
命令就很容易读取密码
现在我们有了--password file
选项,但它需要将未加密的密码存储在磁盘上,这并不是真正的“安全”做法,也不方便为单个参数设置单个文件
我正在考虑将加密密码存储在配置文件中,然后动态解密,存储在临时文件中,设置权限(使用chmod命令),调用sqoop,然后删除该文件。。。但我可能会错过一条不那么麻烦的路?如何处理它?在
--password file
选项可用之前,我为sqoop做了一个补丁,在使用-p
命令时,以非交互方式从输入流中读取密码
这样,我就可以从配置文件中取消密码,并使用stdin管道使用该密码调用sqoop,而无需使用可以看到普通密码的文件或命令行
编辑文件src/java/org/apache/sqoop/SqoopOptions.java
将securePasswordEntry
功能代码替换为
private String securePasswordEntry() {
try {
return new String(System.console().readPassword("Enter password: "));
}
// PATCH Bouygues Telecom - read password from pipe if launched in non-interactive mode
catch (NullPointerException e) {
try {
final java.io.BufferedReader reader = new java.io.BufferedReader(
new java.io.InputStreamReader(System.in));
return reader.readLine();
}
catch (java.io.IOException excep) {
LOG.error("It seems that you have launched a Sqoop metastore job via");
LOG.error("Oozie with sqoop.metastore.client.record.password disabled.");
LOG.error("But this configuration is not supported because Sqoop can't");
LOG.error("prompt the user to enter the password while being executed");
LOG.error("as Oozie tasks. Please enable sqoop.metastore.client.record");
LOG.error(".password in sqoop-site.xml, or provide the password");
LOG.error("explicitly using --password in the command tag of the Oozie");
LOG.error("workflow file.");
}
return null;
}
}
麻烦的是必须重新修补Sqoop的每个新版本。。。我可能应该提交一份jira(对我的补丁是否会被考虑的信心很低),或者按照您想要的方式转到--password file选项。@abeaamase在2015年3月的stackoverflow 23916985回复中给出了最佳答案。本质上,我们应该升级到sqoop>1.4.5,并使用java密钥库(JKES)、org.apache.sqoop.util.password.CryptoFileLoader或在我们自己的类中定义的加载程序 提供的CryptoFileLoader的缺点是假定加密密码短语和salt将作为-D参数提供,以驱动系统属性(可通过ps进行窥探)或配置XML中的纯文本 我最初是在2015年3月的博客中发现这些参数的,之前我没有发现(它没有标题,但如果你看步骤3第2部分,你会发现它)
令人惊讶的是,这不是推荐的做法,也没有出现在sqoop 1.4.5文档中。谢谢-似乎比文件更好,您应该尝试发布jirate这里也有一个相关的帖子: