成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何安全加固您的CI/CD管道

譯文 精選
安全 應用安全
本文從CI/CD安全現(xiàn)狀出發(fā),向您介紹了CI/CD管道的常見安全威脅,通過選擇CI/CD安全工具等左移安全實踐,最終構建出CI/CD的安全層。

近年來,各大軟件公司都開始依賴DevOps方法,來增強軟件交付的敏捷性和協(xié)作能力。CI/CD管道使得軟件開發(fā)生命周期(SDLC)中的各個流程更加自動化,進而實現(xiàn)了新功能的無縫集成和交付。

雖然CI/CD管道能夠通過自動化和敏捷性,來增強軟件的開發(fā),但是它們往往需要集成大量的工具和服務,而這極有可能會引入新的安全漏洞。可見,識別和修復這些安全漏洞是確保CI/CD安全實踐的關鍵。本文將和您討論如何安全加固CI/CD管道。

CI/CD安全性簡介

雖然CI/CD管道是通過自動化來提高軟件開發(fā)和交付的效率,但是管道的核心階段在默認情況下并不包含安全性。實際上,CI/CD的安全性是一組旨在識別和修復漏洞的實踐,而不會顯著地減慢管道中的各項流程。CI/CD的安全實踐主要涉及到:注入滲透測試和主動安全審計,并據(jù)此減少因延遲交付,給安全和QA團隊造成的瓶頸。因此,安全的CI/CD管道會讓軟件團隊能夠自動化多個部署環(huán)境,提高SDLC(軟件開發(fā)生命周期)的安全性,從而增強敏捷性。

CI/CD管道的常見安全威脅

一個組織的CI/CD管道往往具有基于所使用的業(yè)務案例、工作負載、以及技術棧的獨立特征。因此,CI/CD的安全性在實現(xiàn)上也會因用例的不同而有所差異。對此,我們應當首先認識那些幾乎在所有管道中都存在的安全風險類型:

未經(jīng)授權訪問的代碼存儲庫

CI/CD的各種操作主要依賴共享存儲庫,來實現(xiàn)協(xié)作、配置管理、更新和版本控制。所有源代碼和配置文件都被保存在Git存儲庫中,并作為單一的來源。公共存儲庫在CI/CD管道中備受歡迎的原因是,它們降低了開發(fā)的成本和時間。

但是,由于開發(fā)人員將源代碼從其私有主機發(fā)布到公共的共享文件夾中,因此給存儲庫帶來了安全威脅。攻擊者可以搜索開源注冊表作為一種偵察技術,并利用獲得的數(shù)據(jù),進行有針對性的網(wǎng)絡釣魚、逆向工程、以及遠程代碼執(zhí)行攻擊。

不安全的代碼

CI/CD管道中快速開發(fā)和交付的要求,導致了越來越多的開源使用、以及與第三方的集成。一些團隊可能會在沒有核查源代碼的安全漏洞的情況下,將第三方代碼集成并導入部署環(huán)境。顯然,這是由于開發(fā)人員未能遵循代碼安全的最佳實踐,而增加了CI/CD管道的攻擊面。常見的代碼漏洞包括格式字符串漏洞、緩沖區(qū)溢出、錯誤處理不當、以及規(guī)范化問題等。

密鑰管理不當

密鑰管理有助于合理化對CI/CD管道中數(shù)據(jù)和資源的訪問。其中包括:密碼、令牌、API密鑰、以及其他身份驗證憑據(jù),它們可以在管道中被用于驗證訪問敏感系統(tǒng)的用戶。因此,密鑰的曝露會讓攻擊者獲取CI/CD進程的部分、甚至全部控制權。常見的密鑰管理環(huán)節(jié)中的錯誤配置包括:對密鑰進行硬編碼、在公共云環(huán)境中存儲密鑰、以及手動進行密鑰管理等。

左移安全

