Security 在不受信任的主机提供商上使用jenkins保护密码
我在一个我不信任的主机提供商上安装了jenkins。如何针对主机提供商保护它 我一直在读关于凭证插件的文章,这里有一句话Security 在不受信任的主机提供商上使用jenkins保护密码,security,jenkins,hosting,Security,Jenkins,Hosting,我在一个我不信任的主机提供商上安装了jenkins。如何针对主机提供商保护它 我一直在读关于凭证插件的文章,这里有一句话 If a non-trusted user can gain access to the files in the JENKINS_HOME/secrets directory, then it is game over. 托管提供商可以访问JENKINS_HOME/secrets文件夹,因此我无法使用凭据插件保护密码。至少我是这样理解的 我的问题:在启动jenkins或登
If a non-trusted user can gain access to the files in the JENKINS_HOME/secrets directory, then it is game over.
托管提供商可以访问JENKINS_HOME/secrets文件夹,因此我无法使用凭据插件保护密码。至少我是这样理解的
我的问题:在启动jenkins或登录时,我应该如何在驱动器上加密存储凭据并提供密码?例如,将所有加密的内容存储在驱动器上,并将密码存储在内存中
“更换主机提供商,因为你不信任他们”不是一个对我有帮助的答案。我通常认为存储在主机提供商上的所有内容都应该加密,但这种讨论也将在下次讨论。以下是我目前对这个问题的看法。它有一定的限制,但至少密码不是秘密存储的,托管提供商也不可用。我非常欢迎大家提出改进意见。同样,我真正想要的是使密码可用于某些构建,但将此密码存储在有权访问文件系统和机器的人够不着的地方 jenkins的某些作业依赖于存储在ENV变量中的密码。Jenkins应该在没有这个密码的情况下继续工作,如果没有提供密码,只有特定的构建才会失败。例如,这些是数据库备份构建 密码可以存储在jenkins/secrets中,但这意味着托管提供商可以访问此密码。这是不可取的。当jenkins启动时,密码作为ENV变量提供 为此,必须将它们添加到/etc/default/jenkins中,并添加到/etc/init.d/jenkins中的deamon参数中 使用将密码添加到/etc/default/jenkins
SPECIAL_PASSWORD=123
密码由/etc/init.d/jenkins处理,并通过以下方式添加到守护进程参数中:
if [ -n "$SPECIAL_PASSWORD" ]; then
echo "Using SPECIAL_PASSWORD provided by /etc/default/jenkins"
DAEMON_ARGS="$DAEMON_ARGS --env=SPECIAL_PASSWORD=$SPECIAL_PASSWORD"
fi
这使得jenkins在启动时可以使用特殊的密码。密码在jenkins的SystemInfo选项卡中作为一个ENV变量可见,可由jenkins构建作业使用
不希望将密码存储在/etc/default/jenkins中。这使得托管提供商可以再次使用它
这就是为什么我实现了以下脚本
1.询问密码
2.将特殊密码添加到/etc/default/jenkins
3.詹金斯重新开始说
4.将/etc/default/jenkins还原为不带密码的原始版本
#!/bin/bash
# The script requies passwords for starting jenkins and places this password
# in the jenkins env. It then restarts jenkins after which the file is returned
# to the original
read -s -p "Enter SPECIAL_PASSWORD: " SPECIAL_PASSWORD
cp /etc/default/jenkins /etc/default/jenkins.bck
echo "SPECIAL_PASSWORD=$SPECIAL_PASSWORD" >> /etc/default/jenkins
echo "Contents of the jenkins env"
service jenkins restart
cp /etc/default/jenkins.bck /etc/default/jenkins
限制:
1.可在/etc/default/jenkins中获得短暂时间的密码。2.密码以纯文本形式作为整个jenkins的ENV变量提供