Skip to content

feat: add fine-grained clipboard permission control for graphical sessions#505

Open
lettimepassby wants to merge 2 commits into
jumpserver:devfrom
lettimepassby:pr@dev@feat_add_fine-grained_clipboard_permission_control-_for_graphical_sessions
Open

feat: add fine-grained clipboard permission control for graphical sessions#505
lettimepassby wants to merge 2 commits into
jumpserver:devfrom
lettimepassby:pr@dev@feat_add_fine-grained_clipboard_permission_control-_for_graphical_sessions

Conversation

@lettimepassby

Copy link
Copy Markdown
Contributor

为资产授权增加更细粒度的剪贴板权限控制,覆盖 RDP/VNC 图形会话:可分别管控文件上行 / 文件下行 / 字符串复制 / 字符串粘贴,并对复制、粘贴设置字符数上限(0 表示不限制)。策略从后端配置、经连接令牌下发、在图形代理逐流强制执行,前端提供独立的编辑入口。涉及 jumpserver、lion、lina 三个仓库。

  • 解析连接选项中的剪贴板策略(ClipboardPolicy),无策略或解析失败时回退为全允许。
  • ActionPermission 应用策略:SFTP 传输按文件上行/下行收敛;剪贴板通道(文本与文件共用一条 guacd 通道)在该方向「文本或文件任一允许」时保持开启,细粒度区分交给过滤器。
  • 新增 clipboardPolicyFilter:按 guacd 流的 MIME 类型分流——文件流 按文件上行/下行放行,文本流按复制/粘贴放行并按字符数上限截断;与 inputFilter/outputFilter在同一处装配,构造即就绪。

@lettimepassby

Copy link
Copy Markdown
Contributor Author

说明

改为从 sdk-go 新增的强类型字段 ConnectOptions.ClipboardPolicy 读取剪贴板策略,替换此前解析 lang 连接选项 JSON 的临时实现。

依赖(sdk-go)

本 PR 依赖 sdk-go 的改动:ConnectOptions 新增 ClipboardPolicy *ClipboardPolicy(json: clipboard_policy)及对应结构体。需先合并并发布 sdk-go,再将本仓库 go.mod 升级到该版本。

改动

  • pkg/session/permisson.go:删除 lion 本地的 ClipboardPolicy 结构体,改用 model.ClipboardPolicy;applyClipboardPolicy 直接读取 connectOptions.ClipboardPolicy(为 nil 时回退全允许默认),移除 encoding/json 的解析。
  • go.mod / go.sum:sdk-go 升级到含该字段的新版本。

兼容性

  • 策略为空(旧 core 未下发)时回退为全允许,向后兼容。
  • 过滤器逐流执行逻辑不变(文件流按文件上行/下行,文本流按复制/粘贴 + 字符数上限)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant