天天看點

安全加強----十、Jenkins服務安全加強一、Jenkins簡介二、Jenkins通路控制三、Jenkins加強方案

文章目錄

  • 一、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服務安全加強一、Jenkins簡介二、Jenkins通路控制三、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簡介二、Jenkins通路控制三、Jenkins加強方案

啟用該選項後,Jenkins将會在可能更改Jenkins環境中的資料的任何請求上檢查CSRF令牌或“crumb”。這包括任何表單送出和對遠端API的調用,包括使用“基本”身份驗證的表單。

但是,CSRF保護可能會對Jenkins更進階的使用帶來挑戰,例如:

1、某些Jenkins功能(如遠端API)在啟用此選項時變得更難使用。

2、通過配置不正确的反向代理通路Jenkins,可能使CSRF HTTP頭被從請求中删除,導緻受保護的操作失敗。

3、未經過CSRF保護測試的過時插件可能無法正常工作。

參考連結:

https://help.aliyun.com/knowledge_detail/66175.html

繼續閱讀