中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何通過Kubernetes網絡策略進行應用程序微分段

發布時間:2021-12-16 10:52:52 來源:億速云 閱讀:157 作者:柒染 欄目:互聯網科技

如何通過Kubernetes網絡策略進行應用程序微分段,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。


在大多數生產環境中,需要實施網絡訪問控制。Kubernetes提供了一種方法來描述Pod 組應該如何通過使用NetworkPolicy資源進行通信。
與Kubernetes中的大多數事情一樣,要使網絡策略正常運行,您需要一個支持它們的Kubernetes CNI插件。

使用場景

在幾乎所有環境中,為應用程序需要通信的組件建立明確的規則,都是一個好主意。Kubernetes網絡策略規范是一種直接的方法,可讓您將NetworkPolicy直接與應用程序清單集成在一起。
NetworkPolicy定義資源的方式,使您可以精確地指定哪些網絡通信是被允許的,而哪些則不允許,同時使用podSelector定義處理在Kubernetes上運行的應用程序的動態屬性。
這意味著您的策略可以針對單個Pod或Pod組,從而將安全范圍“縮小”到Pod的大小。
嚴格定義的網絡策略與default-deny配置相結合,可以避免由于惡意應用程序入侵,和/或行為不當,或者配置錯誤而造成的麻煩。例如,一個應用程序組件可能具有滯留的緩存DNS條目或錯誤的配置參數,導致它與錯誤的后端進行通信。或者應用程序可能會被攻陷并被用作跳板,執行偵查,嘗試橫向滲透,或者只是使用Pod對Kubernetes API的訪問權限來啟動一些加密貨幣挖礦Pod,以竊取您的計算資源。

使用網絡策略保護示例應用程序的安全

網絡策略設計的主題比本指南中允許的空間要大得多。在此示例中,我們將執行以下操作:
  • 為我們的default命名空間創建一個default-deny Ingress策略。這意味著命名空間內的所有傳入Pods的連接必須明確被允許;

  • 為每個示例應用程序組件創建一個Ingress NetworkPolicy對象,僅允許那些我們確定的對象。


步驟1:明確哪些組件應當可以相互通信

首先,我們需要提醒自己,應用程序的各個組件應該如何通信。為此,我們將回到在簡介中看到的應用程序圖:

如何通過Kubernetes網絡策略進行應用程序微分段


從該圖中可以看到:
1. 外界需要到達yelb-ui的TCP端口80-(1)和(2)
2. yelb-ui需要到達yelb-appserver的TCP端口4567
3. yelb-appserver反過來將需要到達yelb-db的TCP端口5432,以及
4. .. yelb-cache的TCP端口6379。

步驟2:如何識別組件?

請記住,NetworkPolicy資源使用選擇器來識別策略適用于哪個Pod,以及該策略將要控制的流量的源和目的地是什么。
在本演示中,我們將使用podSelectror方法,因此需要獲取應用到應用程序Pod的標簽列表。讓我們查看cnawebapp-loadbalancer.yaml示例應用程序的清單,并收集標簽:
如何通過Kubernetes網絡策略進行應用程序微分段

現在準備編寫我們的策略。

部署后,這些策略將以以下方式控制應用程序組件之間的通信:
如何通過Kubernetes網絡策略進行應用程序微分段

步驟3:“default-deny”策略

確保您位于沙箱控制節點上,以root用戶身份登錄,并且位于正確的目錄中:
# 確認您是root賬戶
whoami | grep root || sudo -s

# 切換到清單目錄

cd /home/centos/yelb/deployments/platformdeployment/Kubernetes/yaml

在此步驟中,我們將創建一個策略,該策略將阻止所有未明確允許的網絡通信。在這一演示中,我們將只限制Ingress流量;但實際上,您也可以控制Egress流量(但是這樣做時要注意這可能會阻止DNS查詢!):

如何通過Kubernetes網絡策略進行應用程序微分段


該策略基本上說:“對于任何Pod,都應用一個沒有規則的Ingress策略”,這將導致應用這個策略的,所有流向這個命名空間Pods的傳入流量被丟棄掉。

步驟4:“yelb-ui”的策略

該yelb-ui和其他組件在某種意義上說有一些不同,因為它是唯一一個可以被從外部訪問的組件。因此,其ingress:定義將使用ipBlock的0.0.0.0/0,以表示“每個人”:

如何通過Kubernetes網絡策略進行應用程序微分段


該策略表示:“對于具有應用標簽app: yelb-ui和tier: frontend的Pods,允許傳入來自任何源IP的流量,只要它去往Pod的TCP端口80”。

步驟5:示例應用中其他Pod的策略

我們示例應用程序中的其他3個Pod僅會看到來自其他Pod的流量,因此其策略將使用帶有允許發送流量的Pod標簽的podSelector參數:
 

