安全 Graphite 安装

安全 Graphite 安装

我想我在这里误解了一些东西。我已经安装了带有 Docker 的 Graphite(sitespeedio/graphite),并为 Web 面板设置了基本身份验证。我打开了端口 2003 的防火墙,以便从其他服务器获取数据点,它运行良好。

但是没有身份验证/授权。甚至我用来发送一些测试的python库也不允许设置密码、令牌或其他身份验证机制。

如何保护我的 Graphite 安装?

答案1

我认为可能存在误解(很可能是我本人的错误):您似乎在谈论两个不同的组件。

第一个是石墨(https://graphite.readthedocs.io/en/latest/install.html):

Graphite 使用 Cairo 图形库渲染图形

换句话说,虽然我们通常将整个设置称为石墨,但石墨实际上是碳存储数据的数据库(Whisper 或 Ceres)的前端。

正如您所说,Basic-Auth 适用于 graphite 提供的 Web 界面,特别是渲染 API(更一般地说,是 graphite 进程/守护进程通过 HTTP 提供的服务)。

为了实现这一点(一般来说 - 我不知道你的具体情况的详细信息),你可以检查这个问题:Graphiti / Graphite 使用 Apache 的 Proxy 和 BasicAuth 请求对每个 URL / 请求进行身份验证- 他们有相反的问题,他们不断进行身份验证(并回答为什么会这样)。

他们提供了完整的配置,但一般来说,以下块才是最重要的:

 <Location "/">
          require valid-user
          order allow,deny
          Allow from all
          AuthType Basic
          AuthName "Stats"
          AuthBasicProvider file
          AuthUserFile /etc/passwd_lp
  </Location>

但是,您还提到了端口 2003,它与任何 Web API 或页面都无关。

端口 2003 被 carbon-cache(或 carbon-relay)用于接收度量数据。

https://graphite.readthedocs.io/en/latest/carbon-daemons.html

carbon-cache.py 通过各种协议接受指标,并尽可能高效地将其写入磁盘

它不使用 HTTP,这就是 Basic-Auth 不起作用的原因。

我不确定确保碳排放的最佳实践或惯例是什么,但我一直认为这首先是限制对服务(即港口)的访问的问题。

您可以在度量源和 carbon-cache 之间添加一个使用 HTTP 的层,以便为其设置基本身份验证。

您还可以添加类似 HAProxy 的东西来执行 SSL 终止和客户端验证,但我不确定让度量源使用 SSL/TLS 有多么容易。

相关内容