在較舊的管道中,由于安全性往往是最后一步,因此導致了部署過程中的瓶頸。如今的最佳實踐理論是:在SDLC的早期集成安全控制,也被稱為“轉移安全”。此類左移會涉及在CI/CD管道的每個層面上實施安全檢查,從而在每個步驟中,實現(xiàn)更加準確的威脅檢測。顯然,其目標就是為了消除DevOps和安全團隊之間的摩擦,提高軟件開發(fā)的效率,并確保穩(wěn)健的安全實踐。

采用CI/CD安全工具的關鍵注意事項

在選擇保護CI/CD管道的工具時,我們應當考慮如下因素:

  • 掃描覆蓋率
  • 擁有成本和許可條款
  • 需要維護和配置的工作量
  • 可擴展性
  • 與現(xiàn)有開發(fā)和安全棧的集成

在CI/CD管道上管理安全性

隨著威脅態(tài)勢的不斷變化,管理安全性已經(jīng)成為了CI/CD管道的最重要環(huán)節(jié)之一。保護DevOps工作流的第一步便是評估如何將DevSecOps的原則應用于CI/CD管道。在評估的過程中,我們需要確定管理安全性的工具和策略。

保護CI/CD管道的最佳實踐

為了充分體現(xiàn)將安全性直接集成到軟件生命周期中的好處,開發(fā)團隊應該:

避免在配置文件和CI/CD構建工具中使用硬編碼的密鑰

SDLC的各個階段都會用到密鑰。而提供這些密鑰的一種簡單方法是,將它們作為環(huán)境變量引用到配置文件和清單中。任何可以訪問這些模板和文件的人員,都將能夠從此類文件中提取憑證信息,這便可能導致數(shù)據(jù)的泄露。因此,軟件團隊應當使用加密存儲或啟用密鑰集中管理的工具,以使得密鑰數(shù)據(jù)能夠遠離惡意用戶。為了安全地管理和分發(fā)密鑰,管理員應該在將密鑰存儲在ETCD服務器之前,就執(zhí)行靜態(tài)加密。

首先,如下代碼段所示,將密鑰編碼為Base64格式:

$ username=$(echo -n "admin" | base64)
$ password=$(echo -n "a62fjbd37942dcs" | base64)

在YAML文件中定義密鑰:

echo "apiVersion: v1
> kind: Secret
> metadata:
> name: test-secret
> type: Opaque
> data:
> username: $username
> password: $password" >> secret.yaml

接著,一旦創(chuàng)建了密鑰,您就可以將它們應用到Kubernetes的pod中。這可以通過創(chuàng)建一個.yaml文件來完成。文件secret-env.yaml的環(huán)境變量中存放了源自密鑰的數(shù)據(jù)。該文件的規(guī)范,如下代碼段所示:

apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: mycontainer
image: alpine:latest
command: ["sleep", "9999"]
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: test-secret
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: test-secret
key: password
restartPolicy: Never

如上述代碼段所示,在填充環(huán)境變量時,Kubernetes會解碼Base64值。這些環(huán)境變量可被用于所有的Kubernetes API對象,且無需對密鑰數(shù)據(jù)進行硬編碼。

對CI/CD的構建工具實施訪問控制

DevOps團隊應實施身份驗證和授權機制,以管控那些可以訪問CI/CD管道中特定流程和工具的實體。團隊應貫徹最小權限原則,以確保僅將資源的訪問權限,授予絕對需要的角色。同時,CI/CD管道中的數(shù)據(jù)還應該使用令牌、訪問密鑰和密碼等方式予以保護,以防止惡意負載被添加到管道中。

為源代碼管理建立身份驗證機制

帶版本控制的存儲庫(通常在Git中)是CI/CD管道的必備工具。它們能夠促進協(xié)作并實現(xiàn)新功能的持續(xù)部署。不過,由于Git存儲庫包含著應用程序的源代碼、基礎設施即代碼(Infrastructure-as-Code)清單、以及知識產(chǎn)權,因此源代碼控制中的漏洞將會允許攻擊者訪問到應用程序的設計和實現(xiàn)邏輯。

