詳解Docker 最低特權編排原則,安全與效率並行!(一)
寫在前麵
Docker 平台和容器已經逐漸成為打包、部署和管理應用程序的標準。為了讓容器在集群中於多節點間協調運行,這就需要一個關鍵的功能:容器編排(container orchestrator)。本主題將分兩篇為大家詳細講解這一重要功能。
編排功能
編排功能(Orchestrators)負責關鍵的集群和調度任務,例如:
- 管理容器調度和資源分配
- 支持服務發現和無中斷應用程序部署
- 分發讓應用程序運行所必需的資源
不幸的是,在這種環境中,編排的分布式特性與資源的短暫特性讓安全的編排成為一項具有挑戰性的任務。在這篇文章裏,我將詳細解讀這個常常被人們所忽略的重要方麵——編排的安全模型,我還會演示如何利用Docker 企業版(EE)內置的編排工具——Swarm 來如何克服上述困難。
活躍模型和威脅模型
在Docker 企業版(EE)中使用Swarm Mode的主要目的是為用戶提供一個內置安全功能的編排。為了實現這一目標,我們開發了首款容器編排工具,它的設計理念就是要時刻保持占用最低特權原則,以提高主機整體的運行效率。
計算機科學中,每一個參與者都需要在分布式係統中遵循最低特權原則,它要求參與者僅可以訪問符合其合法目的的必要信息和資源,不能多也不能少。
最低特權原則——一個進程隻能訪問符合其合法目的所必需的信息和資源。
Docker企業版(EE)中的Swarm 為每一個節點都分配了相應的角色(無論是管理人員還是工作人員)。這些角色分別為節點限定了其粗顆粒度的權限等級,即管理任務級別和執行任務級別。但是,不管它的角色是什麼,節點都隻能訪問其執行必要任務所需的信息和資源,並且具有強製加密的訪問保障機製。因此利用這種機製可以更加輕鬆的保護集群免遭黑客的致命攻擊,如通過控製底層通信網絡或者盜用集群節點的攻擊方式。
默認安全核心
IT領域有一個安全準則,它規定:如果不是默認的,就沒有人會使用它。 Docker Swarm Mode將這一理念帶入產品中,並配有默認機製來解決編排生命周期中最困難和最重要的三個方麵(本篇將介紹前兩個方麵):
- 信任引導和節點介紹;
- 節點身份簽發和管理;
- 對認證、授權、加密過的信息進行存儲和分發;
下麵,讓我們分別來看這幾個方麵:
信任引導和節點介紹
安全集群的第一步是對成員資格和身份進行嚴格的控製。沒有這一步,管理員就不能利用其節點管理者的身份,對節點之間的工作負載進行嚴格的分離。這意味著未經授權的節點將不能被允許加入集群,而已經成為集群中的節點則不允許更改其身份,從而杜絕了偽裝成其它節點的可能。
為了滿足這一需求,就需要通過Docker 企業版(EE)的Swarm Mode來管理節點以對其進行嚴格的控製並維持其固定的身份。所需的屬性是通過使用兩個關鍵的構建模塊進行加密保護:
- 為集群成員提供安全連接令牌;
- 將唯一標識嵌入到由中央主機認證授權簽發的證書中;
加入Swarm
要加入Swarm,節點就需要一個安全連接令牌。令牌對集群中每個操作角色都是唯一的——目前有兩種類型的節點:工作人員節點和管理員節點。由於這種分離,具有工作人員身份的節點將不允許作為管理人員加入集群。獲取特殊令牌的唯一方法就是讓集群管理員通過Swarm管理的API界麵進行交互式地申請。
令牌是安全、隨機生成的,它同時還具有一種特殊的語法,使得管理員更容易檢測到泄漏的令牌:利用一個特殊的前綴,您就可以的輕鬆的監控日誌和存儲庫中的泄漏問題。幸運的是,即使發生泄漏,令牌也很容易進行更新,我們建議您經常輪轉它們——特別是在集群短時間內不會更新換代的情況下。
信任引導
作為建立其身份的一部分,新節點將申請一個由網絡管理員所簽發的全新身份。但是,根據我們威脅模型的假設,即所有通信都可以被第三方截獲。這就引出了一個問題: 一個節點如何判斷它是否在與一個合法的管理員對話?
幸運的是,Docker有一個內置的保護機製來防止這種情況發生。連接令牌包含CA證書的散列就是主機連接Swarm的保障機製。因此,主機可以使用單向TLS,並使用散列來驗證它是否在與正確的Swarm進行連接:如果管理員顯示的不是通過與散列匹配的CA證書,則該節點就清楚不能與其連接了。
節點身份的簽發和管理
節點在Swarm 中的身份會嵌入到每個節點所持有的x509證書中。根據最低特權原則,證書的私鑰將嚴格限製在其發起的主機上。值得注意的是,除自己所持有的私鑰之外,管理員無權訪問任何其它證書的私鑰。
身份簽發
要在不共享私鑰的情況下接收證書,就需要新主機首先發出一個證書簽名請求(CSR),然後由管理員將其轉換成證書。現在,這個證書就是節點在新主機上的身份證明,擁有該證書的節點就是該群集的正式成員了!
當與安全引導機製一起使用時,默認情況下,這種為連接節點進行身份簽發的機製是安全的。所有通信方都是經過驗證的、經過授權的,並且沒有在明文中交換任何敏感信息。
身份續約
然而,將節點安全地連接到Swarm隻是其中的一部分。為了最大限度地減少證書泄漏或被盜的影響,並且消除管理CRL列表的複雜性,Swarm Mode 隻為其節點提供短期的身份驗證證書。這些證書的默認有效期為3個月,但是可以根據您的需要自由配置時間!
使用這個有效期很短的證書意味著證書更新不能是一個手動的過程,因為它通常用於大多數PKI係統。使用Swarm,所有證書都將以一種不中斷的方式進行自動更新。這個過程很簡單:使用相互驗證過的TLS連接去證明特定身份的所有權,Swarm節點定期生成新的公鑰/私鑰,並發送相應的CSR以進行簽名,創建一個全新的證書,但不會改變其原有身份。(未完待續......)
最後更新:2017-10-27 22:04:51