Azure容器監控部署(下)


 

上文已經基本完成了環境的搭建,prometheus可以以https的方式從node_exporter和cAdvisor上pull到數據,訪問grafana時也可以以https的方式訪問,安全性得到了一定的保障,但還存在一些問題,本節將繼續完善


 

一、分析與改進

目前架構為

VM1和VM2分別開啟兩端口向外暴露,在LB上開四個端口分別去對應VM1/VM2上的端口,

由prometheus去連接LB上的四個端口,從而獲取監控數據。

但是,LB上做的是NAT端口轉發,任何IP都可以去連接這個四個端口,並且無身份驗證,因此增加了安全風險

所以需要在LB上設定,僅可以運行prometheus的IP訪問這四個端口

可以訪問 https://LBIP:18008  https://LBIP:19101檢查是否可以訪問

【問題】在LB上無法限定某個特定IP訪問,因此需要借助NSG來實現

新方案

先介紹一下AZURE上的NSG:

NSG是網絡安全組,VM和網絡的連接、不同子網間的通信均可以通過NSG進行限制,介於VM 和 LB/NAT之間

我們可以利用NSG來對從LB來的流量做限定

應用到本方案中:為VM1/VM2添加NSG,NSG會對LB上任何端口轉發來的流量做限定

在NSG上開啟只允許某個特定IP訪問VM1/VM2上的指定端口即可實現。

二、實現步驟

1、在VM1/VM2所在的資源組中創建一個NSG

2、在NSG中添加 允許80和443端口的入站規則,保證原來的網站可以正常訪問

3、將VM1/VM2的網卡關聯到新創建的NSG中

4、檢查LB上的NAT入站規則的端口,18008/19101/28008/29101

5、在新創建的NSG上創建入站規則,只允許特定IP訪問VM1/VM2的特定端口

6、檢查prometheus是否可以連接node_exporter和cAdvisor

登陸grafana查詢各個節點狀態

顯示1證明連接正常

再去用其他任何IP訪問:

https://LBIP:19101

https://LBIP:18008

https://LBIP:29101

https://LBIP:28008

訪問失敗表示成功!

 

7、收尾

檢查prometheus server的NSG對外開放了哪些端口,最終只允許開放443端口,其余端口一律禁止!

 

【總結】

以上與prometheus相關的所有組件均是以http協議傳輸的,大大降低了它的安全性,為解決這個問題使用了如下方法:

1、prometheus與node_exporter和cAdvisor之間的數據傳輸使用了stunnel,先將收集到的數據轉成https,然后再傳輸。
2、grafana默認是http,使用nginx生成https的站點,當用戶訪問443端口時自動跳轉到grafana上
      由於LB不支持對特定IP的限定,因此增加了NSG對特定IP做限定,這樣一來,有且僅有prometheus server 可以訪問使得安全性有進一步增強

最后,我理解的正確的部署場景應當是:
業務機VM1/VM2和prometheus server三台虛機在一個NSG中,這三個虛機組成了一個局域網,外界是無法直接訪問其中任何一台的,只能通過Load Balance跳轉,然后在Load Balance上開一個端口用於以https的方式訪問grafana,由於prometheus node_exporter cAdvisor在局域網中,因此數據傳輸不存在安全性問題,這樣就可以不對http做轉換了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM