配置安全性
如果您在 Grafana 服务器或其本地网络内运行非 Grafana Web 服务,那么它们可能容易受到通过 Grafana 数据源代理或其他方法的攻击。
为防止此类攻击发生,我们建议您采取以下一项或多项预防措施。
限制数据源 URL 的 IP 地址/主机名
您可以配置 Grafana,使其仅允许某些 IP 地址或主机名用作数据源 URL,并通过 Grafana 数据源代理进行代理。请参考 data_source_proxy_whitelist 获取使用说明。
请求安全性
请求安全配置选项允许用户限制来自 Grafana 服务器的请求。它针对由用户生成的请求。有关更多信息,请参考 请求安全性。
注意
请求安全性功能在 Grafana Enterprise v7.4 及更高版本中可用。
防火墙规则
配置防火墙,限制 Grafana 向敏感的内部 Web 服务发出网络请求。
有许多可用的防火墙工具。请参考您特定安全工具的文档。例如,Linux 用户可以使用 iptables。
代理服务器
您可以要求 Grafana 发出的所有网络请求都必须通过代理服务器。
自托管反向代理选项包括但不限于:
限制 Viewer(查看者)的查询权限
拥有 Viewer(查看者)角色的用户可以在组织中任何可用的数据源中输入任何可能的查询,而不仅仅是用户拥有 Viewer 权限的仪表盘上定义的查询。
例如,在一个只有一个数据源、一个仪表盘和一个定义了一个查询的面板的 Grafana 实例中,您可能会认为 Viewer(查看者)只能看到该面板中定义的查询结果。实际上,Viewer 可以向数据源发送任何查询。使用像 curl 这样的命令行工具(还有很多其他工具),Viewer 可以向数据源发出自己的查询,并可能访问敏感数据。
为了解决此漏洞,您可以采用以下方式限制数据源查询访问:
- 创建多个数据源,并在数据源配置中添加一些限制(例如数据库名称或凭据),以限制访问。然后使用 数据源权限 企业版功能限制用户在 Grafana 中访问数据源。
- 创建一个单独的 Grafana 组织,并在该组织中创建一个单独的数据源。确保该数据源具有某些选项/用户/凭据设置,以限制对数据子集的访问。并非所有数据源都提供限制访问的选项。
启用仪表盘匿名访问的含义
当您在 Grafana 中启用匿名访问时,任何访客或用户无需登录即可作为 Viewer(查看者)使用 Grafana。本节列出了启用匿名访问的安全影响。
- 任何拥有 Viewer 角色可访问的仪表盘 URL 的人都可以访问该仪表盘。
- 除非仪表盘创建者将其对 所有 Viewer(查看者) 隐藏,否则新仪表盘是公开可用的。
- 任何对 Viewer 角色授予编辑或管理权限的仪表盘,任何人都可以编辑或删除。
- 任何人都可以调用 API 进行查看,并列出所有文件夹、仪表盘和数据源。
- 任何人都可以向配置了 Grafana 实例的任何数据源发起任意查询。