容器安全與DevSecOps:一些不再適用的舊規則
【深圳站|3天燒腦式Kubernetes訓練營】培訓內容包括:Kubernetes概述、架構、日誌和監控,部署、自動駕駛、服務發現、網路方案等核心機制分析,進階篇——Kubernetes排程工作原理、資源管理及原始碼分析等。
有關容器環境的一個常見問題是,如何保證只有授權過的映象才能作為容器執行呢?各種產品和開發團隊在這個問題上花了不少心思,想要把軟體和配置的那一套標準應用到容器管理中。
在傳統的IT環境中,有兩個程式可以並行:一個是軟體開發(dev.),另一個是軟體執行環境的基礎設施運營(ops.)。針對這兩個程式,已經有成熟的安全控制措施。
- 靜態程式碼分析工具通過評估原始碼,檢查常見錯誤,規範編碼標準來保證軟體開發安全
- 伺服器評估工具通過檢查作業系統和其他元件的版本,掃描漏洞和補丁級別,規範配置標準來保證基礎設施運營的安全
上述兩個過程獨立進行,只有當新開發的軟體安裝到基礎設施上之後,二者才有交集。最重要的是,如果基礎設施配置出了問題,基本上會在安全控制和運營過程中得到妥善處理,很少會影響到軟體開發。
為了保證程式碼安全,第一步並不是簡單的將其過渡到容器應用中,之後的控制步驟需要根據容器化環境進行調整。
容器:新的規則,新的安全流程
容器把所有的作業系統元件、必備元件和相關設定都嵌入到映象當中。一旦映象被建好和傳輸(ship),之後就不應該再有變動。執行狀態的容器不允許調整配置、修補和替換元件。修改映象內部環境的唯一方式就是重建新映象。
這就是說,基礎設施的安全方法唯一可以應用到的地方就是在映象的建立過程中。因為一旦映象完成部署,就沒有改動的餘地。
安全問題需要引起重視
嵌入基礎設施的安全控制在很大程度上,或者說是在根本上改變了建立流程。這種方式把當前的安全控制流程完全的轉移了。
不用等到開發和一體化程式完成後再進行迭代評估、修補和配置調整,安全控制需要在第一時間進行,即在映象建立之後,在進一步的CI/CD(持續整合和持續交付)過程之前。這就是“把安全控制挪到前面來”這句話表達的真正意思。
在此過程中,需要執行基礎設施安全方針中的所有要素,這點非常重要,同時,還有一些針對容器映象的方針:
- 根據基準映象(模板)建立映象
- 伺服器軟體元件可以接受一定程度上的漏洞
- 伺服器軟體元件是滿足條件的最低版本 映象作業系統的配置滿足組織標準
- 映象後設資料包括要求元素、使用者環境設定和入口點設定。
理想情況下,這些方針與當前的物理、虛擬或者雲上的主機中所應用的是對應的。例如,映象不可接受的漏洞清單和評估伺服器合規性的漏洞清單基本上是一樣的。
是時候更新安全控制了
很久以來,安全組織都在關注未授權的變更。跳轉伺服器、特權身份管理、管理日誌、變更視窗以及根因分析,這些手段都是為了檢測和防止對軟體元件及其配置進行未授權的變更。對主機進行內部和外部雙重連續漏洞評估,是為了能及時衡量IT基礎設施中不可避免的變更。
容器化環境的實現看起來不太現實。它同時要求動態性和一致性。有了容器之後,主機不再是必須的,因為主機已經沒有有效荷載或配置的意義了(容器引擎除外)。同時,對執行中的容器進行變更也不再是必須的,因為當編排或重新建立容器會覆蓋掉這些變更。總之,以後再也不用進行傳統意義上的變更了。
在需要進行變更的地方,只需要重新構建新的映象來替代、增加或是修補想要改動的容器,使之切合預期。如果把安全控制引入這一過程並能夠有效運作,之前覺得不可能的事情就會得以實現:在根本上創造了更多的安全應用,比以往更快更高效。
原文連結:Container Security and DevSecOps: The Old Rules No Longer Apply(翻譯:馬遠征)
原文釋出時間為:2017-04-24
本文作者:馬遠征
本文來自雲棲社群合作伙伴Dockerone.io,瞭解相關資訊可以關注Dockerone.io。
原文標題:容器安全與DevSecOps:一些不再適用的舊規則
相關文章
- 用於安全授權的DevSecOpsdev
- sql語句的一些規則SQL
- 安卓應用安全指南4.5.2使用SQLite規則書安卓SQLite
- Go程式設計的一些規則Go程式設計
- nginx的一些規則案例備忘Nginx
- Mysql-基本的規則與規範MySql
- 舊工程適配iOS6和iPhone5的一些故事iOSiPhone
- 使用DBV的命令規則和規則集強化資料庫安全資料庫
- canvas非零繞組規則與奇偶規則Canvas
- 容器到底可以做什麼?—客戶不再頭疼——OSCAR即將釋出“容器技術應用場景”規範
- 安卓應用安全指南4.1.2建立/使用活動規則書安卓
- Nginx的Rewrite規則與例項Nginx
- iptables 預設安全規則指令碼指令碼
- Drools 規則引擎應用
- 【原始碼解析】AsyncTask的用法與規則原始碼
- 『不再迷茫 – 正規表示式』JS正則要點梳理 持續更新JS
- Go 應用中 package main 的規則GoPackageAI
- 安卓應用安全指南5.5.2處理隱私資料規則書安卓
- 尋找適合編寫靜態分析規則的語言
- java安全編碼指南之:執行緒安全規則Java執行緒
- DevSecOps與SecDevOpsdev
- 碼教授告訴你一些web前端的命名規則Web前端
- 優雅的實現請求類驗證規則的重複利用(無需繼承,可適用於多個請求類的規則合併)繼承
- MapReduce--Input與Output規則
- [譯] 實用 ProGuard 規則示例
- DevSecOps 運維模式中的安全性dev運維模式
- DevSecOps 提升安全性的五種方式dev
- 遊戲規則的制訂者就真的懂得“規則”與“樂趣”間的關係嗎?遊戲
- javascript ==與!=的比較規則(加踩坑)JavaScript
- 規則引擎與ML模型的比較 - xLaszlo模型
- 函式呼叫的引數規則與解包函式
- 【記錄】那些很實用的Nginx規則Nginx
- 基於規則的應用例項——流
- 用 Java 構建簡單的規則引擎Java
- BFC與IFC概念理解+佈局規則+形成方法+用處
- Dart空安全的底層原理與適配Dart
- $.ajax(),$.get(),$.post()的區別,以及一些引數注意規則
- 規則引擎與機器學習比較與結合機器學習