Buy Me a Coffee

確保CI/CD環境的至高無上重要性

持續整合/持續部署(CI/CD)伺服器已成為駭客主要攻擊目標,因為它們是整個軟體開發流程的核心。CI/CD伺服器能存取源代碼 - 任何軟體公司最有價值的資產之一。伺服器會產生建置成品,甚至可能將程式碼部署至生產環境,若未妥善保護就會帶來嚴重風險。攻擊者僅需利用一個弱點,即可獲得供應鏈的存取權,進而取得機密資料、注入惡意程式碼並控制系統,這類攻擊事件也越來越頻繁發生。

根據「2023年軟體供應鏈安全狀態」特別報告,自2020年以來,企業遭受的供應鏈攻擊數量呈指數級成長。Forrester研究也顯示,有57%的組織曾發生與DevOps工具鏈相關的安全事件。

為避免造成資料外洩、業務中斷、龐大財務損失,妥善保護CI/CD伺服器當務之急。此外,Google「2022年加速發展DevOps報告」也指出,實施適當的安全控制不僅能提升軟體交付效能,更能降低開發人員的工作壓力。

資安事件的實際風險

  • 財務損失 - 視事件性質而定,組織可能需賠償受影響客戶、進行昂貴的事件調查和應變行動、支付違規罰款等。此外,還可能損失大量業務收益,股價也會大幅下跌。根據「2022年資料外洩成本報告」,一次資安事故的平均成本高達435萬美元。

  • 業務中斷 - 調查和修復過程可能需時甚久,期間組織通常必須關閉部分甚至全部營運。營運停擺時間越長,客戶離去的風險就越高,造成更多收入損失。

  • 聲譽受損 - 流失目前和潛在客戶給被視為更安全的競爭對手,風險極高。

  • 法律後果 - 涉及個人資訊並針對組織客戶的資安事件,往往會引發集體訴訟,主管機關甚至可能在法律調查期間限制公司的部分業務活動。

如何加強CI/CD伺服器安全性並避免資料外洩?

CI/CD伺服器是軟體開發流程的核心。它們會從版本控制系統取出、編譯、測試您的原始碼,並將其建置成可部署的成品,甚至進行部署,意味著可能存取敏感資訊和關鍵系統。

根據OWASP基金會最新發布的「十大CI/CD安全風險」報告,針對CI/CD生態系統漏洞的攻擊事件數量、頻率和嚴重性在業界都有增加。資安並非一蹴可及,而是一個持續改進的進程。因此,我們整理了九項實務建議,能協助您提升CI/CD管線的安全性,保護企業免受駭客攻擊,並符合該報告所概述的最新應用程式安全架構。

幾項對於內部部署和雲端CI/CD解決方案都通用的最佳做法,讓您能強化CI/CD安全性。然而,由於根據我們最新研究顯示,全球約有50%的公司使用內部部署的CI/CD伺服器,因此部分建議僅適用於內部部署的環境。

重要建議內部部署 CI/CD 適用性雲端 CI/CD 適用性
1. 保持CI/CD伺服器及時更新
2. 妥善保管憑證
3. 建立有效的身分與存取管理
4. 確保內部部署CI/CD伺服器的安全-
5. 監控版本控制設定
6. 監視建置代理程式設定
7. 確保所有整合的安全設定
8. 對製作成品儲存體應用嚴格的安全實務
9. 確保保留建置歷史紀錄和日誌

1. 保持CI/CD伺服器及時更新

首先也是最重要的,我們強烈建議定期將內部部署的CI/CD伺服器(和所有相關系統,如建置代理程式)更新至最新版本。您也應密切注意安全通知,確保系統和流程都使用具備最新安全改良措施的工具。最後,別忘了更新作業系統並定期安裝安全補丁程式。使用雲端CI/CD解決方案時,通常會為您自動執行更新,但您可能需要手動觸發主要更新。

2. 妥善保管憑證

