Github Jenkins webhook 安全问题



我已经使用 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 login)。但我两者都想要。

我是否必须在我的网络钩子中使用这两个凭据?我该怎么做?

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

需要身份验证 您的身份验证身份为:匿名 您所在的组:您需要拥有的权限(但未拥有): 哈德逊.模型.哈德逊.阅读...这暗示如下: hudson.security.Permission.GenericRead ...这暗示如下: hudson.model.hudson.administration

当我使用 jenkins 凭据时,Github 会在触发 webhook 时收到来自 jenkins 的响应:

401 需要授权

401 需要授权


nginx/1.11.10

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

location /github-webhook/ {
auth_basic            "off";
...
}
location / {
auth_basic            "Restricted";
auth_basic_user_file  /etc/nginx/.htpasswd;
...
}

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

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

就这样。

最新更新