注意: 雖然 JavaScript 對於本網站不是必需的,但您與內容的互動將受到限制。請開啟 JavaScript 以獲得完整的體驗。

保護 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/) 等開源安全供應商的最新安全報告指出,針對不斷增長的第三方庫報告的開源漏洞數量持續escalating。事實上,WhiteSource 現在將 Python 列為第五個最不安全的程式語言 (https://www.whitesourcesoftware.com/most-secure-programming-languages/)。而且,如圖 1 所示,應用程式安全漏洞的數量每年都在持續上升。

Data Breaches by Industry
圖 1:按行業劃分的資料洩露

當然,並非所有這些問題都可以歸咎於臃腫的執行時環境,但它們也無濟於事。當在執行時中包含但應用程式未實際使用的包中發現漏洞時,情況尤其如此。這些“誤報”仍然需要調查和解決。

不幸的是,在任何開發衝刺中,這些型別的漏洞都必須與新功能和錯誤修復爭奪寶貴的進度點。結果,安全任務通常會被降級並推遲到下一個衝刺,在那裡它們必須再次爭奪進度點。事實上,最近的一項研究 https://snyk.io/opensourcesecurity-2019/ 表明,從發現漏洞到修復漏洞的平均時間超過 2 年。

最小化執行時管理

Python 開發人員並非獨一無二——我們寧願遵循執行時方面的安全最佳實踐,但前提是它不會阻止我們完成衝刺編碼任務。

在 ActiveState,我們非常熟悉建立和維護多個執行時環境所需的工作量(這是我們的工作)。但對於許多企業來說,為每個專案建立定製的執行時成本可能太高,更不用說為以下方面量身定製的執行時了:

  • 開發——包括開發人員或資料科學家想要嘗試但永遠不會發布的那些包。
  • 測試——包括所有功能和整合測試例項(執行時需要包含所有測試工具),以及所有安全和效能測試例項(執行時應該只包含部署到生產環境的包)。
  • 生產——應該包含支援應用程式的最小執行時環境,以最大程度地減少潛在的攻擊面。

ActiveState 平臺為 Python 開發人員提供了一個新選項。它使任何人(而不僅僅是構建工程師)都可以輕鬆地自動為他們在流行平臺上的專案建立執行時環境。只需

  1. 選擇一個 Python 3 版本
  2. 選擇一個要部署的平臺(目前是 Linux,即將支援 Windows、Mac 和 Docker)
  3. 從一組您想要包含的流行 PyPI 包中進行選擇

ActiveState 平臺會自動引入所有依賴項,解決它們,併為您構建 Python 執行時環境。換句話說,一個人在大約一小時內,就可以為其專案將部署到的每個環境(開發、測試和生產)建立執行時。同樣的任務可能需要專門的構建工程師團隊數週才能完成。

更重要的是,ActiveState 平臺很快就會在發現漏洞和釋出新包時自動更新您的執行時環境,從而將您的工作量減少到僅針對您的自動化 CI/CD 鏈進行驗證。

要試用它,您可以在 https://platform.activestate.com/create-account 註冊一個帳戶。