前言
根據官網描述,Jenkins版本自2.204.6以來的重大變更有:刪除禁用 CSRF 保護的功能。 從較舊版本的 Jenkins 升級的實例將啟用 CSRF 保護和設置默認的發行者,如果之前被禁用。
雖然刪除了禁用csrf保護功能,增加了安全性,但是在一些結合Gitlab、Spinnaker等等工具進行持續集成過程中就增加了一些認證環節,若沒有進行相關配置,得到的一定是403的報錯。因為集成服務都是在內網操作,為刪繁就簡,筆者便考慮關閉 CSRF 保護功能,於是乎,對此展開了摸索……
方案
老版本Jenkins的CSRF保護功能只需要在 系統管理 > 全局安全配置 中便可進行打開或者關閉。讓人頭疼的是較高版本的Jenkins竟然在管理頁面關閉不了CSRF,網上搜索到的資料有寫通過 groovy代碼 實現取消保護,但是筆者操作未成功,最后,Get到了一種成功的解決姿勢。
在Jenkins啟動前加入相關取消保護的參數配置后啟動Jenkins,即可關閉CSRF,配置內容如下:
-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
Jenkins若是跑在Tomcat下,只需在tomcat啟動腳本中加入配置即可;若是以jar包形式部署的,只需在啟動時加上配置參數即可。
筆者Jenkins是部署在k8s環境中,故啟動參數配置在yaml文件中,如下:
]# cat dp.yaml |grep csrf -C5
### 配置后重啟Jenkins,在全局安全配置中可看到CSRF保護功能已關閉
參考
參考鏈接: https://issues.jenkins-ci.org/browse/JENKINS-61375