鑒于它們往往是黑客逐利的目標,因此我們應該使用多因素身份驗證,來對Git存儲庫的訪問予以安全加固。同時,開發(fā)團隊還可以通過Git的最佳實踐,來防止意外的分支、以及提交.gitignore文件。

確保管道中所有環(huán)境配置的一致性

DevOps團隊應確保開發(fā)、測試、生產(chǎn)等所有環(huán)境的配置具有一致性。通過配置奇偶校驗,QA團隊可以在測試期間準確地檢測出安全問題,特別是那些普遍存在于所有環(huán)境配置中的問題。同時,團隊也可以使用容器和基礎設施即代碼的聲明等虛擬化和抽象技術,來實現(xiàn)一致性的檢測。

配置回滾功能

安全和QA團隊通常會在應用程序更新或部署后發(fā)現(xiàn)安全問題。這往往需要管理員將相應的部署回滾(或稱恢復)到早期的版本。此類部署配置的回滾應當十分謹慎,以消除安全問題,直至開發(fā)團隊對其進行妥善的處理。在實踐中,我們最好通過保留舊版本的工件,直至新的部署被批準用于生產(chǎn)環(huán)境的回滾。

實施持續(xù)的漏洞掃描和監(jiān)控

監(jiān)控和測試CI/CD管道中的每個資源也是非常必要的。我們可以使用漏洞掃描工具利用已知漏洞的數(shù)據(jù)庫,去測試應用代碼、環(huán)境配置、以及部署腳本,進而消除潛在的受攻擊媒介。此類掃描和監(jiān)控工具應當被部署在整個SDLC中,以便在漏洞發(fā)生時,及時發(fā)現(xiàn)漏洞,進而避免漏洞被利用。

持續(xù)清理冗余資源

CI/CD管道通常使用不可變的基礎架構來構建,這些基礎架構在運行了特定的進程之后就會終止。由于攻擊者可以使用臨時資源的開放端口,來作為跳板進入已部署的環(huán)境,因此我們有必要合理地管理這些資源,以減少安全漏洞。在實踐中,DevOps團隊應確保在資源被終止后,及時清理包括容器、服務和虛擬機在內(nèi)的所有臨時資源。

CI/CD的安全層

管理CI/CD安全通常需要一種全面的、多層次的方法,以加強管道上每個節(jié)點的防御能力。下圖展示了該安全層的邏輯結構:

安全CI/CD管道中的安全層

漏洞掃描

如前所述,漏洞掃描涉及到使用已知的威脅數(shù)據(jù)庫,來識別和修復整個CI/CD管道中的安全漏洞。自動化的測試可以掃描指定的應用程序和部署環(huán)境,以識別和分類代碼、基礎設施、以及第三方服務中的弱點。

靜態(tài)安全測試

此類軟件組合分析技術,旨在識別內(nèi)部開發(fā)團隊編寫出的代碼中的潛在漏洞。安全團隊可以經(jīng)常使用這些工具,來開發(fā)測試用例,進而在部署新的應用程序構建之前,查明不安全的代碼漏洞。

運行時安全

該層面主要依賴運行時應用自我保護(runtime application self-protection,RASP)工具,來實時檢測生產(chǎn)環(huán)境中應用所面臨的安全威脅。此類工具會掃描配置模板,并持續(xù)測試已部署的環(huán)境狀態(tài),進而通過比較,來識別和響應任何運行時威脅。

審計和監(jiān)控

應用和基礎設施的日志,會持續(xù)跟蹤和存儲應用與部署的相關數(shù)據(jù)。審計主要涉及到通過分析日志,以推斷出可用于改善應用安全態(tài)勢的模式。我們可以通過部署診斷工具,來監(jiān)控和分析指標,以獲悉與目標系統(tǒng)相關的問題。

