在Jenkins 1.x的默認(rèn)配置中,Jenkins不執(zhí)行任何安全檢查。這意味著Jenkins啟動(dòng)流程和訪問本地文件的能力可供任何可以訪問Jenkins Web UI和更多內(nèi)容的用戶使用。
Securing Jenkins 有兩個(gè)方面。
- 訪問控制,用于確保用戶在訪問Jenkins并對(duì)其活動(dòng)進(jìn)行授權(quán)時(shí)進(jìn)行身份驗(yàn)證。
- 保護(hù)Jenkins 免受外部威脅
訪問控制
您應(yīng)該鎖定對(duì)Jenkins UI的訪問權(quán)限,以便用戶進(jìn)行身份驗(yàn)證,并向他們提供適當(dāng)?shù)臋?quán)限。此設(shè)置主要由兩個(gè)軸控制:
- 安全領(lǐng)域,它決定了用戶及其密碼,以及用戶所屬的組。
- 授權(quán)策略,決定誰可以訪問什么。
這兩個(gè)軸是正交的,需要單獨(dú)配置。例如,您可以選擇使用外部LDAP或Active Directory作為安全領(lǐng)域,并且您可以選擇“每次登錄后的所有人都可以訪問”模式進(jìn)行授權(quán)策略?;蛘吣梢赃x擇讓Jenkins運(yùn)行自己的用戶數(shù)據(jù)庫(kù),并根據(jù)權(quán)限/用戶矩陣執(zhí)行訪問控制。
- 快速簡(jiǎn)單的安全性 - 如果你正在運(yùn)行Jenkins java -jar jenkins.war,只需要一個(gè)非常簡(jiǎn)單的設(shè)置
- 標(biāo)準(zhǔn)安全設(shè)置 ---討論了Jenkins運(yùn)行自己的用戶數(shù)據(jù)庫(kù)并進(jìn)行更細(xì)粒度的訪問控制的最常見的設(shè)置
- Apache前端的安全性 - 在Apache后面運(yùn)行Jenkins,并在Apache中執(zhí)行訪問控制,而不是Jenkins
- 驗(yàn)證腳本客戶端 ---如果您需要以編程方式訪問啟用安全性的Jenkins Web UI,請(qǐng)使用BASIC auth
- 基于矩陣的安全性|基于矩陣的安全性 - 授予和拒絕更細(xì)粒度的權(quán)限
保護(hù)Jenkins的用戶免受其他威脅
Jenkins還有其他安全子系統(tǒng)可以保護(hù)Jenkins和Jenkins的用戶免受間接攻擊。
以下主題討論默認(rèn)關(guān)閉的功能。我們建議您先閱讀并對(duì)它們采取行動(dòng)。
- CSRF保護(hù) ---防止對(duì)防火墻內(nèi)運(yùn)行的Jenkins進(jìn)行遠(yuǎn)程攻擊
- 建立管理的安全隱患 - 保護(hù)Jenkins管理免受惡意構(gòu)建
- 從屬于主訪問控制 ---保護(hù)Jenkins管理免受惡意構(gòu)建代理
以下主題討論默認(rèn)情況下已啟用的其他安全功能。當(dāng)他們?cè)斐蓡栴}時(shí),您只需要查看它們。
- 配置內(nèi)容安全策略 ---保護(hù)Jenkins的用戶免受惡意構(gòu)建
- 標(biāo)記格式 ---保護(hù)Jenkins的用戶免受Jenkins惡意用戶的傷害
Disabling Security
人們可能會(huì)意外地建立安全領(lǐng)域/授權(quán),使您無法再重新配置Jenkins。
當(dāng)這種情況發(fā)生時(shí),您可以通過以下步驟解決此問題:
- 停止Jenkins(最簡(jiǎn)單的方法是竊取servlet容器。)
- 轉(zhuǎn)到$JENKINS_HOME在文件系統(tǒng)中找到config.xml文件。
- 在編輯器中打開此文件。
- 查找<useSecurity>true</useSecurity>此文件中的元素。
- 替換true為false
- 刪除元素authorizationStrategy和securityRealm
- 開始Jenkins
- 當(dāng)Jenkins回來時(shí),它將處于不安全的模式,每個(gè)人都可以完全訪問系統(tǒng)。
如果這仍然不起作用,請(qǐng)嘗試重命名或刪除config.xml。
更多建議: