Github Jenkins负责安全问题

时间:2017-03-22 10:37:35

标签: github jenkins

我一直在使用Github Jenkins webhook一段时间没有问题。 我让我的Jenkins在Nginx代理后面运行,唯一安装的安全性是nginx htpasswd。 所以我的Github webhook看起来像这样:

https://user:pass@jenkins.blablabla.biz/job/script/buildWithParameters

成为用户并从htpasswd文件传递凭据。

现在我正在尝试将用户添加到我的Jenkins中,并通过注册和登录Jenkins选项激活了基于矩阵的安全性。 服务器最初工作完美,要求获得nginx凭证,jenkins登录第二。

我在Jenkins中创建了一个github用户,并为他生成了一个令牌。 现在我改变了我的Github webhook以使用新的Jenkins github用户凭证:

https://github:token@jenkins.blablabla.biz/job/script/buildWithParameters

只要我知道这应该有效。但事实并非如此。 我认为这里的问题是激活了两个安全系统(nginx htpasswd和jenkins登录)。但我想要两个。

我必须在我的webhook中使用这两个凭据吗?我怎么能这样做?

当我使用nginx凭证时,当触发webhook时,Github会从jenkins收到此响应:

  

需要身份验证您的身份验证为:匿名   您所在的群组:您需要拥有的权限(但没有):   hudson.model.Hudson.Read ...暗示:   hudson.security.Permission.GenericRead ...隐含的:   hudson.model.Hudson.Administer

当我使用jenkins凭证时,Github会在触发webhook时收到jenkins的回复:

  

401需要授权

401需要授权

  
nginx / 1.11.10

2 个答案:

答案 0 :(得分:1)

您可以在nginx.conf中为一个网址禁用基本身份验证:

location /github-webhook/ {
  auth_basic            "off";
  ...
}

location / {
  auth_basic            "Restricted";
  auth_basic_user_file  /etc/nginx/.htpasswd;
  ...
}

答案 1 :(得分:0)

最后,我决定关闭基于Nginx Http的安全性,并仅依赖于jenkins安全性。现在我的jenkins服务器可以从任何地方看到。 我更改了Github jenkins webhook的格式以使用Jenkins令牌根插件: https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin

我没有找到使用这两种身份验证方法的方法。 想法是要求额外的通行证(基于http)如果有人试图从办公室外访问。

这就是全部。