持續(xù)的審計和監(jiān)控可幫助開發(fā)團隊,構建出對應的應用場景,并預測基線用戶的行為。安全團隊可以通過分析那些偏離已有基線的用戶行為,來識別安全威脅。

結論

眾所周知,任何有權訪問源代碼存儲庫或容器注冊表的人,都可以在CI/CD管道中運行代碼,因此DevOps工作流帶有固有的安全隱患。根據(jù)最近的一項調(diào)查預計,大約55%的組織出于安全考慮,推遲了??其應用程序的推出??。雖然DevOps框架可以增強協(xié)作和自動化,但組織必須采用帶有高級策略和工具的持續(xù)安全模型,來確保CI/CD管道在所有層面上都有統(tǒng)一的安全態(tài)勢。

譯者介紹

陳峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項目實施經(jīng)驗,善于對內(nèi)外部資源與風險實施管控,專注傳播網(wǎng)絡與信息安全知識與經(jīng)驗;持續(xù)以博文、專題和譯文等形式,分享前沿技術與新知;經(jīng)常以線上、線下等方式,開展信息安全類培訓與授課。

原文標題:??Securing Your CI/CD Pipeline??,作者:Sudip Sengupta


責任編輯:華軒 來源: 51CTO
相關推薦

2023-01-30 15:55:08

2022-02-22 09:00:00

軟件開發(fā)CI/CD 管道工具

2019-07-25 10:31:55

AWSDevOps架構

2023-02-19 15:28:39

CI/CD 管道集成開發(fā)

2023-07-17 13:44:23

2021-07-02 16:30:01

CICDDevOps

2023-05-04 16:03:50

KubernetesCI/CD集成

2020-12-15 16:13:21

DevSecOpsCICD

2021-09-26 09:26:46

開發(fā)安全CICD管道

2021-07-28 13:23:32

CICD管道安全漏洞

2023-05-24 16:20:39

DevOpsCI/CD 管道軟件開發(fā)

2018-08-24 09:00:00

DevOps持續(xù)集成連續(xù)部署

2023-04-18 08:17:11

GitLab持續(xù)集成

2021-08-31 09:00:00

開發(fā)Azure DevOp集成

2024-11-06 14:40:18

2020-11-17 11:18:31

Docker

2023-05-09 16:20:54

藍綠部署CI/CD 管道自動化部署

2021-03-31 09:00:00

管道集成工具

2021-01-21 06:06:30

Jenkins分支管道CI

2020-10-21 14:10:28

工具測試開發(fā)
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91一区二区 | 欧美成人a| 欧美精品一区在线发布 | 国产一区二区 | 久久精品国产一区二区电影 | 日韩中文字幕免费在线观看 | 亚洲日韩欧美一区二区在线 | 精品不卡| 噜久寡妇噜噜久久寡妇 | 国产精品免费在线 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 欧美综合国产精品久久丁香 | 一区中文字幕 | 中文成人在线 | 亚洲视频在线一区 | 久www| 日本三级线观看 视频 | 天天爱爱网 | 99小视频 | 国产成人精品免费视频大全最热 | 无码一区二区三区视频 | 欧美电影免费观看高清 | 91九色在线观看 | 国产视频中文字幕 | 亚洲精品免费在线 | 亚洲国产成人精品女人久久久 | 久久在线看 | 狠狠躁夜夜躁人人爽天天高潮 | 午夜电影福利 | 欧美久久精品 | 欧美一区二区三区久久精品 | 草草草网站 | 日韩成人免费视频 | 精品视频在线观看 | 国产色视频网站 | 久久亚洲一区二区三区四区 | 欧美美女二区 | 拍戏被cao翻了h承欢 | 色爱综合网 | 日本在线视频中文字幕 | 精品国产31久久久久久 |