如何配置Grafana限制用户仅查看所属组织的Prometheus数据?
完全可以通过Grafana配置结合Prometheus的标签过滤,实现各组织用户仅查看所属团队的指标,具体操作步骤如下:
为每个团队配置专属的Prometheus数据源
在Grafana的每个组织(Org A、Org B)中,单独创建Prometheus数据源,并在数据源层面添加固定标签过滤规则。比如针对Team A的数据源,在Prometheus查询配置里默认追加job=~"Team A.*"的过滤条件,确保该数据源仅返回Team A相关的指标。
操作细节:进入对应组织的数据源设置,在"Query Options"中设置默认查询参数,或者通过Prometheus联邦查询、remote_read功能预先过滤出对应团队的指标,再让Grafana对接这个已过滤的数据源。严格管控数据源的跨组织访问权限
确保每个组织的专属数据源仅对本组织用户开放。进入Grafana的数据源权限设置页面,移除其他组织用户/用户组的访问权限,只保留当前组织的用户组权限,避免跨组织访问其他团队的数据源。优化:用Grafana变量固化团队过滤规则(可选)
在各组织的仪表盘中定义与团队绑定的变量(比如$team),默认值设为当前组织对应的团队名称,然后在所有面板的查询语句中自动带上job=~"$team.*"的过滤条件,防止用户手动修改查询语句跨团队访问指标。
注意:单纯依赖Grafana的组织隔离无法实现数据层面的隔离,必须在数据源层面做指标过滤,确保每个组织的数据源仅能获取到自身团队的指标;同时要限制普通用户修改数据源的权限,避免过滤规则被篡改。
内容的提问来源于stack exchange,提问作者joker57

