保護 Python 執行時
在 Python 中進行開發時,許多開發人員最簡單快捷的解決方案是獲取任何信譽良好的打包執行時環境,其中執行時環境定義為 Python 語言本身 + 流行的第三方軟體包 + 直譯器。這樣您就可以避免
- 評估哪些第三方軟體包是可信的
- 從頭開始編譯軟體包
- 解決所有依賴關係
對於大多數 Python 開發人員來說,這通常意味著下載 Anaconda 或 ActiveState 的 Python、ActivePython 或類似的商業產品。這些發行版中的許多都帶有數百個預編譯和預驗證的流行 Python 庫,可用於各種專案。當然,對於任何一個專案,您最終可能只會在應用程式中使用不到一半的軟體包。
根據您的軟體開發流程,您可能會為生產建立單獨的 Requirements.txt 或 Pipfile.lock 檔案。然而,在 ActiveState,我們的許多企業客戶在未經律師參與重新評估開源許可證是否與公司政策衝突的情況下,無法修改其 Python 執行時環境(更不用說建立新的執行時環境),從而延遲了他們上市的時間。因此,他們構建時所用的執行時環境就是經過測試並最終投入生產的執行時環境。
日益增長的安全問題
來自 Synopsys(2018 年開源安全和風險分析 https://www.synopsys.com/content/dam/synopsys/sig-assets/reports/2018-ossra.pdf)和 Snyk(2019 年開源安全狀況 https://snyk.io/opensourcesecurity-2019/)等開源安全供應商的最新安全報告指出,針對越來越多的第三方庫報告的開源漏洞數量正在不斷升級。事實上,WhiteSource 現在將 Python 列為第五個最不安全的程式語言(https://www.whitesourcesoftware.com/most-secure-programming-languages/)。而且,如圖 1 所示,應用程式安全漏洞的數量每年都在持續上升。
圖 1:按行業劃分的資料洩露
當然,並非所有這些問題都可以歸咎於臃腫的執行時環境,但它們也無濟於事。當在執行時中包含但應用程式未實際使用的軟體包中發現漏洞時,尤其如此。這些“誤報”仍然需要調查和解決。
不幸的是,這些型別的漏洞必須與新功能和錯誤修復爭奪任何開發衝刺中的寶貴速度點。因此,安全任務通常會被降低優先順序並推遲到下一個衝刺,在那裡它們又必須再次爭奪速度點。事實上,最近的一項研究 https://snyk.io/opensourcesecurity-2019/ 表明,從發現漏洞到修復漏洞的平均時間超過 2 年。
最小化執行時管理
Python 開發人員並非獨一無二 - 我們更願意遵循關於執行時的安全最佳實踐,但前提是這不會妨礙我們完成衝刺編碼任務。
在 ActiveState,我們非常熟悉建立和維護多個執行時環境所需的工作量(這是我們賴以生存的根本)。但對於許多企業來說,為每個專案建立定製的執行時環境,甚至為以下情況定製的執行時環境,成本都可能太高:
- 開發 - 包括開發人員或資料科學家想要嘗試但永遠不會發布的軟體包。
- 測試 - 包括所有功能和整合測試例項(其中執行時需要包含所有測試框架),以及所有安全和效能測試例項(其中執行時應僅包含部署到生產環境的軟體包)。
- 生產 - 應包含支援應用程式的最小執行時環境,以最大限度地減少潛在的攻擊面。
ActiveState 平臺為 Python 開發人員提供了一個新的選擇。它使任何人(而不僅僅是構建工程師)都可以輕鬆地在其流行的平臺上自動為其專案建立執行時環境。只需
- 選擇一個 Python 3 版本
- 選擇一個要部署到的平臺(目前為 Linux,隨後將推出 Windows、Mac 和 Docker)
- 從一組您想要包含的流行的 PyPI 軟體包中進行選擇
ActiveState 平臺會自動提取所有依賴項、解決它們併為您構建 Python 執行時環境。換句話說,一個人只需大約一個小時就可以為每個環境(開發、測試和生產)建立執行時環境,該專案將被部署到這些環境中。完成相同的任務可能需要一組專門的構建工程師花費數週時間。
更重要的是,ActiveState 平臺將很快在發現漏洞併發布新軟體包時自動更新您的執行時環境,從而將您的工作量減少到只需對照您的自動化 CI/CD 鏈進行驗證。
要嘗試一下,您可以在 https://platform.activestate.com/create-account 註冊一個帳戶。