首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不受信任的主机提供商上使用jenkins保护密码

在不受信任的主机提供商上使用jenkins保护密码
EN

Stack Overflow用户
提问于 2018-08-31 04:49:39
回答 1查看 42关注 0票数 0

我在我不信任的主机提供商上安装了jenkins。我如何保护它不受主机提供商的攻击?

我一直在读有关凭证插件- https://github.com/jenkinsci/credentials-plugin/blob/master/docs/user.adoc的文章,有一句话

代码语言:javascript
复制
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或登录时提供密码?例如,将所有加密的内容存储在驱动器上,并将密码保存在内存中?

‘更换主机提供商,因为你不信任他们’不是一种对我有帮助的答案。我通常认为存储在主机提供商上的所有内容都应该保持加密,但这也是另一次讨论。

EN

回答 1

Stack Overflow用户

发布于 2018-08-31 16:03:14

这是我目前对这个问题的看法。它有一定的限制,但至少密码不会存储在秘密中,并且对托管提供商不可用。我真的很欢迎对改进的评论。同样,我真正想要的是使密码对某些构建可用,但将此密码存储在对文件系统和计算机具有访问权限的人无法访问的地方

jenkins的某些作业依赖于存储在ENV变量中的密码。Jenkins应该在没有这个密码的情况下继续工作,如果没有提供密码,只有特定的构建应该失败。例如,这些是db备份构建。

密码可以存储在jenkins/secrets中,但这意味着主机提供商将有权访问此密码。这不是我们想要的。当jenkins启动时,密码作为ENV变量提供。

为此,必须将它们添加到/etc/default/jenkins中,并添加到/etc/init.d/jenkins中的守护程序参数中

使用以下命令将密码添加到/etc/default/jenkins

代码语言:javascript
复制
SPECIAL_PASSWORD=123

密码由/etc/init.d/jenkins处理,并通过以下方式添加到DAEMON_ARGS:

代码语言:javascript
复制
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恢复为不带密码的原始版本

代码语言:javascript
复制
#!/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中提供了短暂时间的密码。

  1. 密码以纯文本形式提供,作为整个jenkins的ENV变量。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52105156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档