如何通過(guò)Kubernetes網(wǎng)絡(luò)策略進(jìn)行應(yīng)用程序微分段,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計(jì),瑤海網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:瑤海等地區(qū)?,幒W鼍W(wǎng)站價(jià)格咨詢:18982081108
在大多數(shù)生產(chǎn)環(huán)境中,需要實(shí)施網(wǎng)絡(luò)訪問(wèn)控制。Kubernetes提供了一種方法來(lái)描述Pod 組應(yīng)該如何通過(guò)使用NetworkPolicy資源進(jìn)行通信。與Kubernetes中的大多數(shù)事情一樣,要使網(wǎng)絡(luò)策略正常運(yùn)行,您需要一個(gè)支持它們的Kubernetes CNI插件。在幾乎所有環(huán)境中,為應(yīng)用程序需要通信的組件建立明確的規(guī)則,都是一個(gè)好主意。Kubernetes網(wǎng)絡(luò)策略規(guī)范是一種直接的方法,可讓您將NetworkPolicy直接與應(yīng)用程序清單集成在一起。NetworkPolicy定義資源的方式,使您可以精確地指定哪些網(wǎng)絡(luò)通信是被允許的,而哪些則不允許,同時(shí)使用podSelector定義處理在Kubernetes上運(yùn)行的應(yīng)用程序的動(dòng)態(tài)屬性。這意味著您的策略可以針對(duì)單個(gè)Pod或Pod組,從而將安全范圍“縮小”到Pod的大小。嚴(yán)格定義的網(wǎng)絡(luò)策略與default-deny配置相結(jié)合,可以避免由于惡意應(yīng)用程序入侵,和/或行為不當(dāng),或者配置錯(cuò)誤而造成的麻煩。例如,一個(gè)應(yīng)用程序組件可能具有滯留的緩存DNS條目或錯(cuò)誤的配置參數(shù),導(dǎo)致它與錯(cuò)誤的后端進(jìn)行通信。或者應(yīng)用程序可能會(huì)被攻陷并被用作跳板,執(zhí)行偵查,嘗試橫向滲透,或者只是使用Pod對(duì)Kubernetes API的訪問(wèn)權(quán)限來(lái)啟動(dòng)一些加密貨幣挖礦Pod,以竊取您的計(jì)算資源。使用網(wǎng)絡(luò)策略保護(hù)示例應(yīng)用程序的安全
網(wǎng)絡(luò)策略設(shè)計(jì)的主題比本指南中允許的空間要大得多。在此示例中,我們將執(zhí)行以下操作:步驟1:明確哪些組件應(yīng)當(dāng)可以相互通信
首先,我們需要提醒自己,應(yīng)用程序的各個(gè)組件應(yīng)該如何通信。為此,我們將回到在簡(jiǎn)介中看到的應(yīng)用程序圖:
1. 外界需要到達(dá)yelb-ui的TCP端口80-(1)和(2)2. yelb-ui需要到達(dá)yelb-appserver的TCP端口45673. yelb-appserver反過(guò)來(lái)將需要到達(dá)yelb-db的TCP端口5432,以及4. .. yelb-cache的TCP端口6379。請(qǐng)記住,NetworkPolicy資源使用選擇器來(lái)識(shí)別策略適用于哪個(gè)Pod,以及該策略將要控制的流量的源和目的地是什么。在本演示中,我們將使用podSelectror方法,因此需要獲取應(yīng)用到應(yīng)用程序Pod的標(biāo)簽列表。讓我們查看cnawebapp-loadbalancer.yaml示例應(yīng)用程序的清單,并收集標(biāo)簽:現(xiàn)在準(zhǔn)備編寫我們的策略。
部署后,這些策略將以以下方式控制應(yīng)用程序組件之間的通信:確保您位于沙箱控制節(jié)點(diǎn)上,以root用戶身份登錄,并且位于正確的目錄中:whoami | grep root || sudo -s
cd /home/centos/yelb/deployments/platformdeployment/Kubernetes/yaml
在此步驟中,我們將創(chuàng)建一個(gè)策略,該策略將阻止所有未明確允許的網(wǎng)絡(luò)通信。在這一演示中,我們將只限制Ingress流量;但實(shí)際上,您也可以控制Egress流量(但是這樣做時(shí)要注意這可能會(huì)阻止DNS查詢?。?/p>

該策略基本上說(shuō):“對(duì)于任何Pod,都應(yīng)用一個(gè)沒(méi)有規(guī)則的Ingress策略”,這將導(dǎo)致應(yīng)用這個(gè)策略的,所有流向這個(gè)命名空間Pods的傳入流量被丟棄掉。該yelb-ui和其他組件在某種意義上說(shuō)有一些不同,因?yàn)樗俏ㄒ灰粋€(gè)可以被從外部訪問(wèn)的組件。因此,其ingress:定義將使用ipBlock的0.0.0.0/0,以表示“每個(gè)人”:
該策略表示:“對(duì)于具有應(yīng)用標(biāo)簽app: yelb-ui和tier: frontend的Pods,允許傳入來(lái)自任何源IP的流量,只要它去往Pod的TCP端口80”。我們示例應(yīng)用程序中的其他3個(gè)Pod僅會(huì)看到來(lái)自其他Pod的流量,因此其策略將使用帶有允許發(fā)送流量的Pod標(biāo)簽的podSelector參數(shù):為了能有一個(gè)“前后”對(duì)比,讓我們部署示例應(yīng)用程序并獲取基線:kubectl create -f cnawebapp-loadbalancer.yaml
等待應(yīng)用啟動(dòng)并在外部可用:# 獲得我們程序yelb-ui Service的外部DNS名字:kubectl get svc -o wide | grep yelb-ui | awk '{print $4}'
我們應(yīng)該可以看到類似a0b8dfc14916811e9b411026463a4a33-1258487840.us-west-1.elb.amazonaws.com的輸出;在網(wǎng)絡(luò)瀏覽器中打開它;樣本應(yīng)用程序應(yīng)當(dāng)加載了。
接下來(lái),我們知道所有Pod通信都是不受限制的,因此我們應(yīng)該能夠從yelb-ui ping 到y(tǒng)elb-db——這是在應(yīng)用程序正常運(yùn)行且我們不進(jìn)行故障排除動(dòng)作的情況下,本來(lái)不應(yīng)該發(fā)生的活動(dòng):# 獲得"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}
我們應(yīng)該看到該ping命令正在接收響應(yīng);因此存在不受限制的網(wǎng)絡(luò)連接。按^ C停止命令。kubectl create -f yelb-policy.yaml
運(yùn)行上面的命令后,請(qǐng)等待幾秒鐘以穩(wěn)定下來(lái)。Tungsten Fabric將在后臺(tái)生成適當(dāng)?shù)陌踩M,并進(jìn)行安裝。讓我們測(cè)試一下我們?cè)?jīng)可以正常運(yùn)行的ping命令是否仍然有效:# 從"yelb-ui" ping "yelb-db" again:
kubectl exec -it ${src_pod} ping ${db_pod_ip}
這次,我們看到?jīng)]有響應(yīng),因?yàn)樵撏ㄐ努F(xiàn)在已被該策略阻止。接下來(lái),測(cè)試是否仍可以通過(guò)網(wǎng)絡(luò)瀏覽器訪問(wèn)該應(yīng)用——應(yīng)該可以!步驟8:探索Tungsten Fabric的安全流量組可視化
Tungsten Fabric包含一個(gè)功能,可在“項(xiàng)目”中實(shí)現(xiàn)流量可視化,在我們的案例中,該項(xiàng)目對(duì)應(yīng)于Kubernetes Namespace。要訪問(wèn)它,請(qǐng)?jiān)L問(wèn)Carbide Evaluation Page鏈接,用于獲取訪問(wèn)沙箱控制節(jié)點(diǎn)——在頂部有一個(gè)名為Contrail UI的鏈接,完成login和password的輸入。單擊鏈接,然后在左上角單擊“Monitor”圖標(biāo),然后在菜單中單擊“Security” -> “Traffic Groups”。然后在頂部的標(biāo)簽鏈,在其末尾選擇“k8s-default”:繼續(xù)測(cè)試。您看到的流,代表示例應(yīng)用程序在做的事情,包括無(wú)法從 yelb-uiping到y(tǒng)elb-db,以及yelb-appserver的出站請(qǐng)求(如果我們?nèi)ゲ榭?,將轉(zhuǎn)到y(tǒng)elb-db的DNS查詢)。一旦進(jìn)行了足夠的探索,可以隨時(shí)清理:kubectl delete -f yelb-policy.yaml
kubectl delete -f cnawebapp-loadbalancer.yaml
對(duì)于許多(即使不是全部)生產(chǎn)部署,控制應(yīng)用程序的網(wǎng)絡(luò)通信能力至關(guān)重要。在Kubernetes上運(yùn)行的應(yīng)用程序?qū)崿F(xiàn)此類控件的方法是通過(guò)NetwokPolicy資源。但是,要使這些資源真正起作用,您需要一個(gè)支持它們的CNI插件。Tungsten Fabric提供了完整的NetworkPolicy支持,無(wú)論集成Tungsten Fabric的Kubernetes在哪里運(yùn)行,是在私有數(shù)據(jù)中心,還是在公共云中。網(wǎng)絡(luò)策略可以變得非常簡(jiǎn)單或非常復(fù)雜,而找出最適合您的應(yīng)用程序的最佳方法,就是在我們提供的用例和示例基礎(chǔ)上更深入地研究。關(guān)于如何通過(guò)Kubernetes網(wǎng)絡(luò)策略進(jìn)行應(yīng)用程序微分段問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
網(wǎng)頁(yè)標(biāo)題:如何通過(guò)Kubernetes網(wǎng)絡(luò)策略進(jìn)行應(yīng)用程序微分段
網(wǎng)頁(yè)網(wǎng)址:http://chinadenli.net/article30/jsejpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站維護(hù)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)站導(dǎo)航、用戶體驗(yàn)
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)