如何通過Kubernetes網絡策略進行應用程序微分段

如何通過Kubernetes網絡策略進行應用程序微分段

如何通過Kubernetes網絡策略進行應用程序微分段


步驟6:在應用策略之前測試

為了能有一個“前后”對比,讓我們部署示例應用程序并獲取基線:

# 部署我們的應用

kubectl create -f cnawebapp-loadbalancer.yaml

等待應用啟動并在外部可用:
# 獲得我們程序yelb-ui Service的外部DNS名字:
kubectl get svc -o wide | grep yelb-ui | awk '{print $4}'
我們應該可以看到類似a0b8dfc14916811e9b411026463a4a33-1258487840.us-west-1.elb.amazonaws.com的輸出;在網絡瀏覽器中打開它;樣本應用程序應當加載了。
接下來,我們知道所有Pod通信都是不受限制的,因此我們應該能夠從yelb-ui ping 到yelb-db——這是在應用程序正常運行且我們不進行故障排除動作的情況下,本來不應該發生的活動:

# 獲得"yelb-ui"的完整Pod名字

src_pod=$(kubectl get pods | grep yelb-ui | awk '{print $1}')

# 獲得"yelb-db"的IP:

db_pod_ip=$(kubectl get pods -o wide | grep yelb-db | awk '{print $6}')

#  從"yelb-ui" ping"yelb-db":

kubectl exec -it ${src_pod} ping ${db_pod_ip}


我們應該看到該ping命令正在接收響應;因此存在不受限制的網絡連接。按^ C停止命令。

步驟7:部署策略并測試結果

在最后一步,我們將部署策略并觀察其效果:
# 部署網絡策略

kubectl create -f yelb-policy.yaml

運行上面的命令后,請等待幾秒鐘以穩定下來。Tungsten Fabric將在后臺生成適當的安全組,并進行安裝。讓我們測試一下我們曾經可以正常運行的ping命令是否仍然有效:
# 從"yelb-ui" ping "yelb-db" again:

kubectl exec -it ${src_pod} ping ${db_pod_ip}

這次,我們看到沒有響應,因為該通信現在已被該策略阻止。接下來,測試是否仍可以通過網絡瀏覽器訪問該應用——應該可以!

步驟8:探索Tungsten Fabric的安全流量組可視化

Tungsten Fabric包含一個功能,可在“項目”中實現流量可視化,在我們的案例中,該項目對應于Kubernetes Namespace。
要訪問它,請訪問Carbide Evaluation Page鏈接,用于獲取訪問沙箱控制節點——在頂部有一個名為Contrail UI的鏈接,完成login和password的輸入。單擊鏈接,然后在左上角單擊“Monitor”圖標,然后在菜單中單擊“Security” -> “Traffic Groups”。然后在頂部的標簽鏈,在其末尾選擇“k8s-default”:
如何通過Kubernetes網絡策略進行應用程序微分段
您應該看到類似于以下的圖表:
如何通過Kubernetes網絡策略進行應用程序微分段

繼續測試。您看到的流,代表示例應用程序在做的事情,包括無法從 yelb-uiping到yelb-db,以及yelb-appserver的出站請求(如果我們去查看,將轉到yelb-db的DNS查詢)。

清理

一旦進行了足夠的探索,可以隨時清理:
# 卸載Network Policy

kubectl delete -f yelb-policy.yaml

# 刪除我們的示例應用程序:

kubectl delete -f cnawebapp-loadbalancer.yaml

# 刪除策略清單:
rm -f yelb-policy.yaml

回顧和資源

對于許多(即使不是全部)生產部署,控制應用程序的網絡通信能力至關重要。在Kubernetes上運行的應用程序實現此類控件的方法是通過NetwokPolicy資源。但是,要使這些資源真正起作用,您需要一個支持它們的CNI插件。
Tungsten Fabric提供了完整的NetworkPolicy支持,無論集成Tungsten Fabric的Kubernetes在哪里運行,是在私有數據中心,還是在公共云中。
網絡策略可以變得非常簡單或非常復雜,而找出最適合您的應用程序的最佳方法,就是在我們提供的用例和示例基礎上更深入地研究。

關于如何通過Kubernetes網絡策略進行應用程序微分段問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉首市| 镇康县| 潜江市| 宁蒗| 元氏县| 乌海市| 阳高县| 皮山县| 莱州市| 廊坊市| 佛山市| 布尔津县| 韶关市| 华阴市| 赤水市| 江城| 秦皇岛市| 武隆县| 治多县| 永年县| 盐源县| 闸北区| 丹巴县| 专栏| 阜城县| 南漳县| 湾仔区| 开封市| 抚顺县| 池州市| 津南区| 桂林市| 六安市| 莫力| 苍山县| 冷水江市| 油尖旺区| 庆云县| 宣汉县| 盱眙县| 赫章县|