# 匿名限时分享

通过一条会过期的链接分享某一个仪表盘，不用给对方开账号。

最后校对于 2026-10-10

这页办完你会得到：一条会自动失效的链接，对方不用夜莺账号就能打开指定的那一个仪表盘； 到期之前你随时可以注销它。

## 1. 生成一条限时链接[​](#1-生成一条限时链接 "1. 生成一条限时链接的直接链接")

入口不在仪表盘详情页，而在列表页：**数据查询 → 仪表盘**，找到那一行， 点 **公开** 列里的铅笔图标。

弹窗里从上往下：

| 选项   | 说明                                                                   |
| ------ | ---------------------------------------------------------------------- |
| 公开   | 选 **公开**，下面才会出现类型                                          |
| 类型   | **匿名访问** / 登录访问 / 授权访问。要发给没有账号的人，选**匿名访问** |
| 备注   | 必填。一个板可能同时挂着好几条链接，没有备注就分不清该注销哪条         |
| 有效期 | 数字 + 单位（小时 / 天 / 月 / 年），默认 30 天                         |
| 主题   | 跟随系统 / 暗色 / 亮色。只影响复制出来的链接，不影响令牌本身           |

选中「匿名访问」后，弹窗下半部分展开「生成分享链接（匿名访问）」。填好备注和有效期， 点 **生成链接**。

如果这个仪表盘在库里还不是「公开 + 匿名访问」，会先弹一个确认框问你要不要一起改—— 确认后先保存公开设置，再签发链接。**不要跳过这一步**：链接一经签发就与公开设置无关， 公开设置不同步，列表里的「公开」列看不出这个板已经有对外链接了。

预期结果：下方表格里多出一行，含备注、链接、过期时间、创建人。链接长这样：

```
https://<你的夜莺地址>/dashboards/share/<仪表盘 id>?__token=<uuid>
```

## 2. 发出去之前自己验一遍[​](#2-发出去之前自己验一遍 "2. 发出去之前自己验一遍的直接链接")

用无痕窗口打开这条链接。应该直接渲染出仪表盘，**没有左侧菜单，也不跳登录页**。

跳到登录页说明令牌没生效——最常见的原因是复制时把 `?__token=...` 这段漏掉了。

## 3. 到期前提前注销[​](#3-到期前提前注销 "3. 到期前提前注销的直接链接")

回到同一个弹窗，在链接表格里点 **注销**，这条链接立刻失效，动作不可撤销。

已经过期的链接不会自动从表格里消失（显示「已过期」），可以顺手一起清掉。

## 链接持有者能做什么[​](#链接持有者能做什么 "链接持有者能做什么的直接链接")

能做的：

* 在有效期内免登录打开**这一个**仪表盘；
* 查询这个板引用到的数据源——面板里写死的数据源，加上「数据源」类型变量按类型 展开出来的同类数据源。

做不到的：

* **打开别的仪表盘。** 令牌绑死一个仪表盘 id，拿一条有效链接去开别的板会被直接拒绝， 哪怕那个板自己配了匿名访问。
* **碰板外的数据源。** 请求的数据源不在这个板的引用集合里就返回 403。
* **写任何东西。** SQL 类数据源在这条通道上被强制只读校验；代理透传只放行只读查询 端点（`/api/v1/query`、`_search`、`/select/logsql/` 这类），`_bulk`、`/-/reload` 之类一律拒。

两条容易踩的：

* **链接的有效性和「公开」设置是解耦的。** 校验令牌发生在公开判定之前，所以把板改回 「不公开」并不会让已经发出去的链接失效。界面在你改类型时会提示「该仪表盘还有 N 条 在有效期内的匿名分享链接」，问你要不要一并注销——认真回答这个提示。
* **没有「永不过期」这个选项。** 有效期上限是 99 年；要长期公开就把单位选「年」， 但它仍然是一条能被注销的链接，而不是一个永久开关。

## 什么情况下签不出来[​](#什么情况下签不出来 "什么情况下签不出来的直接链接")

* **仪表盘用了「机器标识（Host ident）」类型的变量。** 这类变量要走登录态接口，匿名 打开必然是空的，所以生成按钮被直接禁掉，提示「仪表盘已配置机器标识变量，无法匿名 访问」。想分享就先把这个变量换成普通的查询变量。
* **仪表盘配置读不出来。** 这时同样禁掉生成，提示「仪表盘配置读取失败」。这是故意的： 读不到就按「不确定 → 不允许匿名」处理。
* **权限不够。** 签发、列出、注销这三个动作都要求仪表盘写权限，并且是该业务组的 读写成员。业务组的只读成员看不到也签不了——因为能列出链接就等于能拿到一条可用的 匿名链接转发出去。

## 另外两种分享，性质不同[​](#另外两种分享性质不同 "另外两种分享，性质不同的直接链接")

* **临时图链接。** 即时查询里图表右上角有个分享图标，点一下把当前这条查询存成一张 临时图，给你一条 `/chart/<id>` 链接，不用登录也能打开（依赖 `[Center.AnonymousAccess]` 的 `PromQuerier`，默认是开的）。**它没有有效期，也没有注销入口**，适合当截图的替代品， 不要拿它当受控的对外分享。
* **告警事件详情分享。** 告警事件详情页也能签一条限时链接（默认 7 天），机制和这里 一样，但分享的是一条事件而不是一个仪表盘。见[活跃事件与历史事件](https://n9e.github.io/zh/docs/events/active-historical.md)。

## 下一步[​](#下一步 "下一步的直接链接")

* 想把整个夜莺嵌进别的系统，而不是分享单个板：[嵌入与被集成](https://n9e.github.io/zh/docs/query/embedding.md)
* 板里的变量怎么配：[变量与筛选](https://n9e.github.io/zh/docs/query/variables.md)
* 谁能改这个板：[业务组与权限边界](https://n9e.github.io/zh/docs/concepts/business-groups.md)
