我想我在这里误解了一些东西。 我已经用Docker(sitespeedio / graphite)安装了Graphite,并为Web-Panel设置了一个Basic Auth。 我打开端口2003的防火墙来从其他服务器的数据点,它工作正常。
但是没有authentication/授权。 即使我用来发送一些testing的python lib也不允许设置密码,令牌或其他authentication机制。
如何保护我的Graphite安装?
我想可能会有一个误解(很有可能是我),你似乎在谈论两个不同的组成部分。
首先是Graphite( https://graphite.readthedocs.io/en/latest/install.html ):
Graphite使用Cairographics库呈现graphics
换句话说,虽然我们通常把整个设置的石墨称为石墨,但石墨实际上是数据库碳储存数据的前端(Whisper或Ceres)。
如您所说,基本authentication是针对石墨提供的Web界面,特别是渲染API(更一般地说,石墨进程/守护进程通过HTTP提供的服务)。
要做到这一点(通常 – 我不知道你的具体情况的细节),你可以检查这个问题: Graphiti / Graphite使用Apache与代理和BasicAuth请求每个URL /请求身份validation – 他们有相反的问题他们必须不断地进行authentication(以及为什么会这样做的答案)。
他们提供完整的configuration,但一般来说,以下块是重要的:
<Location "/"> require valid-user order allow,deny Allow from all AuthType Basic AuthName "Stats" AuthBasicProvider file AuthUserFile /etc/passwd_lp </Location>
但是,您还提到了与任何Web API或页面无关的端口2003。
端口2003被碳caching(或碳中继)用来接收度量数据。
根据https://graphite.readthedocs.io/en/latest/carbon-daemons.html :
carbon-cache.py接受各种协议的指标,并尽可能高效地写入磁盘
它不使用HTTP,这就是为什么Basic-Auth不起作用。
我不确定最佳做法或惯例是为了保证碳排放,但是我始终认为这首先是限制进入服务(即港口)的问题。
您可以在度量标准源和碳caching之间添加一个发送HTTP的图层,以便为其设置基本身份validation。
您也可以添加像HAProxy做SSL终止和客户端validation的东西,但我不确定使度量标准源首先使用SSL / TLS是多么容易。