天天看點

周紀海:從 DevOps 到 DevSecOps 的落地實踐

2020 年 9 月 25、26 日,GOPS 全球運維大會(深圳站)舉辦圓滿成功。在本屆大會上,來自騰訊、阿裡、京東、平安的行業内頂尖專家面向網際網路及傳統行業、廣大運維技術人員,傳播先進技術思想和理念,分享業内最佳實踐。作為騰訊雲旗下 DevOps 一站式研發管理平台提供商,CODING 受邀參與了本屆大會。在兩天時間裡,CODING 與 1000 多位現場來賓進行了深入交流;CODING CEO 張海龍接受了媒體專訪,簡要介紹 CODING 産品和分享 CODING 的願景;CODING 資深技術專家周紀海也在騰訊專場中分享了 DevSecOps 工具與實踐議題。

周紀海:從 DevOps 到 DevSecOps 的落地實踐
以下為周紀海在騰訊專場分享的演講内容——

CODING:從 DevOps 到 DevSecOps 的落地實踐

DevOps 簡介,工具和平台

一般談起 DevOps 自動化,都是先從工具來實作。工具橫跨了開發周期,項目管理、CI/CD 等環節。在每一個環節裡面都有比較經典的工具,很多工具大家也都用過。

周紀海:從 DevOps 到 DevSecOps 的落地實踐

而近幾年,業界興起了一站式平台,從端到端打造一整套工具,囊括項目管理、代碼托管、自動化部署、自動化測試等,在其中某一環節可以加入品質卡點和品質門禁去保證品質。無論是華為、騰訊還是阿裡近年來都陸續出現了一些産品,騰訊雲旗下的 一站式 DevOps 平台,更集中在開發側,涵蓋了從項目管理一直到最後代碼傳遞上線等環節。騰訊的這套自動化工具平台,通過對外輸出幫助客戶解決痛點,可以在整個環節,例如建構、規範制定等環節解決客戶的問題。騰訊有相關的公有雲和私有雲方面的産品,幫助客戶在整個研發流程上進行實作。

DevSecOps 簡介,挑戰和工具

DevSecOps 的概念很早之前就有,以前被稱為 DevOpsSec,16 年有一本書名叫“DataOPsSec”,為什麼會從 DataOPsSec 變成 DevSecOps 呢?有兩種說法,一種說法是 DataOPsSec 的縮寫是 DOS,這就有了重名,為了避免單詞的重複就改了名字;另外一種說法是 DataOPsSec 還是傳統模式的順序,開發、測試、運維,最後在上線之前做資訊安全。然而資訊安全應該橫跨整個流程,嵌入到每一個環節當中,是以變成了 DevSecOps。

那麼為什麼需要 DevSecOps?DevOps 已經做好了,速度很快,品質很好,資訊安全的作用是什麼?下圖就說明了為什麼需要 DevSecOps。傳統模式下,從需求開始到整個開發測試需要 3 周的時間,上線之前,資訊安全部門介入進行安全評估,這可能需要 1 周時間。而通過 DevOps,我們把前面進行壓縮,比如說通過自動化、微服務、靈活等手段把協作做得更好,效率提高,變成了 1 周。但是因為傳統的 DevOps 沒有考慮資訊安全,在上線之前還是要進行安全的評估掃描,這個時間并沒有縮短。DevSecOps 通過在 DevOps 流程的每個階段或檢查點建構安全性來消除 DevOps 和資訊安全之間的障礙,進而更快、更安全地生成高品質的代碼。

DevSecOps 的好處有很多,以下概括 3 點:

  • 更快釋出。通過壓縮時間達到更快釋出的目的。
  • 控制風險。在過去開發團隊或者測試團隊依賴于資訊安全團隊來進行評分掃描,保證沒有安全漏洞,通過 DevSecOps 把安全進行左移,可以讓程式員自己來控制安全問題。
  • 節省成本。如果在上線之前進行安全掃描,尤其是發現高危漏洞,肯定是打回去讓程式員修漏洞,修好以後再走整個流程,如果出現問題還要再傳回和再修,這是非常浪費時間和浪費人力成本的一個過程。如果在開發和測試階段就把安全問題進行發現和解決,成本就會大幅度減少。

目前有一個 DevSecOps 社群每年都會釋出 DevSecOps 報告,報告顯示很多人都覺得資訊安全很重要,但是連續三年仍然有接近一半的開發者承認他們沒有時間去處理安全問題。再次驗證了多數人對于安全層面仍然是知識口頭層面的重視。同時,社群也給了參考,100 個開發人員對應了 10 個運維人員,對應 1 個資訊安全的人員,資訊安全方面的人才依舊很稀缺。

實作 DevSecOps 的挑戰,我們在推進的過程中發現有多方面的阻力。

  • 技術上的阻力。DevSecOps 是一個新的概念,在市面上能選擇的工具不是特别多。騰訊内部很多是自研産品,我們覺得在市面上已有的工具多少都有問題,不是特别的成熟。
  • 人和文化。大家覺得資訊安全不重要,包括我們當時推行的時候,很多程式員隻在乎寫代碼,不願意考慮資訊安全。就算有意識的同學覺得要做資訊安全,當掃描出漏洞的時候,也發現沒有能力解決這個問題。
  • 流程。并不是所有的高層都支援 DevSecOps,在推 DevOps 的過程中這個問題時常出現。在 2012 年剛剛開始推行 DevOps 的時候,知道 DevOps 的人不是特别多,從下而上推動 DevOps 是很痛苦的。更有效的是讓老闆從上而下推動,執行效率會更高一些。

