Grafana 鉴权 使用 Nginx 和 Grafana API Key 实现无感登录

 

Grafana 是一个流行的开源分析和监控平台,用于可视化时间序列数据,Grafana 提供了多种身份验证方式,其中之一是通过 API 密钥
API密钥 是一种基于令牌的身份验证方法,通常用于系统与系统之间的交互。它是一种有效的方法来实现自动化访问,而无需人工干预,例如,我们要将服务器的状态信息展现给其他用户,我们可以利用 Nginx 作为反向代理,通过在请求中自动添加密钥,实现对 Grafana 的无感登录。
Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,它能够处理大量并发连接。通过配置 Nginx,可以在反向代理请求时注入API密钥,从而绕过传统的登录界面,实现无感登录的效果。

1. 生成 Grafana API Key

首先,需要在 Grafana 中生成一个 API Key。
create-api-key
在这里我们可以配置API的名称、权限,以及过期时间
configure

温馨提示
生成的API密钥只会显示一次,请妥善管理

2. 配置Nginx

接下来,需要使用Nginx配置反向代理,添加grafana 的api密钥到请求头部

location / {
        proxy_pass http://10.0.81.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        # 添加 api key 到请求头
        proxy_set_header Authorization "Bearer abcdefg123456";  # 替换为你的API Key
    }
}

保存配置文件后,测试 Nginx 配置是否正确并重启

nginx -t
sudo systemctl restart nginx

3. 安全性注意事项

虽然这种方法简化了登录过程,但也存在安全风险。在使用 API Key 时,建议使用nginx的 allow 或者deny来限制访问来源IP,如果要暴露在公共网络中建议定期轮转API KEY 防止长期使用导致安全问题。

限制来源:

location / {
    allow x.x.x.x/x;  # 允许特定子网访问
    deny all;  # 禁止其他所有IP
}
评论区
头像
文章目录