Docker 涉密資訊管理介紹

來源:互聯網
上載者:User

Docker 涉密資訊管理介紹

容器正在改變我們對應用程式和基礎設施的看法。無論容器內的代碼量是大還是小,容器架構都會引起代碼如何與硬體相互作用方式的改變 —— 它從根本上將其從基礎設施中抽象出來。對於容器安全來說,在 Docker 中,容器的安全性有三個關鍵組成部分,它們相互作用構成本質上更安全的應用程式。

構建更安全的應用程式的一個關鍵因素是與系統和其他應用程式進行安全通訊,這通常需要認證、令牌、密碼和其他類型的驗證資訊憑證 —— 通常稱為應用程式涉密資訊secrets。我們很高興可以推出 Docker Secrets,這是一個容器原生的解決方案,它是加強容器安全的可信賴交付Trusted Delivery組件,使用者可以在容器平台上直接整合涉密資訊分發功能。

有了容器,現在應用程式是動態,可以跨越多種環境移植。這使得現存的涉密資訊分發的解決方案略顯不足,因為它們都是針對靜態環境。不幸的是,這導致了應用程式涉密資訊管理不善的增加,在不安全的、土造的方案中(如將涉密資訊嵌入到 GitHub 這樣的版本控制系統或者同樣糟糕的其它方案),這種情況十分常見。

 

Docker 涉密資訊管理介紹

根本上我們認為,如果有一個標準的介面來訪問涉密資訊,應用程式就更安全了。任何好的解決方案也必須遵循安全性實踐,例如在傳輸的過程中,對涉密資訊進行加密;在不用的時候也對涉密資料進行加密;防止涉密資訊在應用最終使用時被無意泄露;並嚴格遵守最低許可權原則,即應用程式只能訪問所需的涉密資訊,不能多也不能不少。

通過將涉密資訊整合到 Docker 編排,我們能夠在遵循這些確切的原則下為涉密資訊的管理問題提供一種解決方案。

提供了一個高層次視圖,並展示了 Docker swarm 模式體系架構是如何將一種新類型的對象 —— 一個涉密資訊對象,安全地傳遞給我們的容器。

Docker Secrets Management

在 Docker 中,涉密資訊是任意的資料區塊,比如密碼、SSH 金鑰、TLS 憑證,或者任何其他本質上敏感的資料。當你將一個涉密資訊加入 swarm 叢集(通過執行 docker secret create )時,利用在引導新叢集時自動建立的內建憑證授權單位,Docker 通過相互認證的 TLS 串連將密鑰發送給 swarm 叢集管理器。

  1. $ echo"This is a secret"| docker secret create my_secret_data -

一旦,涉密資訊到達某個管理節點,它將被儲存到內部的 Raft 儲存區中。該儲存區使用 NACL 開源加密庫中的 Salsa20、Poly1305 密碼編譯演算法產生的 256 位密鑰進行加密,以確保從來不會把任何涉密資訊資料寫入未加密的磁碟。將涉密資訊寫入到內部儲存,賦予了涉密資訊跟其它 swarm 叢集資料一樣的高可用性。

當 swarm 叢集管理器啟動時,包含涉密資訊的加密 Raft 日誌通過每一個節點專屬的資料密鑰進行解密。此密鑰以及用於與叢集其餘部分通訊的節點 TLS 認證可以使用一個叢集級的加密金鑰進行加密。該密鑰稱為“解鎖密鑰”,也使用 Raft 進行傳遞,將且會在管理器啟動的時候使用。

當授予新建立或啟動並執行服務許可權訪問某個涉密資訊許可權時,其中一個管理器節點(只有管理器可以訪問被儲存的所有涉密資訊)會通過已經建立的 TLS 串連將其分發給正在運行特定服務的節點。這意味著節點自己不能請求涉密資訊,並且只有在管理器提供給他們的時候才能訪問這些涉密資訊 —— 嚴格地控制請求涉密資訊的服務。

  1. $ docker service  create --name="redis"--secret="my_secret_data" redis:alpine

未加密的涉密資訊被掛載到一個容器,該容器位於 /run/secrets/<secret_name> 的記憶體檔案系統中。

  1. $ docker exec $(docker ps--filter name=redis -q)ls-l /run/secrets
  2. total 4
  3. -r--r--r--    1 root     root            17Dec1322:48 my_secret_data

如果一個服務被刪除或者被重新安排在其他地方,叢集管理器將立即通知所有不再需要訪問該涉密資訊的節點,這些節點將不再有權訪問該應用程式的涉密資訊。

  1. $ docker service update --secret-rm="my_secret_data" redis
  2. $ docker exec-it $(docker ps--filter name=redis -q)cat/run/secrets/my_secret_data
  3. cat: can't open '/run/secrets/my_secret_data': No such file or directory

查看 Docker Secret 文檔以擷取更多資訊和樣本,瞭解如何建立和管理您的涉密資訊。同時,特別感謝 Laurens Van Houtven 與 Docker 安全和核心團隊合作使這一特性成為現實。

 

通過 Docker 更安全地使用應用程式

Docker 涉密資訊旨在讓開發人員和 IT 運營團隊可以便於使用,以用於構建和運行更安全的應用程式。它是首個被設計為既能保持涉密資訊安全,並且僅在特定的容器需要它來進行必要的涉密資訊操作的時候使用。從使用 Docker Compose 定義應用程式和涉密資料,到 IT 管理員直接在 Docker Datacenter 中部署的 Compose 檔案,涉密資訊、網路和資料卷都將加密並安全地與應用程式一起傳輸。

更多相關學習資源:

  • 1.13 Docker 資料中心具有 Secrets、安全掃描、容量緩衝等新特性
  • 下載 Docker 且開始學習
  • 在 Docker 資料中心嘗試使用 secrets
  • 閱讀文檔
  • 參與 即將進行的線上研討會

via: https://blog.docker.com/2017/02/docker-secrets-management/

作者:Ying Li 譯者:HardworkFish 校對:imquanquan, wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.