sperictao/dsh-auth-tailscale

sperictao★ 0TypeScriptLast synced: 2026-08-16

Open on GitHub

Tailscale identity and capability authorization adapter for DeepSeek Harness

README excerpt

dsh-auth-tailscale 为 dsh-client-connection-authz 提供 connectionRequestAuthorizer 的 Tailscale Serve 认证插件。 它使用 Serve 注入并防伪处理的 Tailscale-User-Login 、 Tailscale-User-Name 和 Tailscale-App-Capabilities ,实现精确用户 allowlist、 普通使用 capability 和独立的管理 capability。缺 identity、非法 RFC 2047、非法 capability JSON 或权限不足都会 fail closed。 安装 两个仓库目前是 private;上面的已验证路径使用当前 gh 登录为 Git 配置 HTTPS 凭据。也可以改用已配置公钥的 SSH URL。 配置 bundle patch 从环境变量读取策略: 变量 是否必需 含义 DSH TAILSCALE ALLOWED LOGINS 是 逗号分隔、大小写敏感的 Tailscale login allowlist DSH TAILSCALE USE CAPABILITY 否 普通远程 API/WS 必须具备的 App Capability DSH TAILSCALE ADMIN CAPABILITY 否 远程访问 loopback 特权接口必须具备;不配置时远程特权调用恒为 403 推荐同时使用 allowlist 和 capabilities:前者限制具体身份,后者把普通使用与管理权限 放进 tailnet policy。 未设置或解析为空的 allowlist 会让整个 dsh plugin tree 启动失败,不会退回匿名访问。 推荐部署 让 dsh 只监听回环地址,并把 Serve DNS 名加入现有 Host fence: 再由 Tailscale Serve 终止 HTTPS、注入身份并转发所需 capabilities: Tailscale 官方说明 Serve 会删除客户端伪造的同名身份/capability headers;但这些头 只有在后端无法被绕过 Serve 直连时才可信。因此 dsh 必须绑定 127.0.0.1 ,不要绑定 0.0.0.0 ,也不要用公开的 Funnel 代替私有 Serve。参见 Serve identity headers、 Serve App Capability 示例 和 App Capability grants。 App Capability 需要 Tailscale 1.92+ 。自定义 capability 名应使用你控制的域名并遵循 {domain}/{path} 格式。 一个最小 tailnet grants 结构如下;管理员同时获得…

View full README on GitHub →
Tools / Devaccess-controlapp-capabilitiesauthenticationauthorizationdeepseek-harnessdshdsh-pluginplugin

Category