加密/解密群集上提交的Java作业的服务帐户密码
我必须使用Thread cluster提交一个Java应用程序,该应用程序在本作业中使用apache beam和beam sql作为业务规则。目前,我正在使用OpenSSL命令在执行Java jar的Linux机器上创建一个加密文件加密/解密群集上提交的Java作业的服务帐户密码,java,apache-spark,encryption,yarn,Java,Apache Spark,Encryption,Yarn,我必须使用Thread cluster提交一个Java应用程序,该应用程序在本作业中使用apache beam和beam sql作为业务规则。目前,我正在使用OpenSSL命令在执行Java jar的Linux机器上创建一个加密文件 openssl enc -aes-256-cbc -salt -in s3_nonprod.txt -out s3_nonprod.txt.enc 下面是我在属性文件中使用的解密命令的一些代码片段,以及我解密已加密密码文件时使用的方法 **command used
openssl enc -aes-256-cbc -salt -in s3_nonprod.txt -out s3_nonprod.txt.enc
下面是我在属性文件中使用的解密命令的一些代码片段,以及我解密已加密密码文件时使用的方法
**command used in properties file --**
S3_ENCRYPTION_PASSWORD=echo -n \"password\" | openssl enc -aes-256-cbc -d -in /home/encryption/s3_nonprod.txt.enc -pass stdin 2>/dev/null
**Method to decrypt password from the encrypted password file --**
public String decrypteOpenSSLPassword(String decryptedCommand) throws IOException, InterruptedException {
ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", decryptedCommand);
String password="";
Process process = processBuilder.start();
process.waitFor();
if (process.exitValue() == 0) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
password = bufferedReader.readLine();
} else {
throw new StarBeamException("Error during decoding password! please verify the command");
}
return password;
}
如果我不必使用纱线集群来提交JAR,那么上述方法就像宝石一样工作,但是根据组织中的新规范,我需要使用SPARK纱线集群(,它部署在我们没有访问权限的中央Linux机器上)来提交我的代码
所以问题是,由于我无法访问部署了Thread的服务器,我没有地方放置加密文件,根据我当前的实现,我需要一种方式,这样我就不必管理该加密文件
我需要你们的帮助来解决这个问题,我怎样才能在JAR中加密和解密密码,或者用任何其他方法
请询问上述内容是否解释得不清楚或是否需要更多信息