我在我不信任的主机提供商上安装了jenkins。我如何保护它不受主机提供商的攻击?
我一直在读有关凭证插件- https://github.com/jenkinsci/credentials-plugin/blob/master/docs/user.adoc的文章,有一句话
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文件夹,所以我不能使用credentials-plugin保护密码。至少我是这么理解的。
我的问题是:我应该怎么做才能将凭证存储在加密的驱动器上,并在启动jenkins或登录时提供密码?例如,将所有加密的内容存储在驱动器上,并将密码保存在内存中?
‘更换主机提供商,因为你不信任他们’不是一种对我有帮助的答案。我通常认为存储在主机提供商上的所有内容都应该保持加密,但这也是另一次讨论。
发布于 2018-08-31 16:03:14
这是我目前对这个问题的看法。它有一定的限制,但至少密码不会存储在秘密中,并且对托管提供商不可用。我真的很欢迎对改进的评论。同样,我真正想要的是使密码对某些构建可用,但将此密码存储在对文件系统和计算机具有访问权限的人无法访问的地方
jenkins的某些作业依赖于存储在ENV变量中的密码。Jenkins应该在没有这个密码的情况下继续工作,如果没有提供密码,只有特定的构建应该失败。例如,这些是db备份构建。
密码可以存储在jenkins/secrets中,但这意味着主机提供商将有权访问此密码。这不是我们想要的。当jenkins启动时,密码作为ENV变量提供。
为此,必须将它们添加到/etc/default/jenkins中,并添加到/etc/init.d/jenkins中的守护程序参数中
使用以下命令将密码添加到/etc/default/jenkins
SPECIAL_PASSWORD=123密码由/etc/init.d/jenkins处理,并通过以下方式添加到DAEMON_ARGS:
if [ -n "$SPECIAL_PASSWORD" ]; then
echo "Using SPECIAL_PASSWORD provided by /etc/default/jenkins"
DAEMON_ARGS="$DAEMON_ARGS --env=SPECIAL_PASSWORD=$SPECIAL_PASSWORD"
fi这使得SPECIAL_PASSWORD在启动时对jenkins可用。密码作为ENV变量出现在jenkins的SystemInfo选项卡中,可以由jenkins构建作业使用。
不希望将密码存储在/etc/default/jenkins中。这使得它再次可用于宿主提供程序。
这就是我实现以下脚本的原因: 1.要求输入密码2.将默认添加到/etc/ SPECIAL_PASSWORD / jenkins 3.重新启动jenkins 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中提供了短暂时间的密码。
https://stackoverflow.com/questions/52105156
复制相似问题