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作转换了。

相关文章
相关标签/搜索