在推動層面,一般會先推工具,因為工具會很快看到效果。安全工具大體分為以下 4 類:

周紀海:從 DevOps 到 DevSecOps 的落地實踐
  • 靜态應用安全工具(SAST)

    SAST 是從代碼層面進行掃描安全漏洞。它的好處是可以精準定位,發現具體某一行代碼有漏洞,同時容易被程式員所接受。但是這種工具的缺點是誤報率非常高。騰訊 PCG 曾經引入過市面上比較主流的靜态掃描工具 Checkmarx,最高誤報率達到了 70%。在這種情況下,勢必會消耗大量的人力去驗證。

  • 動态應用安全工具(DAST)

    DAST 更多的是通過模拟黑客對端口和站點進行攻擊,嘗試擷取資訊。這類工具的優點是掃描範圍非常廣,誤報率不是特别高;缺點也非常明顯,就像測試一樣,需要人力去寫相關代碼去模拟黑客攻擊,對運維同學的安全知識要求比較高,因為需要把場景模拟出來。同時,也容易産生一些髒資料。

  • 互動式應用安全工具(IAST)

    在應用裡面插入 IAST,或者是通過代理截取流量,可以分析系統在營運過程中是不是有安全漏洞。優點是掃描精準、誤報率低。缺點是在更新工具的同時,伺服器需要重新開機。

  • 開源軟體安全工具(FOSS)

    前 3 種安全工具更多的是對自己寫的代碼的保障,從端口層面保證自己開發的産品是安全的。然而不可避免的是在開發過程中會引入第三方的插件工具, FOSS 工具是為了保證别人寫的代碼的安全性。

從 DevOps 到 DevSecOps 的實踐

接下來的内容是總結騰訊内部有哪些實踐,或者幫助客戶解決了哪些問題。

DevOps 工具都強調自動化,不能給開發運維同學有任何的負擔;而做資訊安全,不能因為做資訊安全需要花更多的精力,而是希望通過自動化,掃描以後産生報告告訴你結果就可以。DevOps 模式下,安全和業務互相不了解,安全同學對業務不是特别的熟悉,業務覺得安全不是特别重要。如果不出事的話,大家會覺得資訊安全離自己非常遠,對安全意識也沒有那麼強。是以在工作當中,更多時候都要考慮如何提高大家的安全意識。

以下是在銀行做 DevSecOps 的模型,其實也是業界通用的:

第一階段:資訊安全工具。将 DevSecOps 工具嵌入到 CI/CD 流水線中實作自動化安全漏洞掃描,生成并公開資訊安全漏洞報表;

第二階段:信心安全教育訓練。很多同學要麼沒有這方面的意識,要麼沒有這方面的能力,更多需要通過教育訓練把意識和能力提高起來。

第三階段:資訊安全意識和“專家”。團隊需要建立資訊安全意識和文化,培養開發團隊中的“資訊安全專家”。

目前騰訊内部自研了一些 DevSecOps 工具。SAST 層面,有代碼層面的安全漏洞掃描工具 Xcheck,用于敏感資訊掃描的啄木鳥;DAST/IAST 層面,自研的洞犀能夠通過收集 CGI 和參數,模拟黑客行為對端口進行安全掃描;還有 FOSS 層面,荷魯斯主要針對第三方開源的安全掃描,CODING 的制品/鏡像安全掃描功能主要是針對第三方開源的安全掃描。

上圖可以看到,針對于 CODING 這個産品,各類安全工具和規範在 DevOps 流程裡的內建。

剛才說的是工具層面,具體解決問題還是要落地到人的層面。是以我們内部也會提供相關的安全教育訓練,幫助同學們提高安全意識。騰訊内部經常有安全課程和活動;為客戶提供 DevOps 解決方案時,對方在 DevSecOps 上也需要指導。比如,開發人員需要熟練掌握安全工具,即在掃描出安全漏洞後能夠處理問題;高危安全漏洞必須要在上線前進行解決,中危漏洞可以協商在 1 個月内解決,低危安全漏洞作為一個技術負債,有空的時候再進行解決等等。

對 DevSecOps 未來的展望,基于我個人的了解和業界的讨論,主要分為兩個方面。首先我個人認為安全會進一步的左移。比如在架構設計時就考慮安全。英國有一款工具,在工具裡面設計架構圖,通過制定一些安全規則來警告哪些架構圖可能存在風險。第二點基于網上的讨論,認為 DevSecOps 離不開目前熱門的 AI,是否能通過 AI 來解決 DevSecOps 的問題?是不是可以通過機器學習減少誤報率?大家可以一起期待。

大會精彩瞬間

CODING CEO 張海龍接受專訪

CODING 展位從業人員合影

其他精彩瞬間

以上便是本次大會分享内容,點選報名上海站活動,我們 11 月 20 - 21 日 GOPS 全球運維大會(上海站)不見不散!

繼續閱讀