Azure容器監控部署(下)

 

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


 

1、分析與改進

目前架構爲nginx

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

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

可是,LB上作的是NAT端口轉發,任何IP均可以去鏈接這個四個端口,而且無身份驗證,所以增長了安全風險架構

因此須要在LB上設定,僅能夠運行prometheus的IP訪問這四個端口網站

能夠訪問 https://LBIP:18008  https://LBIP:19101檢查是否能夠訪問3d

【問題】在LB上沒法限定某個特定IP訪問,所以須要藉助NSG來實現server

新方案blog

先介紹一下AZURE上的NSG:網絡安全

NSG是網絡安全組,VM和網絡的鏈接、不一樣子網間的通訊都可以經過NSG進行限制,介於VM 和 LB/NAT之間

咱們能夠利用NSG來對從LB來的流量作限定

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

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

2、實現步驟

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

二、在NSG中添加 容許80和443端口的入站規則,保證原來的網站能夠正常訪問

三、將VM1/VM2的網卡關聯到新建立的NSG中

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

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

六、檢查prometheus是否能夠鏈接node_exporter和cAdvisor

登錄grafana查詢各個節點狀態

顯示1證實鏈接正常

再去用其餘任何IP訪問:

https://LBIP:19101

https://LBIP:18008

https://LBIP:29101

https://LBIP:28008

訪問失敗表示成功!

 

七、收尾

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

 

【總結】

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

一、prometheus與node_exporter和cAdvisor之間的數據傳輸使用了stunnel,先將收集到的數據轉成https,而後再傳輸。二、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作轉換了。

相關文章
相關標籤/搜索