通过API Key鉴权方式生成免登录的可分享的大盘链接。
背景信息
原生的Grafana若需要直接访问大盘,要么使用Snapshot功能,要么开启匿名模式。前者对访问的数据做了镜像,随着时间变化无法查看后续更新的数据,后者若不配合IP白名单功能,则安全性较差。
可观测可视化 Grafana 版支持通过API Key鉴权方式生成免登录的可分享的大盘链接。
您可以将其分享给其他用户。
使用这个链接的用户将能够访问指定的大盘而无需登录,因为鉴权是通过API Key完成的。
步骤一:配置Grafana参数
登录可观测可视化 Grafana 版控制台,在左侧导航栏单击工作区管理。
在工作区管理页面,单击目标工作区ID。
在左侧导航栏单击参数设置。
在左侧参数列表选择aliyun,然后单击修改参数。
修改api_key_share参数的运行参数为true,然后单击保存并生效。
可选:若期望链接用于iFrame内嵌,则需要额外调整以下参数。
跨域情况下
域名需为HTTPS,并修改以下3个security参数。
allow_embedding=true cookie_samesite=none cookie_secure=true
未跨域情况下
修改security下的allow_embedding参数为true,开启iFrame内嵌即可。
步骤二:创建API Key
Grafana 9.0.x和Grafana 10.0.x版本创建API Key的步骤有所不同,请确认您的Grafana版本并选择对应的操作步骤。
如果您的Grafana是从9.0.x升级到10.0.x版本,那么在Administration > api keys页面依然可以看到Grafana 9.0.x中创建的API Key。此时,单击migrate to service account可以将原有的API Key迁移到Service Account,迁移完成后api keys页面将会被永久隐藏。此外,版本升级不会影响原有API Key的使用。
Grafana 9.0.x版本
登录可观测可视化 Grafana 版控制台,在左侧导航栏单击工作区管理。
在工作区管理页面,单击目标工作区右侧的访问地址URL链接进入Grafana。
说明如果需要登录Grafana,可以使用Grafana的Admin账号和创建工作区时设置的密码登录Grafana,或单击Sign in with Alibaba Cloud直接使用当前购买工作区的阿里云账号登录Grafana。
单击Grafana首页左上角的图标。
在Grafana左侧导航栏选择
。说明进入该菜单需要Admin权限。
单击New API key或Add API key,然后设置以下参数。
参数
说明
Key name
API Key的名称,不可以和已有的名称重复。
Role
设置为Viewer。
Time to live
设置有效时间,例如60s(60秒)、10m(10分钟)、1d(1天)。
单击Add,在弹出的对话框中获取并保存API Key的值。
重要对话框关闭后将无法再次查看API Key的值。
Grafana 10.0.x版本
登录可观测可视化 Grafana 版控制台,在左侧导航栏单击工作区管理。
在工作区管理页面,单击目标工作区右侧的访问地址URL链接进入Grafana。
说明如果需要登录Grafana,可以使用Grafana的Admin账号和创建工作区时设置的密码登录Grafana,或单击Sign in with Alibaba Cloud直接使用当前购买工作区的阿里云账号登录Grafana。
单击Grafana首页左上角的图标。
在Grafana左侧导航栏选择
。重要进入该菜单需要Admin权限。
服务账号会占用一个用户账号。
单击Add service account,然后设置以下参数,然后单击Create。
参数
说明
Display name
Service Account的名称,不可以和已有的名称重复。
Role
设置为Viewer。
单击页面右侧的Add service account token,然后设置以下参数。
参数
说明
Display name
API Key的名称,不可以和已有的名称重复。
Expiration
设置有效时间,
No Expiration:无终止日期
Set Expiration date:设置有效期
Expiration date
如果在Expiration中选择Set Expiration date,则您需要设置有效期的截止日。
单击Generate token,然后在弹出的对话框单击Copy to clipboard and close。
对话框关闭后将无法再次查看API Key的值。
步骤三:生成分享链接
Grafana 9.0.x版本
在Grafana页面,进入需要分享的大盘页面。
单击图标,在Link页签获取大盘分享链接。
在链接最后添加
&aliyun_api_key=<API Key值>
,API Key值为上文步骤二中获取的API Key。https://grafana-example.grafana.aliyuncs.com/d/TZWea****/test?orgId=1&from=167081684****&to=167083844****&aliyun_api_key=eyJrIjoiWkIwNnN2c0RTSD******
使用带有API Key的分享链接即可免登录访问Grafana大盘。
Grafana 10.0.x版本
在Grafana页面,进入需要分享的大盘页面。
单击图标,在链接页签获取大盘分享链接。
在链接最后添加
&aliyun_api_key=<API Key值>
,API Key值为上文步骤二中获取的API Key。https://grafana-example.grafana.aliyuncs.com/d/TZWea****/test?orgId=1&from=167081684****&to=167083844****&aliyun_api_key=eyJrIjoiWkIwNnN2c0RTSD******
使用带有API Key的分享链接即可免登录访问Grafana大盘。
常见问题
通过共享连接访问大盘时页面报错如下:
可能原因:内嵌大盘情况下,allow_embedding参数未设置。配置allow_embedding参数的操作,请参见上文步骤一。
无法显示大盘数据。
内嵌大盘情况下,Cookie无法写入导致,可能原因如下:
跨域,即根域名不同时,默认配置无法写入Cookie。
cookie_samesite参数设置为none,但是cookie_secure参数设置为false。
域名为HTTP。由于cookie_secure参数无法在HTTP下生效,因此域名不支持HTTP。
解决方案:参考上文步骤一重新配置Grafana参数。
通过共享连接访问大盘时页面报错如下:
可能原因:
浏览器版本过低。
内嵌大盘的情况下浏览器配置导致。
解决方案:
查看Cookie使用的配置,允许使用Cookie。
若使用Chrome浏览器,在无痕模式下需要配置允许所有Cookie。
如果用于大盘内嵌,API Key建议是设置较短的有效时间使用一次就更换,还是配置一个很长时间的免登Key?
您可以根据安全需要做配置,建议3个月换一次,若Key泄露可以通过删除让Key失效。
API Key是否有数量上限?
Key的创建官方源码里并没有做限制,由于页面查询时最多展示100条,建议不要超过100个。
API Key配置的有效时间到期了,这个API Key会自动删除吗?
Key失效后,数据仍然存在,如果担心占用数量您可以手动删除Key。Grafana页面上失效的Key默认不展示,您可以单击Include expired keys显示已失效Key,然后删除。