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

2021-09-23 18:54:24 字數 1676 閱讀 4157

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

docker安全掃瞄。

準生產環境。

生產環境。

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

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

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

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

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

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

請使用手機"掃一掃"x

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

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

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

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

Docker生命週期

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