使用遭竊或遭入侵的憑證仍然是資料外洩的最常見原因。引起資安事件的竊取或遭入侵憑證事件,平均成本高達450萬美元。此外,此類事件的生命週期通常也最長,平均需243天才能確定發生入侵,之後還需84天才能控制住。

  • 使用強大的憑證,並謹慎使用 為整個DevOps工具組(包括CI/CD伺服器)使用強大的憑證,並確保不會將其存放在不受信任的地方。存放庫,如GitHub、GitLab

  • 環境變數,因為它們通常會被記錄或與協力廠商監控系統分享。

  • 建置日誌,以確保不會隨意記錄敏感資訊。

  • 使用密碼參數類型儲存敏感資料 每當您想要在CI伺服器設定中儲存密碼或其他敏感資料時,請使用密碼參數類型。這將確保敏感值不會出現在Web UI中,並在建置記錄中以遮罩字元顯示。

  • 使用密碼管理工具
    此外,您也可以使用集中式密碼管理解決方案,讓CI/CD伺服器在執行建置時,從該系統取得所需的任何密碼。這不僅可以安全地將所有密碼集中儲存在一個地方,還能在特定時間週期後自動輪替密碼,手動執行此作業相當麻煩。

  • 使用外部驗證 如果您的公司使用集中式使用者管理系統,請盡可能整合該系統與CI/CD伺服器。這樣您就不需要在多個位置儲存敏感使用者資料,並且可以更輕鬆地統一管理身分和存取權。

  • 啟用雙重驗證 請考慮啟用雙重驗證,讓至少能變更建置管線設定的使用者(或最好是所有管理員),都需要使用兩種不同的身分驗證方法(如使用者名稱、密碼和智慧型手機應用程式)。

  • 使用加密的SSH金鑰 如果未經授權的使用者取得您的SSH金鑰,他們也可以存取相應的系統。因此,當您將SSH金鑰上傳至CI/CD伺服器時,請使用安全的密碼短語將它們加密,如此一來即使遭竊也無用武之地。

3. 建立有效的身分與存取管理

一旦惡意使用者獲得建置伺服器的存取權,就能對建置基礎架構和使用該建置的使用者或系統造成重大傷害。假設攻擊者入侵了CI/CD伺服器,由於CI/CD伺服器通常擁有許多權限,攻擊者很可能會逐步獲得更多權限。

  • 實施最少權限原則 為了加強存取安全性,您應該遵循最少權限原則,也就是只為員工授予執行其角色所絕對需要的工作、管線或專案權限,而非任何多餘的權限。例如,您的開發人員只能存取建置管線的編譯部分,而DevOps工程師則只能存取並執行部署部分。如果惡意行為者獲得某個使用者的存取權,這將有助於將攻擊面降到最低。

  • 使用群組和角色
    請避免直接為個別使用者授予許可權,這會為駭客帶來更多攻擊機會。相反地,請建立與組織架構相符的使用者群組,並為這些群組指派相關角色。之後您只需將使用者新增至相應的群組,讓他們獲得足以勝任工作的恰當權限。我們強烈建議為需要額外權限的人員建立新的具有專用許可權的角色,而非直接授予管理員角色。

4. 確保內部部署CI/CD伺服器的安全

對於內部部署的CI/CD伺服器,請確保將其放置在安全的內部網路中,並使用最新且經過充分測試的防火牆規則和網路安全設定。此外,請勿從公共網際網路直接存取CI/CD伺服器,而是透過VPN或其他安全管道。定期進行風險評估並修補已知的安全漏洞也很重要。

5. 監控版本控制設定

許多供應鏈攻擊發生在存取儲存庫(例如GitHub)的階段。請務必正確設定版本控制系統,包括嚴密的存取控制、分支保護規則、必要的Web掛鈎審核等,以降低風險。

6. 監視建置代理程式設定

建置代理程式是軟體建置過程中至關重要的元件。請確保只有必要的人員能夠存取和設定建置代理程式,並為它們設定適當的防火牆規則。定期監控並更新建置代理程式的設定和軟體,一旦偵測到任何異常,立即採取行動。

7. 確保所有整合的安全設定

CI/CD管線通常會整合許多協力廠商工具,例如程式碼掃描器、測試工具、部署工具等。請務必檢閱這些整合元件的安全設定,確保它們運作時不會洩漏敏感資料。如有任何疑慮,最好能與這些供應商的支援團隊討論安全最佳做法。

8. 對製作成品儲存體應用嚴格的安全實務

儲存成功建置的製作成品時,請將其儲存在安全且備份的位置。建議使用帳戶獨立權限來存取這些位置。如果您將製作成品儲存在雲端,請檢閱雲端服務提供商的相關安全建議。

9. 確保保留建置歷史紀錄和日誌

建置日誌和歷史記錄對於調查潛在的安全事件至關重要。請確保妥善保留這些資訊,並備份至安全的位置。定期檢閱日誌也有助於主動發現異常活動。

藉由實施這些安全措施,您就能大幅降低遭受供應鏈攻擊和資料外洩的風險。雖然實施可能需要一些額外的努力,但與潛在的財務和聲譽損失相比,這是一個相當值得的投資。請務必持續關注最新的威脅,並根據需要調整安全控制措施。