如何实现Grafana图表iframe仅允许受信任域名访问
Grafana原生限制iframe嵌入权限解决方案
以下方案均无需额外搭建反向代理,直接修改Grafana服务配置即可生效:
1. 配置允许嵌入的源域名
修改Grafana配置文件(通常为conf/custom.ini)中[security]小节的参数:
- 配置
allowed_origins参数,填入你的应用域名,多个域名用空格分隔,支持通配符:
[security] allowed_origins = https://your-app.com https://*.your-app.com
该参数会控制Grafana接受的跨域请求源,同时会自动生成对应的X-Frame-Options响应头,拦截非白名单域名的嵌入请求。
2. 配置内容安全策略(CSP)强化限制
如果需要更严格的iframe嵌入控制,可以启用Grafana的CSP配置,同样在[security]小节添加:
[security] content_security_policy = true content_security_policy_template = "frame-ancestors 'self' https://your-app.com; default-src 'self' 'unsafe-inline' 'unsafe-eval' data:; img-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"
其中frame-ancestors字段指定的就是允许嵌入Grafana页面的站点域名,浏览器会强制遵守该规则,拦截所有非白名单域名的嵌入行为,优先级高于X-Frame-Options头。
3. 新增用户级鉴权控制
如果需要进一步限制只有你的应用登录用户才能访问嵌入的Grafana图表,可以配合Grafana的短期令牌机制:
- 在Grafana中创建权限最小化的服务账号,仅开放对应仪表板的查看权限
- 你的应用后端在用户登录后,调用Grafana接口生成有效期可控的短期访问令牌
- 将令牌拼接至iframe的Grafana地址中,示例:
https://grafana.your-domain.com/d/xxxx?orgId=1&auth_token=eyJrIjoiXXX - 令牌到期后自动失效,即使第三方站点窃取到iframe地址也无法正常访问内容
配置修改完成后重启Grafana服务即可生效,你可以通过浏览器开发者工具的「网络」面板查看Grafana响应头,确认配置是否正确应用。
内容的提问来源于stack exchange,提问作者josip
相关产品推荐
相关产品推荐

