ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Gitea 备份加密 3 步落地指南:dump 默认不加密,存储加密如何补齐

Gitea 备份加密 3 步落地指南:dump 默认不加密,存储加密如何补齐 Gitea 备份加密 3 步落地指南dump 默认不加密存储加密如何补齐【免费下载链接】giteaGit with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD项目地址: https://gitcode.com/GitHub_Trending/gi/gitea上周凌晨某台生产 Gitea 被植入后门攻击者打包了整个数据目录。更糟的是运维在共享 NAS 上留了一份顺手的完整备份数据库导出、app.ini 里的 SMTP 密码、私有仓库对象全是明文 zip。密钥和备份躺在同一块盘上等于把备用钥匙压在门垫下面。Gitea 备份加密不能等出事才补。读完这篇你至少能完成三件事给备份文件设置最小权限、用 GPG 把 dump 输出加密后落盘、做一次可复现的解密恢复演练。风险场景一份明文 dump 能暴露什么gitea dump会把仓库对象、LFS 数据、附件、包注册表、日志和 app.ini 打成一个压缩包。默认权限只有 0600没有内容加密。一旦备份文件在传输或归档环节泄露私有仓库、凭据、用户数据一次性外流且没有告警机制提醒你备份被读走了。原生能力盘点dump 命令的基线行为维度现状默认行为输出 zip文件名gitea-dump-{时间戳}.zip支持 zip/tar/tar.gz/tar.xz/tar.zst 等 9 种格式--file -可输出到 stdout支持 skip-db/skip-repository 等裁剪参数隐含限制无加密参数密文只能靠外部工具文件已存在时直接报错退出风险点内容零加密数据库、app.ini、附件全部明文生成后自动 0600见 cmd/dump.go 末尾但目录权限不受管分层加固从改权限到非对称加密第一层零代码改动收紧备份目录与文件权限适用谁单节点自托管、备份留在本机磁盘的场景。怎么改建专用备份用户并隔离备份目录useradd -r -s /sbin/nologin gitea-backup install -d -m 700 -o gitea-backup -g gitea-backup /var/lib/gitea/backupsdump 完成后落盘的文件权限由 Gitea 自动设置为 0600无需额外处理// cmd/dump.go写完后强制收紧权限失败只记日志不中断 if err os.Chmod(outFileName, 0o600); err ! nil { log.Info(Cant change file access permissions mask to 0600: %v, err)代价与局限只防本机其他用户对异地共享存储、NAS 账号体系无效。风险提示如果备份目录与密钥、app.ini 备份同盘同目录权限收敛形同虚设。第二层stdout 管道接 GPG 对称加密落盘即密文如果备份要传 NAS、对象存储或多用户机器仍不满足用管道加密。密码短语文件先落位并收紧权限install -m 600 /etc/gitea/backup.passphrase /etc/gitea/backup.passphrase备份不落盘明文直接加密后写出./gitea dump -f - | gpg --batch --no-symkey-cache \ --symmetric --cipher-algo AES256 \ --passphrase-file /etc/gitea/backup.passphrase \ -o /var/lib/gitea/backups/gitea-$(date %Y%m%d).gpg-f -让 dump 走 stdoutcmd/dump.go 中对-的处理明文只存在于管道中。代价与局限密码短语丢失等于备份报废短语文件本身仍需按密钥管理。第三层GPG 非对称加密备份机不持有任何私钥如果团队要求密钥轮换、多人可恢复而单人不掌握全部材料改用非对称一次性生成密钥对私钥离线保管公钥上备份机gpg --batch --gen-key # 或 gpg --quick-gen-key backupsite 2048 gpg --export backupsite /etc/gitea/backup-pub.asc备份时按公钥加密密文只有私钥持有者能解开./gitea dump -f - | gpg --batch --yes -r backupsite \ --trust-model always -o /var/lib/gitea/backups/gitea-$(date %Y%m%d).gpg代价与局限私钥保管、备份、轮换是长期运维工作误删即不可恢复。注意三层可以叠加。非对称加密后再上传权限层照旧保留。完整流程从定时备份到季度演练crontab 定时执行第二/三层加密命令输出目录只读给备份用户。上传后删除本机中间文件加密方案下通常无需本地留明文。每季度抽最近一份执行下一节的演练结果归档。私钥/密码短语每次轮换后用旧密钥解密一份历史备份确认兼容性。验证与演练解密、完整性、恢复三步走可直接复制执行# 解密并验证压缩包完整性 gpg --batch --pinentry-mode loopback --passphrase-file /etc/gitea/backup.passphrase \ -d gitea-20260823.gpg /tmp/verify.zip unzip -t /tmp/verify.zip# 恢复演练解压后恢复指定仓库restore-repo 参数见 cmd/restore_repo.go ./gitea restore-repo -r /tmp/verify/repos -o owner -n repo检查点解密退出码为 0无BAD PASSPHRASE/NO_SECRIT类报错。unzip -t输出No errors detected包内可见gitea-db.sql、app.ini、repos/。恢复的仓库git log提交数与源仓库一致。通过标准三条全部满足且演练在一台干净测试机完成而非生产机。选型速查按改动成本挑一层加固层改动成本维护难度适用规模见效时间目录与文件权限收敛低仅 shell 命令低单节点、本地磁盘分钟级GPG 对称加密管道中一条管道命令中密码短语管理有异地/共享存储小时级GPG 非对称加密中高密钥体系高轮换与保管多人协作、合规要求天级默认推荐先做第一层绝大多数团队再叠加第二层即可覆盖主要风险只有明确存在密钥隔离或合规审计要求时再上第三层。落地清单创建 gitea-backup 用户备份目录设为 700cron 任务改为以该用户执行备份脚本改为dump -f - | gpg --symmetric管道形式密码短语移出备份目录执行一次解密 unzip -t完整性验证在测试机跑通 restore-repo 恢复演练并记录提交数核对结果私钥/密码短语备份到离线介质并在文档中登记保管人下期预告Gitea 双因素认证2FA部署与强制策略配置实战。【免费下载链接】giteaGit with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD项目地址: https://gitcode.com/GitHub_Trending/gi/gitea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表