安全石墨安装

Fu8*_*u86 6 authentication graphite

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

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

如何保护我的 Graphite 安装?

iwa*_*rue 4

我认为可能存在误解(很可能就我而言):您似乎在谈论两个不同的组件。

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

Graphite 使用 Cairo 图形库渲染图形

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

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

为了将其落实到位(通常 - 我不知道您的具体情况的详细信息),您可以检查这个问题:Graphiti / Graphite using Apache with Proxy and BasicAuth requests auth for every URL / request - 他们有相反的问题,其中他们必须不断地进行身份验证(并回答可能的原因)。

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

 <Location "/">
          require valid-user
          order allow,deny
          Allow from all
          AuthType Basic
          AuthName "Stats"
          AuthBasicProvider file
          AuthUserFile /etc/passwd_lp
  </Location>
Run Code Online (Sandbox Code Playgroud)

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

端口 2003 被 Carbon-cache(或 Carbon-relay)用来接收指标数据。

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

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

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

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

您可以在指标源和碳缓存之间添加一个使用 HTTP 的层,以便为其提供基本身份验证。

您还可以添加诸如 HAProxy 之类的东西来执行 SSL 终止和客户端验证,但我不确定让指标源首先使用 SSL/TLS 有多容易。