上文已经基本完成了环境的搭建,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端口,其余端口一律禁止!
【总结】
1、在部署prometheus时,遇到了