现代环境下的网络分割
網絡分割是限制網絡入侵影響的一種高效策略。但是, 在諸如群集調度程序這樣的現代環境中, 應用程序通常會在沒有操作員干預的情況下啟動和重新啟動。這種動態資源調配會導致不斷變化的 IP 地址和應用程序入口端口。使用傳統的防火墻和路由方法對這些動態環境進行細分可以在技術上具有挑戰性。
在這篇文章中, 我們將研究這種復雜性以及服務網格是如何成為現代動態環境中安全網絡通信的潛在解決方案的。
動態環境
我們先來定義一下動態環境的含義。最簡單的情況是, 動態環境是應用程序和基礎結構經常發生更改的環境, 要么是通過手動個更改常規部署和基礎結構,要么就是在沒有操作員干預的情況下觸發大小自動調整或實例自動替換。像 HashiCorp Consul或 Kubernetes 這樣的調度程序展示了這種行為, 就像許多云提供商提供平衡自動縮放組的自動冗余功能。但是, 這種效果不僅限于云環境, 任何平臺 (如 vSphere 配置在高可用模式下) 也可以歸類為動態環境。
網絡分割
我們還需要澄清為什么網絡分割對網絡安全有很高的價值。傳統的網絡分割主要是使用外圍防火墻實現的。此方法的問題在于受信任區域是平坦的。它只需要一次入侵就能獲得對網絡的廣泛訪問, 而網絡越大, 入侵檢測的機會就越有限。
隨著細粒度網絡分割, 網絡被分成許多較小的網絡, 為的是在發生入侵的時候能減少爆炸半徑,。此方法涉及開發并執行某規則集, 以控制特定主機和服務之間的通信。
每個主機和網絡應該被分割和隔離在最低的水平, 這個是可以實際實現的。路由器或3層交換機使用諸如虛擬 LAN (VLAN) 或訪問控制列表 (acl) 等措施將網絡劃分為不同的較小網絡。網絡防火墻則是為了過濾各小塊網絡之間的網絡通信, 而基于主機的防火墻則主要負責過濾來自本地網絡的通信來添加額外的安全性。
如果您在基于云的環境中運行, 則通過使用虛擬私有云 (VPC) 和安全組來實現網絡細分。雖然交換機是虛擬化的, 但將入口規則和 acl 配置為分段網絡的方法主要與物理基礎結構相同。
服務細分
在網絡細分涉及保護區域間的通信時, 服務分割確保同一區域中服務之間的通信安全。服務細分是一種更細化的方法, 尤其與多multi-tenanted環境 (例如, 在單個節點上運行多個應用程序的調度程序) 相關。
實現服務細分取決于您的操作環境和應用程序基礎結構。服務細分通常通過軟件防火墻的配置、軟件定義的網絡 (如應用調度程序使用的覆蓋網絡) 以及最近出現的通過利用服務網格來實現。
與網絡分割一樣, 應用最小特權原則, 只允許在有明確意圖允許此通信的時候允許服務通信。
網絡分割與動態環境問題
當我們試圖在動態環境中實現此方法時, 存在許多問題:
應用程序部署與網絡配置斷開連接
當使用自動縮放組部署應用程序并創建新實例時, 通常會動態地從預先配置的塊中分配 IP 地址。這個特定的應用程序很少會被孤立地運行, 需要訪問在同一網絡段中運行的服務, 以及潛在的另一個網絡段。如果我們對網絡安全采取了強硬的方法, 那么這兩段之間就會有嚴格的路由規則, 這兩個部分只允許預定義列表上的通信。除此之外, 我們還將在上游服務上配置主機級防火墻, 這將只允許特定的通信。
在靜態的世界中, 當應用程序部署到已知位置時, 這是更簡單的解決辦法。可以在部署時更新路由和防火墻規則, 以啟用所需的訪問權限。
在動態的世界中, 存在斷開連接的問題, 應用程序獨立部署以配置網絡安全和分配的 IP 地址, 甚至潛在的端口都是動態的。通常有一個手動更新網絡安全規則的過程, 這會減慢部署速度。
在現代調度程序中調度應用程序
網絡分割的目標是在邏輯上劃分網絡, 以減少爆炸半徑。極限來說, 每個網絡段只包含一對需要通信的服務。這就形成了服務細分的概念, 在這里我們管理對服務層的訪問。隨著服務級別的細分, 我們關注服務之間的交互, 而不管它們在網絡上的位置。如果您在像 Kubernetes 或Consul這樣的調度程序上運行應用程序, 利用覆蓋網絡是配置服務細分的常用方法。配置疊加比管理多個網絡路由和防火墻規則要簡單得多, 因為在應用程序位置發生變化時, 疊加通常會自動重新配置。我們需要考慮調度程序通常是更重要的基礎結構部署的一部分。
在這種情況下, 我們還需要考慮調度程序內部的應用程序如何與其他網絡服務通信。例如, 您有一個100節點群集, 一個應用程序實例需要與另一個網絡段中的服務進行對話。在調度程序中運行的應用程序可以在100個節點中的任何一個上運行。這使得確定哪些 IP 應該列入白名單是有挑戰性的。調度程序通常會動態地在節點之間移動應用程序, 這會導致一直產生更新路由和防火墻規則的需求。
現代環境由VMs、容器、無服務器功能、云數據存儲等組成。這種復雜的基礎結構對管理網絡安全構成了重大挑戰。
為了防火墻和路由規則配置網絡級安全性, 以及為了覆蓋網絡配置調度程序級別安全性有助于提高整個系統的安全性。但是, 我們必須在兩個獨立的區域中管理安全配置。在操作上, 我們還有兩種截然不同的方法來實現所需的配置。這兩個要求大大提高了管理應用程序安全性的系統復雜性和操作開銷。
這種復雜性的一個不幸的副作用可能是安全被放松了, 網絡分割被簡化為路由規則的塊, 而不是絕對地址。整個群集被允許路由, 而不僅僅是運行特定應用程序的節點。從服務的角度來看, 對本地網絡段應用太多的信任。從安全的角度來看, 這并不是最好的選擇, 因為增加了應用程序的攻擊面, 所以需要一種一致且集中的方法來管理和理解網絡和服務細分。
基于意向安全的服務細分
解決復雜性和提高網絡安全性的方法是, 刪除配置基于位置的安全規則的需要, 并移動到基于意向的模型。基于意向的安全性構建了有關標識而不是位置的規則。例如, 我們可以定義一個意向, 說明前端服務需要與付款服務通信。
通過意圖定義網絡分割可以緩解傳統網絡分割的復雜性, 并允許更嚴格地控制網絡安全規則。出于意向, 您在應用程序級別描述安全性, 而不是網絡位置級別。
例如, 如果我們有以下基礎結構:
為了啟用 "服務 A" 到 "服務 B" 通信, 我們需要在兩個段之間創建路由規則。必須創建防火墻規則, 以允許從 "服務 A" 實例進行訪問。
此配置總共有9條規則:
- 9x 服務 A 和服務 B 之間的防火墻規則
考慮當 "服務 A" 實例被替換時的影響, 并記住這不僅是由于失敗, 而且是持續集成。需要再次更新這些規則, 刪除的實例詳細信息將需要被刪除, 并添加新的實例詳細信息。
現在考慮通過基于意向的安全性來控制路由的方法。
此配置將導致單個意圖:
- "服務 A" ?? "服務 B",
更改運行實例的比例或位置不會更改該簡單規則。
使用服務網格可以實現基于意向的安全性。服務網格由一個中央控制平面組成, 它允許您通過使用意向而不是網絡位置來集中配置網絡和服務細分, 并且數據平面提供路由和服務發現。這兩個組件一起幾乎可以完全替換復雜路由和防火墻規則的要求。
使用基于身份的授權, 數據平面只允許由這些意圖定義的服務之間的通信, 而且由于意圖是由控制平面集中管理的, 因此單個更新會重新配置整個網絡。
意圖對傳統網絡分割的好處
服務意圖大大簡化了為服務通信提供安全服務的方法。無論我們的應用程序是在虛擬機中運行, 還是在調度程序上, 或者是云管理的數據存儲區, 我們都可以采取集中的方法。
由于服務網格中的所有通信都是代理的, 所以網絡路由規則被大大簡化。可以將通信流限制為單個端口的端口, 或非常窄的范圍和主機級防火墻, 只需要將其配置為允許在已知的代理端口上進行侵入。
在服務網格中, 連接通過相互 TLS 進行身份驗證, 因此即使無管理應用程序獲得對網絡的訪問權, 如果沒有有效的標識和身份驗證, 它將無法與在主機上運行的開放代理端口通信。
最后, 使用單一的集中規則定義服務安全性的概念更簡單, 更易于實現。
我們認為, 服務細分是確保數據中心安全的重要步驟, 特別是在現代云環境中。我們最近引入了 "Consul Connect", 它增加了對Consul的分割能力, 使其成為一個完整的服務網格。你可以在這里閱讀關于這一聲明的更多信息https://www.hashicorp.com/blog/consul-1-2-service-mesh, 了解更多關于Consul的信息在這里https://www.consul.io/.
--------------------- 本文來自 HashiCorpChina 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/HashiCorpChina/article/details/82813580?utm_source=copy
總結
以上是生活随笔為你收集整理的现代环境下的网络分割的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 跨域问题的前后端解决方案
- 下一篇: GO 语言websocket编程
