部署与运维

安全

谁能连接 PrintLink、能做什么、怎么随时收回授权;来源白名单、配对与权限的关系。

最后更新

PrintLink 的安全模型一句话:默认只接受本机连接;页面要打印必须由本机用户 批准;放开网络可达性需要在控制台显式确认,并且随时可以一键收回。

四层检查

一次网页调用要依次通过四层互不替代的检查:

层检查什么在哪管理
监听范围服务在哪些地址上接受连接控制台「设置」
来源白名单哪些网段可以建立连接控制台「安全与站点 → 网络访问」
配对授权哪些页面被允许调用(用户在电脑上确认)控制台「安全与站点」
接口权限这个页面具体能做什么配对时授予,随时可收回

两条通道:来源地址与令牌

谁能访问由两条互相独立的通道决定,满足其一即可。这一点值得先记住:

                    ┌─ 带令牌 ──────────────► 认令牌(不需要 IP 授权)
客户端连接 ─────────┤
                    └─ 不带令牌 ────────────► 看来源地址(白名单 / 待确认)
传输带令牌不带令牌
WebSocket(/ws)放行,不需要 IP 授权走来源地址规则
HTTP(/rpc)放行,不看来源地址拒绝(PAIRING_REQUIRED)

HTTP 上没有「不带令牌但来源可信」这条路:HTTP 没有连接,每个请求都是独立的, 把来源地址当成逐请求凭据,等于让同网段任何一台机器自动获得与「用户批准过的 程序」同等的调用能力。一句话:有令牌就不需要 IP 授权。

令牌由用户在控制台签发

令牌(plk_ 开头)是独立凭据:它自己就证明了身份,不绑定来源地址、 也不绑定页面地址。明文只在签发那一刻出现一次,PrintLink 只保存它的 SHA-256 哈希。请把令牌当作真正的凭据保管。

签发方式是在控制台「安全中心 → 令牌」里主动创建,而不是由客户端申请:

  • 创建时勾选权限(能调什么)与传输(允许在 WS / HTTP 上用,至少一项);
  • 可选有效期与备注;
  • 名称为必填——令牌不绑来源,名字是唯一能帮你认出「这把是给谁的」的东西;
  • 签发后明文只显示一次,请立即复制并交给需要它的程序。

v1.0.10 起:客户端不再能自己申请到令牌

旧版本的 auth.pair 会在用户批准后把令牌回给申请方。现在它只触发来源地址 授权:WS 上被放行的地址本来就能用,因此会得到「你不需要令牌」的提示;HTTP 上则需要用户先在控制台签发一个。

理由是令牌可以被复制、被带到另一台机器上使用——这种凭据的签发权应当明确 落在人手里,而不是由「谁先连上来申请」决定。

来源(Origin)只是记录,不是门槛

页面的 Origin 是站点自己发出的请求头,非浏览器程序可以任意书写,用它做准入 既拦不住真正的攻击者,又容易把「同一个应用换了端口」「http 改成 https」误判成 越权。因此 Origin 继续被记录(任务的「来源」列、报表都读它),但既不决定 谁能访问,也不出现在令牌列表里。

控制台里能做什么

「安全中心」分两个标签页:

  • IP 授权:哪个地址能连。清单外的远程来源进入待确认队列;批准时可顺手 勾选「仅此 IP / 本网段 / 更大一段」。本机回环恒定放行。
  • 令牌:哪个程序能连。在这里创建令牌、查看已签发的令牌(名称、权限、 传输、有效期),并逐个撤销;HTTP 接入总开关也在这一页。

撤销是精确的

  • 撤销令牌:立即断开持有该令牌的连接,其它令牌与 IP 授权不受影响。
  • 拉黑来源:该地址的请求被直接拒绝,不再进入待确认队列。

需要断开某一个程序时用前者,不要用拉黑整个来源——那会连带影响同一台机器上 其它正常的程序。

监听范围

范围含义附加要求
仅本机(默认)只接受来自本机的连接无
局域网绑定显式选择的私网地址地址必须从本机网卡里逐个确认
公网绑定显式选择的公网可达地址危险确认 + 强烈建议收窄来源白名单
  • 端口、范围、绑定地址与来源白名单是同一个事务:任何一步失败都会完整回滚, 旧服务持续可用。
  • 范围收紧(公网 → 局域网 → 仅本机)会立即断开不再被允许的远程连接。
  • 不提供内置 TLS。公网范围意味着明文连接,请配合 VPN 或反向代理使用。 令牌不能替代 TLS。

来源白名单

监听范围放开后,可以配置来源 IP 规则(IPv4 / IPv6 均支持):

  • 拒绝优先:命中拒绝列表的来源直接断开,即使它也在允许列表里。
  • 配置了允许列表后,未命中即拒绝。
  • 过宽的规则需要额外的危险确认。
  • 白名单只控制网络可达性,配对与权限仍然逐一生效。
  • 审批局域网新站点时,可以直接勾选「仅此 IP / 本网段」把来源写进允许清单。

哪些连接被当作「本机」

浏览器连接一定带 Origin;PrintLink 自己的界面和同机自动化程序不带。 缺少 Origin 不是身份:

连接来自结果
无 Origin本机可信本机会话,拥有全部权限
无 Origin局域网或公网拒绝(REMOTE_NATIVE_CLIENT_DENIED),并记入审计
有 Origin任意走浏览器规则:白名单 → 配对 → 权限

反向代理不要剥掉 Origin

在 PrintLink 前放同机反向代理时,代理必须原样转发 Origin:PrintLink 看到的对端 是回环地址,一旦 Origin 被剥掉,所有经代理的远程连接都会被误认为可信本机客户端。

远程服务暂时不能直连

没有 Origin 的远程连接一律被拒绝,这是刻意的:面向远程非浏览器客户端的 服务 / 设备令牌体系还没有。在那之前请用受控远程连接里 列出的替代做法。

审计与脱敏

  • 授权、拒绝、配置变更、监听迁移都会写入审计记录(保留天数可配置)。
  • 审计与诊断输出不包含文档内容、令牌明文或二进制素材——只有事件类型、 来源、时间与脱敏后的上下文。
  • 扫描是高风险能力,权限不在默认授予范围内,且每次扫描都要在桌面端确认。

调试台不是可信管理界面

调试台运行你自己输入的代码,虽然跑在沙箱里,但它调用的是真实的本机服务。 站点管理、报表、诊断这些可信操作只在控制台(桌面端)提供。

给接入方的建议

  1. 只申请用得到的权限;打印和预览分开按需申请。
  2. 监听范围保持「仅本机」,除非确有跨机器打印需求;跨机器优先局域网 + 精确白名单
    • 精确绑定地址,不要一上来就开放公网。
  3. 处理好「需要授权 / 等待授权 / 权限不足」这几种结构化错误码, 不要引导用户「把安全设置关掉」。
  4. 远程服务进程不要试图省略 Origin 直连;用受控的网页接入或同机桥接进程。

下一步

本页目录