安全指南
上线检查表
- 修改默认
admin密码。 - 使用 HTTPS;不要在公网通过明文 HTTP 登录或使用 WebDAV。
- 只向防火墙开放反向代理,不直接公开 go-drive 监听端口。
- 精确配置
trusted-proxies。 - 保持
free-fs: false,除非管理员本来就应访问主机全部文件。 - 按最小权限配置匿名用户、普通用户、组根路径和路径权限。
- WebDAV 默认禁止匿名访问。
- LDAP 使用 LDAPS/StartTLS 并验证证书。
- 定期备份数据库和数据目录并测试恢复。
- 不在配置库、日志或 issue 中泄露数据库密码、OAuth Secret、LDAP 密码和文件桶 Token。
身份验证和会话
auth.validity 控制会话有效期;auto-refresh 会在活跃使用时续期。退出登录会撤销当前会话。连续失败的登录回调会按客户端 IP 限制:5 分钟内达到 5 次失败后返回 HTTP 429,因此反向代理必须正确配置真实 IP。
LDAP 用户可以即时创建并同步组。已有同名本地用户不会被 LDAP 接管。管理员应避免在多个认证源中复用同一用户名。
文件访问签名
文件内容和缩略图 URL 带签名,默认有效期由 signature-ttl: 12h 控制。缩短它可以降低泄露链接的可用时间,但过短可能导致长时间播放或下载失败。
文件桶下载接口是独立的公开访问能力,不使用普通用户权限校验;应使用允许类型、最大大小、不可猜测的上传 Token、Referer 白名单和合适的缓存策略限制风险。
路径隔离
- 用户自身根路径优先于组根路径。
- 用户没有个人根路径时,多个组中选择层级最浅的非空根路径。
admin组不受根路径限制。- 根路径只是可见目录边界,路径权限继续决定读写能力。
- 路径挂载后的权限按挂载位置重新匹配。
free-fs: true 会让管理员能够创建指向主机任意绝对路径的本地 Drive。容器部署时也应只挂载真正需要的宿主机目录。
自定义代码
全局样式、注入脚本、JavaScript Drive、任务脚本和 shell 缩略图处理器都能执行受信任管理员提供的代码。只允许可信管理员修改它们:
- 注入脚本在所有用户浏览器中运行。
- JavaScript Drive/任务可以发起网络请求和读写映射的文件。
- shell 缩略图以 go-drive 进程用户权限执行外部命令。
不要安装来源不明的脚本 Drive;安装前检查 Drive 脚本和配套上传器。
外部预览和 OAuth
Microsoft/Google 外部预览器会把带签名的文件 URL 发送给第三方。内网或敏感文件不要启用外部预览。
OneDrive 和 Google Drive 需要 OAuth Client Secret。可使用默认静态回调页,也可通过 oauth-redirect-uri 指向自己托管的兼容回调页。OAuth 控制台中配置的 URI 必须完全匹配。
日志与调试
错误日志可能包含路径、远端服务错误和用户名。集中收集日志时按敏感数据处理。GO_DRIVE_DEBUG 只用于临时排查,问题解决后应关闭。