微服務和雲是一件事情。每個人都在談論和寫作。就我個人而言,我正在考慮很多關於這個主題的內容:如何從中受益?什麼是可能的挑戰?這如何加速日常發展?以及如何管理所有的東西? 幾天以來困擾我的一個問題是「如何管理微服務/雲環境中的祕密?」。如何管理微服務/容器/雲環境中的祕密?
想象一家擁有150名軟件工程師和各種產品的團隊的公司。每個團隊都在創建一個軟件,每個服務都需要不同數量的祕密(API密鑰,密碼,SSH密鑰等等)。 「舊時尚」的方式是以ini/yaml/txt格式創建一些配置文件並從中讀取。 12因素應用程序會說:按照環境變量做。
Env vars可以在每臺機器上設置,配置文件也可以放在那裏。 如果您手中充滿了機器並且部署由少數系統管理員完成,則此功能可用。 其中一條通則是:「不要在Git倉庫中存儲祕密。」
現在新的世界進來了 Ever團隊負責他們自己生產的應用程序。 他們應該由團隊部署和運行。 因此,我們公司正在採用容器和自助服務的方式(例如Mesos和Marathon或Kubernetes)。
當然,Dockerfiles也可以設置env變量。是的,您可以在構建期間將您的配置文件添加到Docker容器中。 但是,每個人都可以訪問這些祕密(例如來自其他團隊)。沒有人知道誰在使用這些祕密並做一些危險的事情。
您還想要對Dockerfiles進行版本化。你想在Marathon上運行的應用程序也應該進行版本化(Git或其他)(並由REST API應用)。那麼在哪裏存儲和管理這些容器/應用程序的所有祕密? 因爲使用像Swarm和Machine(Docker)這樣的調度器框架,Mesos和Marathon(也可用於Docker)或者Kubernetes你不知道你的應用程序將在哪裏運行。這將安排在幾臺機器上。 而且大多數這些工具都沒有認證(默認情況下,這可以通過Nginx代理或其他方式添加)。
管理機密的一個想法是使用像Vault這樣的工具。但我從來沒有在應用程序中看到「本地」支持。這同樣適用於Blackbox。我不知道配置管理如何解決這個問題。我知道Chef支持加密的數據包,但afaik無法使用Chef來設置/構建Docker容器。
如何在多個團隊環境中與幾名工程師在微服務/容器/雲環境中管理祕密?
也許有這樣做的一種「社區方式」或行業標準如何做到這一點?對不起,這樣一個「開放的問題」。在StackOverflow網絡中是否有正確的位置來討論這樣的事情?還是我錯了? – Andy
啊,我想我錯過了這棵樹上的樹林。有很多關於你在做什麼的聲音,而不是這裏的實際問題。你打算管理微型集裝箱內的祕密;你能清理你的問題,所以它*顯式*?最初的脫脂使它看起來像是基於意見的。 – Makoto
我同意Makoto在這裏,我敦促@Andy澄清他的問題。就目前來看,這個問題很難遵循,但我懷疑有一個很好的問題藏在裏面。 – Chris