如何从凭证库下载jenkins机密文件?
我只能上传现有的詹金斯秘密文件,不能下载现有的如何从凭证库下载jenkins机密文件?,jenkins,jenkins-plugins,Jenkins,Jenkins Plugins,我只能上传现有的詹金斯秘密文件,不能下载现有的 如何下载已上载的现有机密文件以确认其内容?如果您在运行Jenkins的计算机上具有shell访问权限和sudo/root/Jenkins Unix用户权限,则可以通过执行以下操作检索机密文件: 在具有访问机密文件权限的某些Jenkins作业中,选择“配置” 在配置界面上的“生成环境”下,选择“使用密文”或“文件” 单击添加->机密文件。这将创建一个新的机密文件绑定 选择特定凭据,然后从其下方的下拉菜单中选择要检索的机密文件。假设您的机密文件存储在
如何下载已上载的现有机密文件以确认其内容?如果您在运行Jenkins的计算机上具有shell访问权限和sudo/
root
/Jenkins Unix用户权限,则可以通过执行以下操作检索机密文件:
- 在具有访问机密文件权限的某些Jenkins作业中,选择“配置”
- 在配置界面上的“生成环境”下,选择“使用密文”或“文件”
- 单击添加->机密文件。这将创建一个新的机密文件绑定李>
- 选择特定凭据,然后从其下方的下拉菜单中选择要检索的机密文件。假设您的机密文件存储在文件名my-secret-file.txt下
- 为此机密文件分配一个变量,例如
MY\u secret\u file\u TXT
- 现在,在预构建步骤下,单击添加预构建步骤->执行shell
- 在命令文本区域中,添加以下shell脚本:
echo "executing user is $(whoami)" # remove my-secret-file.txt before possibly getting an overwriting error rm -f $WORKSPACE/my-secret-file.txt echo "Jenkins project workspace: $WORKSPACE" cp $MY_SECRET_FILE_TXT $WORKSPACE
- 单击“保存”保存此配置
下次触发此项目的生成时,机密文件应显示在此项目的工作区中,即位于位置
$workspace/my secret file.txt
。例如,在我的Ubuntu 14.04.5 LTS安装中,安装了安装包和守护进程jenkins
,该位置是/var/lib/jenkins/workspace/$jenkins\u PROJECT\u NAME/my secret file.txt
,如果您可以访问jenkins实例的脚本控制台(例如,通过在浏览器中访问),您可以运行以下脚本:
import com.cloudbees.plugins.credentials.*;
import com.cloudbees.plugins.credentials.domains.Domain;
import org.jenkinsci.plugins.plaincredentials.impl.FileCredentialsImpl;
println "Jenkins credentials config file location=" + SystemCredentialsProvider.getConfigFile();
println ""
def fileName = "my-secret-file.txt"
SystemCredentialsProvider.getInstance().getCredentials().stream().
filter { cred -> cred instanceof FileCredentialsImpl }.
map { fileCred -> (FileCredentialsImpl) fileCred }.
filter { fileCred -> fileName.equals( fileCred.getFileName() ) }.
forEach { fileCred ->
String s = new String( fileCred.getSecretBytes().getPlainData() )
println "XXXXXX BEGIN a secret file with fileName=" + fileName + " XXXXXXXXXXXX"
println s
println "XXXXXX END a secret file with fileName=" + fileName + " XXXXXXXXXXXX"
println ""
}
将fileName
更改为要打印的文件名。
此脚本将打印Jenkins credentials store全局域中文件名为fileName
的文件的内容
此脚本的可修复警告:
- 要求Jenkins在Java8JVM中运行。 这个脚本
- 仅在全局凭据域中查找(请参阅)
- 带有脚本控制台的标记答案非常棒
还有一个脚本将列出可以从控制台运行的所有机密:
我通常通过创建这样的工作从詹金斯那里获取秘密: Jenkins屏蔽了输出中的所有键,所以打印时只需替换一个字符。如果您的键中有另一个
0
,它将显示为******
,您可以尝试替换另一个字符,或者将其拆分为两个,并在不同的行上打印两个半字符,或者其他类似的技巧
你也可以像这样把它直接粘贴到一个文件中
echo $HELLO > slack-key.txt
我认为这不是一个有效的论点。这是缺少的管理功能。应该由管理员来确保对Jenkins的管理员访问,Jenkins应该允许管理员查看机密。Vault和其他现代机密管理人员有这样的能力。下载/复制机密文件以便在工作区中使用也是一个类似的问题:因此我可以像这样对其进行黑客攻击,但我正在寻找一种更方便的方法。我甚至更喜欢从命令行手动解密机密-可能吗?太好了。但问题是,这是将文件写入临时位置,还是我可以确保它在读取后不会留在任何位置。另外,我如何获取其他机密,如安全字符串和用户名/密码?我试着只使用
StringCredentialsImpl
,但它不管用,非常管用。。。