如何降低DevOps存儲庫的各項風險
譯文【51CTO.com快譯】從技術上講,相比過去那些重量級的虛擬機,Docker為軟件開發人員提供了可擴展的數據包和發布代碼的容器,為應用程序的靈活性和可移植性需求提供了一種可持續的業務模型。而作為一種基于云的存儲庫,最終用戶既能夠在Docker Hub中發布各種Docker鏡像,又可以將它們拉出來,用于各種云原生基礎架構的部署。由于Docker鏡像不但輕巧、可移植,而且能夠在系統之間輕松地被移動,因此任何人都可以創建一組標準化的Docker容器鏡像,將其存儲在存儲庫中,以便通過Docker Hub在整個組織中共享它們。
Docker鏡像的威脅
不過,用戶不能盲目地并從Docker Hub中直接提取鏡像。僅在2018年,Docker Hub上就被發現了17種惡意Docker鏡像(請參見--https://threatpost.com/malicious-docker-containers-earn-crypto-miners-90000/132816/),攻擊者已從中牟利90,000美元。由于Docker Hub中帳戶和項目是相互聯系的,一旦安全漏洞被發現,準確地找到那些可能受到嚴重影響的資產,會是一項艱巨的任務。同時,這也會減慢從開發到運營、再到部署的整個過程。因此,DevOps團隊不得不花費大量的時間,通過跟蹤鏡像的自動構建與存儲,既檢查相關帳戶和項目中的可疑活動,又需要重設已感染帳戶的密碼,刪除并替換已受攻擊的鏡像。
Docker許可證的風險
Docker鏡像往往是由那些具有不同許可證條款和合規性義務的軟件,以及操作系統包所組成。為了在企業中管控容器使用的風險,我們需要了解所有這些依賴關系,以便根據公司的安全準則、以及開源策略進行合規性評估。
在實際操作中,我們可以借用自動化工具來識別鏡像,獲悉操作系統的所有軟件包、已捆綁的應用、以及從屬庫,進而匯總各個層面上的許可證,以便識別出不合規的軟件包,最終降低企業在法律和業務上的風險。例如,由JFrog提供的Xray是一種常見的安全掃描解決方案。它可以通過深入到Docker鏡像中,來識別許可證的合規性,并在安全研究人員發現了新的安全漏洞時,及時對其進行標記。
緩解風險
基于安全方面的考慮,Docker Hub在提供服務的同時,采取了如下兩個方面的限制:
- 鏡像保留限制
那些使用免費賬號(這在開源項目和自動化構建中十分常見)在DockerHub上存儲的鏡像,會受到六個月的鏡像保留政策限制。也就是說:如果這些鏡像在六個月后處于非活動狀態,那么就會被直接刪除掉。
- 下載節流
Docker對匿名用戶引入了“每六小時只允許100次請求”的下載速率限制;而對于免費帳戶,則采取了“每六小時只允許200次請求”的下載速率限制。
由此,會有兩組人員可能會受到此類限制策略的影響:創建Docker鏡像的開源貢獻者和使用鏡像的DevOps愛好者。具體說來,開源貢獻者會碰到丟失那些少用但重要的鏡像等問題。而由于DevOps愛好者會將Docker Hub用作存儲系統,因此碰到在沒有任何警告的情況下,丟失鏡像或破壞構建等問題。并且由于請求次數的限制,他們的匿名或免費構建也可能出現失敗。
面對此類狀況,我們可以選用一種更為高效的替代品--Artifactory。
如上圖所示,Artifactory的應對措施包括:
- 由于Artifactory能夠緩存鏡像,因此用戶不會受到上游鏡像被移除的影響。
- 由于Artifactory能夠提供緩存服務,因此每個鏡像只需被拉取一次,有效地實現了節流。
- 整個組織內的所有開發人員和構建主機都只需要一個Docker Hub許可證。
- Artifactory允許用戶為每個實例創建多個Docker注冊表。您可以將本地存儲庫用作私有的Docker注冊表,以細粒度的訪問控制方式,在整個組織中共享Docker鏡像。
- 您可以存儲和檢索任何類型的工件(artifact),甚至是由開發團隊生成的安全Docker鏡像。由于這些工件存儲在中央托管位置,因此Artifactory成為了任何軟件交付生命周期的重要組成部分。
JFrog Artifactory的基本特征:
- 提供2 GB的存儲空間和10 GB傳輸的免費套餐
- 處于大型組織的商業層
作為一種無縫托管和分發容器鏡像的服務,Artifactory能夠將所有二進制文件存儲到單個位置(如:Docker注冊表,https://jfrog.com/integration/docker-registry/),以實現對進入某個Docker鏡像的內容和信息進行管控。同時,Artifactory也提供了廣泛的集成、高可用性、高安全性、大規模的可擴展存儲,以及能夠通過持續更新,來支持最新的Docker客戶端版本和API。
JFrog容器注冊表(JFrog Container Registry,JCR)的基本特征:
- 自托管:提供免費且無限制的容器注冊表
- Cloud SaaS:2 GB的存儲空間和10 GB傳輸的免費套餐
- 云端BYOL(Bring Your Own License,自帶許可):在用戶自己的基礎架構上是免費的
JFrog容器注冊表能夠與Docker完全兼容,用戶可以使用各種工具按需進行“原生”操作,從而實現對Docker鏡像的管理(請參見--https://www.jfrog.com/confluence/display/JCR/Docker+Registry)。
JCR可以被作為我們管理所有Docker鏡像的單一節點。通過集成到已構建的生態系統中,用戶可以安全、可靠、一致、高效的方式,訪問到遠程的Docker容器注冊表。
服務管理員可以按需使用細粒度的權限控制,來維護任意數量的公共和私有Docker注冊表。同時,它還為用戶的容器存儲了豐富的元數據,以提供容器內各個層面上的唯一且全面的視圖。用戶可以據此了解其中的具體內容。
建立可持續的容器生態系統
擁有蓬勃發展的容器生態系統,對于那些正在使用Docker和Kubernetes等云原生技術來實現成功部署的公司來說,是至關重要的。通過在企業內部部署JFrog Artifactory和JFrog Container Registry之類的本地存儲技術,我們不但可以靈活地支持構建、測試和部署等各種實用場景,還能夠減少各種共享式社區基礎架構的負載,其中包括:Docker Hub、Maven、NPM、Go、Conan、以及其他由社區運營的中央存儲庫。
雖然我們在使用Docker Hub時可能會遇到上游容器鏡像被刪除,以及服務受限或中斷等風險,但是通過部署工件管理系統,用戶能夠在實現流暢地端到端軟件交付的同時,更加專注于軟件包的質量和安全性,而不僅僅著眼于擴展基礎架構。
原標題:Mitigating DevOps Repository Risks ,作者: Pavan Belagatti and Stephen Chin
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】