论 Erda 的安全之道
作者|陳建鋒
來源|爾達 Erda 公眾號
?
軟件研發是一個復雜的工程,不僅需要進行軟件的設計、開發、測試、運維,還涉及到大量的人力、物力管理。今天討論的主角 - “安全”,在軟件研發中是一個極易被忽視的主題,但相比代碼 Bug 而言,安全問題一旦出現,破壞力更大甚至是致命的。
?
下面先給大家舉些例子感受一下。
?
5 月 7 日,Colonial 油管(其管道為美國東海岸供應 45% 的汽油、柴油、航空燃料)遭遇了歷史上最大的勒索軟件攻擊,在當地時間 5 月 8 日被迫全線關閉,遲至 5 月 16 日才恢復“正常運營”。
?
6 月 30 日某滴低調赴美上市。7 月 9 日網信網通報“某滴 25 款 APP 存在嚴重違法違規收集個人信息問題”。7 月 10 日國家互聯網信息辦公室發布關于《網絡安全審查辦法(修訂草案征求意見稿)》公開征求意見的通知。征求意見稿包括了“掌握超過 100 萬用戶個人信息的運營者赴國外上市,必須向網絡安全審查辦公室申報網絡安全審查?!?/p>
?
為什么安全是一個困難
?
安全問題和代碼 Bug 一樣,普遍存在于軟件的全生命周期之中。計算機安全協會(CSI)曾對企業、政府機關、金融機構、醫療機構、大學等進行調研,征詢他們是怎么被安全威脅影響到的。在其收到的 522 份專業反饋答案驚人的一致,“來自內部”… 而且占比高達 80%。所以不必懊惱,很多時候你只是那 80% 里面的一份子而已。
《CSI Computer Crime & Security Survey》:http://i.cmpnet.com/v2.gocsi.com/pdf/CSIsurvey2008.pdf
軟件相關的安全問題表現和解決方式繁多。常見的安全問題非常零散:
?
作為一個軟件研發平臺,遇到的安全挑戰就更復雜了:
?
在很多項目中,安全都是一個獨立的團隊負責,安全工作往往是在軟件研發基本完成后才開始。這樣的合作方式會導致安全問題暴露較晚,修復付出的成本非常高,而且跨團隊的鴻溝也增加了協同成本甚至文化沖突。在當下敏捷模式為主的研發項目中,此種組織架構亟待升級。
?
安全是企業客戶最重視的事情,沒有之一,它是企業的生命線,強調再多都無可厚非。在我們所服務的每一位客戶心中,任何安全問題的修復都是第一優先級。
?
綜上所述,在 DevOps 、微服務和云原生盛行的當下,因循守舊的邊緣化安全無疑會掣肘軟件的生產速度和產品質量。那破解之道在何處呢?
?
破解之道 DevSecOps
?
早在 2012 年 Gartner 就提出了 DevSecOps 理念,它是一種糅合了開發、安全、運維的全新模式。2016 年,Gartner 進一步發布《DevSecOps: How to Seamlessly Integrate Security into DevOps》報告,強調“需要將安全集成到 DevOps 鏈路上同時保持敏捷研發”。RSA Conference 從 2017 年開始設置 DevSecOps 研討專題,討論主題涵蓋了從技術實踐到文化融合。
-《DevOpsSec: Creating the Agile Triangle》:
_https://www.gartner.com/en/documents/1896617/devopssec-creating-the-agile-triangle _
?
-《DevSecOps: How to Seamlessly Integrate Security into DevOps》:
https://cdn2.hubspot.net/hubfs/1958393/White_Papers/devsecops_how_to_seamlessly__315283.pdf
DevSecOps 之道
?
首先是思想的破立,DevSecOps 確立了安全前置(Shift Left)的基本共識,安全應該是嵌入到現有的整個軟件研發運維流程體系,需要開發、測試、運維、安全團隊共同努力來實現軟件價值。
其次是技術的支撐,需要完善的工具鏈保證鏈接在 DevOps 流程之中的任何一個安全接入點都是高度自動化、穩定可靠且安全的。嵌入的方式應該保證高效和平滑,不能因為流程的增加而拖累軟件研發的效率。
?
再次是團隊的融合,DevSecOps 提倡的不僅是局限于技術上的共建和創新,而是要將安全人員融入每一個研發組織,將安全意識和安全問題的快速解決集成到軟件交付過程中。
?
最后是以人為本的文化及組織建設,人的行為自始至終就與數據、威脅、風險、隱私及管理等因素交織在一起,需要能夠平衡技術框架和管理策略的新安全技術文化,打造或者轉型 DevSecOps 組織。
?
接下來,我們介紹一下 Erda 在 DevSecOps 上的實踐。
?
Erda 的 DevSecOps 實踐
?
Erda 作為企業級軟件研發平臺,在設計之初就考慮到企業對安全的高要求,從技術和管理兩個角度充分注重落地 DevSecOps。
?
技術側
?
首先,我們從技術側 Erda 平臺提供了很多技術能力幫助研發團隊快速地讓軟件具備安全能力。
?
1)持續集成流水線
Erda Pipeline 內置了 Sonar Action 對代碼進行質量檢查。對檢查出來的質量問題可以創建“缺陷”,進入項目協同流程,進而來跟蹤修復情況。
?
Pipeline Action 還擁有靈活的擴展能力,可以集成第三方安全公司的付費服務對代碼質量、安全漏洞、配置泄露進行檢查。
?
2)部署資源限制
?
Erda 基于云原生技術支持應用配置 CPU、Memory 的配額,很好的限制單個微服務可以使用的資源量。進一步,Erda 還支持項目配置資源配額。這樣,既可以在多個項目共享集群的時候避免相互占用,又能夠督促項目組合理評估資源,并在受限后及時清理避免濫用。
?
3)API 網關
Erda 提供的 API 網關實現了豐富的 API 防護策略,具體信息如下所示:
?
4)域名治理
?
5)對接云安全產品
?
Erda 已經成功對接大量的云廠商安全產品,例如 DDoS 防護、云防火墻、Web 應用防火墻、堡壘機、密鑰管理服務等。
?
借力云廠商的賦能,Erda 將業務系統置身于強大的保護罩之中,并對業務系統無任何侵入。
6)私有化安全保障
Erda 已經成功實施過幾十個私有化項目。針對私有化環境的安全保障,Erda 一方面提供了 VPN、JumperServer、操作系統加固等安全解決方案;另一方面,可以利舊客戶環境的安全產品,包括防火墻、堡壘機、F5、WAF、安全日志審計、MFA 認證、加密存儲等。
?
管理側
?
其次,從管理側 Erda 也提供了很多管理方法,幫助研發團隊治理研發過程、規避安全問題。
?
1)權限管理
?
Erda 采用基于角色的訪問控制(RBAC)實現企業級的用戶權限管理,建立“企業 - 項目 - 應用”三層組織架構。以應用為中心,多個應用構成一個項目,一個企業可以建設多個項目,配備不同角色參與企業軟件研發。
?
Erda 設定了多種研發角色,包括項目經理、研發主管等,每個角色所擁有的權限都是被平臺預先設定的,嚴格設定了其所能完成的操作。每個 Erda 用戶完成注冊后并不歸宿任何企業,由企業管理員將其加入企業并分配角色。同樣的,由項目管理員將項目成員加入項目并設定角色,項目成員根據在項目中不同的職能,承擔不同的角色(即擁有不同的功能權限),相互協作完成整個項目研發。
?
Erda 會記錄所有的用戶修改操作,支持安全合規審計。同時平臺杜絕弱密碼,采用鹽值加密存儲,并對多次登錄失敗進行賬號凍結來防范密碼暴力破解。
2)資源管理
?
每個企業可以使用 Erda 托管多個集群,集群間物理隔離。特別的,多個企業還可以共享一個集群,通過機器分組實現隔離。企業中的每個項目內置四套研發環境,每個環境都可以選擇部署集群。
?
如上圖所示,企業 A 管理兩個集群,其下的項目一、二、三的研發環境分別分屬于兩個集群。企業 B 管理兩個集群,其下的項目四、五分別使用一個集群。企業 C 和 D 則共享集群三,但它們使用的是兩組相互隔離的機器。通過不同的隔離策略,Erda 支持了靈活的安全隔離需求,同時兼顧彈性共享的業務場景。
?
3)配置管理
?
常見的安全隱患是硬編碼配置被到處拷貝。極端情況下你的賬號密碼會出現在 Github 上;企業甲會把埋點數據發到企業乙的友盟賬號里。一旦配置泄露,企業會陷入極大的苦惱和擔憂。
?
Erda 的最佳實踐是將配置保存在平臺上,工具代碼通過配置名在對應的環境下受限使用。研發主管在生產環境配置了 rds-prod 插件,然后開發工程師通過 erda.yaml 引用 rds-prod 來獲取數據庫配置。配置信息僅研發主管知曉,對開發工程師不可見,做到最小暴露。
?
同樣的,研發主管配置測試參數 clusterName 等,測試工程師通過參數名 ${{ config.autotest.clusterName }} 引用來進行接口測試。測試工程師也不接觸具體的配置參數值。
?
特別強調一下,通過平臺管理配置也將配置參數和研發環境綁定,避免了參數和環境錯配帶來的誤用。
?
寫在最后
?
Erda 的安全之道在于一直秉承 DevSecOps 的理念為企業提供打造高質量軟件的研發平臺。我們會一如既往地完善自動化工具鏈,推進安全前置的同時注重安全落地的柔和低侵入。Erda Cloud 作為 DevSecOps 的倡導者,我們會持續關注于人自身,從以人為本的角度平衡技術框架和管理策略,致力于構建安全且敏捷的組織文化。
如果你有任何疑問,歡迎添加小助手微信(Erda202106)加入交流群,參與交流和討論!
?
- Erda Github 地址:https://github.com/erda-project/erda
- Erda Cloud 官網:https://www.erda.cloud/
總結
以上是生活随笔為你收集整理的论 Erda 的安全之道的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: a ^ 3 = b ^ 3 + c ^
- 下一篇: BZOJ1226【SDOI2009】学校