Docker為整個軟體生命週期提供安全保障

2021-07-22 12:25:56 字數 1983 閱讀 7296

提到docker的安全性和隔離性,人們關注點大多都在執行階段。但是,執行時的安全問題僅僅是整個軟體生命週期中的一部分,我們需要在整個軟體生命週期都考慮安全問題。管理者必須把安全作為乙個關鍵因素考慮,並貫穿軟體產品**鏈的全過程,考慮當出現持續的人員流動、**更新、架構變化時,如何保證安全。

用生產手機的**鏈打個比方,管理者不會僅僅考慮手機本身的安全性,他們還需要考慮**鏈中各個環節的安全。比如,使用哪種防盜包裝,原料來自**,如何組裝、運輸各種部件等等。除此以外,還需要保證手機不會在運輸途中被掉包或被偷掉。

軟體產品**鏈與傳統商品**鏈幾乎面臨著同樣的問題。管理者必須篩選原料(原始碼、依賴包、公共庫),把原料加工成產品(應用程式),通過海陸空(網際網路)把產品運輸到倉庫中(映象倉庫),並賣給終端使用者(部署應用程式)。

在軟體產品**鏈中,需要從以下幾個方面加強安全管理:

鑑別**鏈中的每個元素,包括發人員、開發語言、開發框架、依賴包等。

必須有一套高質量的編譯流程,這套流程必須是固定的。

保證應用程式在儲存和傳輸過程中是安全的。

在交付產品之前,保證應用程式是經過充分測試的。

接下來,將介紹docker在軟體產品**鏈中是如何保障安全的。

鑑別整個軟體產品**鏈的基礎是鑑別和訪問控制。管理者必須從根本上知道哪些人能夠訪問哪些資源,以及這些人能夠用這些資源做什麼。docker提供了明確的鑑別概念,可以鞏固軟體產品**鏈的安全性。映象發布者可以使用加密秘鑰對映象進行簽名,保證映象的原創性、真實性以及發布源的可靠性。

固定的編譯流程

建立了固定的編譯流程以後,開發者可以迅速的發布產品。可以方便的控制應用程式的依賴包和元件,並標準化測試過程。如果開發者非常清楚應用程式各個元件之間的關係,就可以很方便的定位bug和異常。

建立固定的編譯流程,需要從以下幾方面考慮:

評估依賴包的質量,確保依賴包是最新的可編譯版本。使用之前需要親自測試。

確保使用的元件**可靠,並且是完整沒有被篡改的。

選擇好依賴包以後就固定下來,如果應用程式後續版本出現問題,可以很方便的確定這個bug是原始碼還是依賴包引起的。

使用安全的、經過簽名的映象作為基礎映象。

映象簽名

安全掃瞄

開發者會使用ci系統對每乙個版本進行整合測試,但是一些更有價值的審查被忽略了。比如,開發者不會審查依賴包的漏洞;不會審查依賴包的子模組或依賴包使用的庫函式;不會審查依賴包的license……在發布了bugfix和新功能以後,開發者已經精疲力盡,沒有精力再做這些詳細的審查。

開啟docker安全掃瞄功能以後,映象上傳到映象倉庫時,docker會掃瞄每乙個映象層,實現自動化審查。這個過程作為容器部署到生產環境之前的最後一道安全關卡,可以保證映象的安全。目前只有docker cloud提供安全掃瞄功能,接下來docker datacenter也會提供這個功能。安全掃瞄時,會收集映象所有層的資訊,包括映象層中的包資訊和版本資訊。這些資訊用於和各種cve(common vulnerabilities and exposures)資料庫進行互動,持續更新安全掃瞄規則。docker會定期執行安全掃瞄,一旦發現應用程式使用的某個包出現安全漏洞,就會通知管理員和應用程式的開發者。

門限簽名

docker中最強的一項安全保障技術是多方可以參與容器簽名。這項技術源自docker content trust的簽名技術。假設乙個ci過程有以下幾步:

自動ci。

docker安全掃瞄。

準生產環境。

生產環境。

每一步完成以後,都可以進行簽名,後續步驟可以驗證之前的簽名。

映象通過ci,新增ci簽名。

映象通過安全掃瞄,新增安全掃瞄簽名。

通過準生產環境測試,新增staging簽名。

驗證前三個簽名,並部署到生產環境中。

當乙個應用程式部署到生產環境之前,在ci/cd的每乙個階段都可以簽名和驗證。

結論docker為企業提供了一套安全框架,貫穿軟體的整個生命週期。從與使用者建立互信到原始碼管理;從製作安全的基礎映象、掃瞄映象層到簽名映象層。這套框架幫助開發者和it部門靈活控制軟體生命週期的各個環節,保障不同階段的安全。

Docker為整個軟體生命週期提供安全保障

提到docker的安全性和隔離性,人們關注點大多都在執行階段。但是,執行時的安全問題僅僅是整個軟體生命週期中的一部分,我們需要在整個軟體生命週期都考慮安全問題。管理者必須把安全作為乙個關鍵因素考慮,並貫穿軟體產品 鏈的全過程,考慮當出現持續的人員流動 更新 架構變化時,如何保證安全。用生產手機的 鏈...

Docker為整個軟體生命週期提供安全保障

用生產手機的 鏈打個比方,管理者不會僅僅考慮手機本身的安全性,他們還需要考慮 鏈中各個環節的安全。比如,使用哪種防盜包裝,原料來自 如何組裝 運輸各種部件等等。除此以外,還需要保證手機不會在運輸途中被掉包或被偷掉。軟體產品 鏈與傳統商品 鏈幾乎面臨著同樣的問題。管理者必須篩選原料 原始碼 依賴包 公...

Docker生命週期

docker活動狀態圖如下 彩色圓形 代表容器的五種狀態 created 初建狀態 running 執行狀態 stopped 停止狀態 paused 暫停狀態 deleted 刪除狀態 長方形 代表容器在執行某種命令後進入的狀態 菱形 需要根據實際情況選擇的操作 killed by out of m...