文章目錄
- 一、Jenkins簡介
- 二、Jenkins通路控制
- 三、Jenkins加強方案
-
- 1、關注安全漏洞
- 2、啟用安全性設定
- 3、配置NLP TCP端口
- 4、啟用通路控制
- 5、選擇合理的授權方式
- 6、選用與認證和使用者管理相關的插件
- 7、啟用CSRF保護
一、Jenkins簡介
Jenkins早期版本的預設配置下沒有安全檢查。任何人都可以以匿名使用者身份進入Jenkins,執行build操作。然而,對大多數Jenkins應用,尤其是暴露在網際網路的應用,安全控制是非常重要的。從Jenkins 2.0開始,其預設配置中啟用了許多安全選項,以確定Jenkins環境安全,除非管理者明确禁用某些保護。
二、Jenkins通路控制
通路控制是保護Jenkins環境免受未經授權的使用的主要機制。在Jenkins中配置通路控制需要兩個方面的配置:
1、安全域,其通知Jenkins環境如何以及在哪裡擷取使用者(或辨別)的資訊。也被稱為“認證”。
2、授權配置,通知Jenkins環境,哪些使用者和/或組在多大程度上可以通路Jenkins的哪些方面。
使用安全領域和授權配置,可以在Jenkins中配置非常輕松或非常剛性的身份驗證和授權方案。此外,一些插件(如 基于角色的授權政策) 插件可以擴充Jenkins的通路控制功能,以支援更細微的身份驗證和授權方案。
三、Jenkins加強方案
1、關注安全漏洞
定期關注Jenkins官方安全公告,使用或更新到官方最新版本的Jenkins,防止部署存在安全漏洞的版本。
2、啟用安全性設定
自2.0版本起,Jenkins預設勾選Enable security複選框。Jenkins管理者可以在Web UI的啟用安全性部分啟用,配置或禁用适用于整個Jenkins環境的關鍵安全功能。
預設情況下,匿名使用者沒有權限,而登入的使用者具有完全的控制權。使用者可以使用使用者名和密碼登入,以執行匿名使用者不可用的操作。哪些操作要求使用者登入取決于所選擇的授權政策及其配置。對于任何非本地(測試)Jenkins環境,應始終啟用此複選框。
3、配置NLP TCP端口
Jenkins使用TCP端口與通過JNLP協定啟動的代理(如基于Windows的代理)進行通信。截止Jenkins 2.0,預設情況下此端口被禁用。
對于希望使用基于JNLP代理的管理者,以下兩種類型的端口可供選用:
1、随機:随機選擇JNLP端口,避免Jenkins主機發生沖突 。該方式的缺點是在Jenkins主引導期間,難以管理允許JNLP流量的防火牆規則。
2、固定:由Jenkins管理者選擇JNLP端口,端口在Jenkins主要器的重新啟動之間是一緻的。這使得管理防火牆規則更容易,允許基于JNLP的代理連接配接到主伺服器。
4、啟用通路控制
通路控制是保護Jenkins環境免受未經授權使用的主要機制。在Jenkins中配置通路控制包括以下三個方面:
1、管理控制台。根據一般的管理方式,管理人員不需要直接在網際網路上進行管理,僅需要根據業務資深需求,對管理控制台通路源IP、端口進行限制,防止被惡意人員通路背景。
2、安全域。通知Jenkins環境如何以及在哪裡擷取使用者(或辨別)的資訊,也被稱為“認證”。
3、授權配置。通知Jenkins環境,哪些使用者和/或組在多大程度上可以通路Jenkins的哪些方面。
使用安全域和授權配置,可以在Jenkins中輕松地配置非常剛性的身份驗證和授權方案。此外,一些插件(如基于角色的授權政策)可以擴充Jenkins的通路控制功能,以支援更細微的身份驗證和授權方案。
5、選擇合理的授權方式
安全領域或認證表明誰可以通路Jenkins環境,而授權解決的是他們可以在Jenkins環境中通路什麼。
預設情況下,Jenkins支援以下的授權選項:
1、所有人都可以控制Jenkins。每個人都可以完全控制Jenkins,包括尚未登入的匿名使用者。請勿将本設定用于本地測試Jenkins管理以外的任何其他設定。
2、傳統模式。如果使用者具有“admin”角色,他們将被授予對系統的完全控制權,否則該使用者(包括匿名使用者)将僅具有讀通路權限。不要将本設定用于本地測試Jenkins管理以外的任何設定。
3、登入使用者可以做任何事情。在這種模式下,每個登入的使用者都可以完全控制Jenkins。根據進階選項,還可以允許或拒絕匿名使用者讀取Jenkins的通路權限。此模式有助于強制使用者在執行操作之前登入,以便有使用者操作的審計跟蹤。
4、基于矩陣的安全性。該授權方案可以精确控制哪些使用者群組能夠在Jenkins環境中執行哪些操作。
5、基于項目的矩陣授權政策。此授權方案是基于Matrix的安全性的擴充,允許在項目配置螢幕中單獨為每個項目定義附加的通路控制清單(ACL)。這允許授予特定使用者或組通路指定的項目,而不是Jenkins環境中的所有項目。使用基于項目的矩陣授權定義的ACL是加法的,使得在“配置全局安全性”螢幕中定義的通路權限将與項目特定的ACL組合。
6、選用與認證和使用者管理相關的插件
Jenkins提供一系列與認證和使用者管理相關的插件,使用者可以根據業務需求安裝使用(https://plugins.jenkins.io/) 。例如:
Active Directory Plugin:允許使用Microsoft Active Directory(即Windows域賬号)進行認證。
Crowd Plugin:允許使用Atlassian Crowd進行認證。
Script Security Realm Plugin:允許使用自定義的腳本進行認證。
Role Strategy Plugin:提供了基于角色的授權政策,允許定義全局的和項目集的角色,并為使用者配置設定相應角色。
7、啟用CSRF保護
跨站點請求僞造(或CSRF/XSRF)是一種漏洞,它允許未經授權的第三方通過模仿另一個經過身份驗證的使用者對Web應用程式執行請求。在Jenkins環境的上下文中,CSRF攻擊可能允許惡意actor删除項目,更改建構或修改Jenkins的系統配置。
為了防範此類漏洞,自2.0以來所有Jenkins版本,在預設情況下都已啟用CSRF保護。
啟用該選項後,Jenkins将會在可能更改Jenkins環境中的資料的任何請求上檢查CSRF令牌或“crumb”。這包括任何表單送出和對遠端API的調用,包括使用“基本”身份驗證的表單。
但是,CSRF保護可能會對Jenkins更進階的使用帶來挑戰,例如:
1、某些Jenkins功能(如遠端API)在啟用此選項時變得更難使用。
2、通過配置不正确的反向代理通路Jenkins,可能使CSRF HTTP頭被從請求中删除,導緻受保護的操作失敗。
3、未經過CSRF保護測試的過時插件可能無法正常工作。
參考連結:
https://help.aliyun.com/knowledge_detail/66175.html