核心用法
mediaproc 是一个基于 Docker 的锁定式媒体处理服务,通过 SSH 暴露 ffmpeg、sox、ImageMagick 等工具集。用户通过环境变量 MEDIAPROC_HOST 和 MEDIAPROC_PORT 配置连接,所有命令经 Python 白名单包装器代理执行,无 Shell 解释器介入。
文件流转模型:数据通过 put/get 命令以 stdin/stdout 管道传输,工作目录锁定在 /work,路径遍历攻击被阻断。支持 2200+ 内置字体及 frei0r/LADSPA/LV2 插件生态。
显著优点
- 命令注入免疫:
&&、;、管道、子shell等元字符被当作字面参数处理,从根本上消除传统SSH远程命令执行的安全隐患 - 零依赖部署:单容器封装完整媒体工具链,免去本地编解码环境配置
- 细粒度访问控制:仅暴露白名单命令(ffmpeg/sox/convert等),无交互式Shell,SSH转发全禁用
- 审计友好:所有操作通过SSH通道留痕,便于日志追踪
潜在缺点与局限性
- 性能瓶颈:大文件传输依赖SSH管道,无原生SCP/SFTP优化,高吞吐场景受限
- 单点故障:无内置高可用或负载均衡,容器宕机即服务中断
- 功能边界:目录操作仅支持基础增删,无权限精细控制;插件生态依赖容器预装,自定义扩展需重建镜像
- 调试困难:错误信息经多层包装(SSH→Python→工具链),问题定位链条较长
适合人群
- 需隔离不可信媒体输入的安全敏感场景(如接收外部用户上传内容)
- CI/CD 流水线中需要确定性、可复现的媒体处理步骤
- 多平台团队希望统一编码参数,避免"本地能跑"类环境差异
常规风险
- 密钥管理:SSH密钥泄露即等于服务完全沦陷,需严格轮转机制
- 资源耗尽:视频转码属CPU密集型,单容器易被恶意/误操作任务打满,建议配合cgroups硬限制
- 输入验证盲区:虽阻断命令注入,但媒体文件本身可能携带攻击载荷(如恶意PNG触发ImageMagick漏洞),白名单机制不防护应用层漏洞