【免费下载链接】portabasePortabase - Database backup restore tool for PostgreSQL, MySQL, MsSQL, MariaDB, Firebird SQL, SQLite, MongoDB, Redis and Docker Volume项目地址https://gitcode.com/gh_mirrors/por/portabase点击查看免费下载Portabase 是一个开源的数据库备份与恢复工具支持 PostgreSQL、MySQL、MariaDB、MSSQL、MongoDB、Redis、SQLite、Firebird 和 Docker Volume 等引擎。由于它必须保存所有数据库的连接密码其安全机制设计显得格外关键。本文带你深度剖析 Portabase 安全机制的三大支柱AES-256-GCM 凭据加密、RBAC 双层权限控制和Passkey 无密码登录帮你看懂这款自托管备份工具如何守住数据库凭据与用户账户的安全底线 一、为什么备份工具的安全机制如此重要备份工具天然握有整个环境的钥匙它能连接每一个数据库、读取完整数据还能把备份文件写入远程存储。一旦凭据泄露攻击者可以直接访问生产数据库。Portabase 对此构建了三层防线静态数据保护数据库密码在数据库中不落明文全部用 AES-256-GCM 加密存储访问控制RBAC 角色权限体系区分系统级与组织级权限API Key 附带速率限制身份认证加固支持 Passkey 无密码登录、双因素认证2FA与新设备登录告警。二、AES-256-GCM 凭据加密数据库密码如何被保护1. 主密钥的生成与保管Portabase 启动时会生成一把256 位32 字节的 AES 主密钥保存在私有目录中密钥文件权限强制为0o600仅属主可读写所在目录权限为0o700使用wx独占写入标志避免并发启动时覆盖已有密钥同时还会生成一对 2048 位 RSA 密钥私钥0o600、公钥0o644用于其他加密场景。实现见 rsa-keys.ts这是整个凭据加密体系的根。2. 每个密码字段独立加密GCM 模式保存数据库配置时Portabase 按引擎类型识别出敏感字段如各数据库的password字段见 credential-fields.ts并逐字段调用 AES-256-GCM 加密每次加密使用全新的 12 字节随机 IV初始化向量保证相同密码每次密文不同输出包含iv 密文 认证标签authTagGCM 模式同时提供机密性与完整性校验密文被篡改会直接解密失败密文以结构化信封格式存储version、kid、iv、ciphertext、tag便于未来密钥轮换。核心实现见 credential-crypto.tsencryptSecret(): iv randomBytes(12) → aes-256-gcm → { iv, ciphertext, tag }3. 展示脱敏 按需解密前端界面永远看不到明文密码展示时统一替换为********掩码credential-fields.ts 的maskConfigForDashboard只有在真正执行备份任务时服务端才临时解密decryptConfigSecretsInPlace用完即丢弃编辑配置时若掩码未变化则保留数据库中已加密的旧值避免明文回传。4. 加密还延伸到 Agent 通信链路不仅存储加密与远程 Agent 的通信也加密存储通道配置通过 status-crypto.ts 以base64( IV ‖ 密文 ‖ 认证标签 )格式传输带密码的数据库配置对 Agent从不以明文下发而是整体加密为config_ciphertext旧版本 Agent 则直接拒绝下发版本门槛见 status-crypto.ts主密钥通过 edge_key.ts 生成的 edge key 安全分发到 Agent打通本地与服务端加密体系。⚠️运维提醒master_key.bin是解开所有数据库密码的唯一钥匙。备份该文件且妥善保管与备份数据库本身同样重要。三、RBAC 双层权限体系系统角色 × 组织角色Portabase 采用系统级 组织级双层 RBAC 模型角色定义见 role.ts层级角色典型权限系统级superadmin访问系统管理、创建/删除组织、分配任意角色admin创建/更新/删除用户管理组织用户user/pending仅可创建自己的组织 / 待审批、无操作权限组织级owner管理组织一切配置独占危险区删除组织等admin管理代理、设置、成员、通知、存储通道member只读查看项目、数据库与代理列表权限计算分别由 system-acl.ts 与 organization-acl.ts 以布尔字段形式产出如canManageStorages、canManageDangerZone: isOwner供界面和后端统一消费。在此基础上还有三道纵深防线访问控制语句AC基于 better-auth 的 permissions.ts 按project / database / agent资源粒度声明操作权限如database: [create, list, backup]普通member对数据库仅能list服务端动作守卫所有服务端 Action 经过 safe-actions/actions.ts 统一拦截——未登录抛错、非超管执行系统操作直接拒绝前端隐藏按钮无法绕过API Key 分级限流auth.ts 内置三档密钥并各自限速——pk_公共密钥 100 次/小时、sk_标准密钥 1000 次/小时、int_内部密钥 10000 次/小时api-v1 中间件 额外校验封禁banned与待审批pending账户。四、Passkey 无密码登录与登录安全加固1. Passkey 无密码登录Portabase 集成 better-auth 的 Passkey 插件auth.ts支持指纹、面容 ID 等硬件凭据登录。注册未登录凭据时依赖一个短时签名上下文passkey-context.ts 用HMAC-SHA256 项目密钥对{name, email, exp}签名5 分钟过期验证时passkey-context.ts逐位比对签名并校验过期时间防止上下文被伪造或重放。2. 多层登录防护双因素认证2FA内置 twoFactor 插件为密码登录叠加第二道验证新设备登录告警会话创建钩子会解析设备信息操作系统、浏览器、IP在 30 秒防抖后向用户发送新登录提醒邮件auth.ts可信来源白名单trustedOrigins动态加载TRUSTED_DOMAINS环境变量域名限制跨站回调auth.ts安全 Cookie会话 Cookie 强制Secure SameSiteNoneHTTPS 下传输见 auth.ts密码强度策略注册/改密要求至少 8 位且同时包含大写字母、小写字母、数字、特殊字符见 password.ts首个用户即超管系统内第一个注册用户自动获得superadmin角色auth.ts避免冷启动时无人可管理。五、新手安全配置清单 结合上文自托管 Portabase 时建议按此清单配置配置项建议master_key.bin纳入定期备份并严格保密丢失所有数据库密码不可恢复PROJECT_SECRET使用强随机值它保护 Passkey 上下文签名与会话安全Passkey / 2FA开启AUTH_PASSKEY_ENABLED为超管账户叠加硬件凭据角色分配遵循最小权限日常成员给member危险区操作留给ownerAPI Key按用途分级发放pk_/sk_/int_定期轮换域名配置TRUSTED_DOMAINS收紧 OAuth/SSO 可信来源总结Portabase 的安全机制体现了自托管备份工具的完整思考AES-256-GCM 让密码存了也看不见随机 IV 认证标签 主密钥 0o600 落盘、RBAC 双层权限让谁能做什么边界清晰系统角色 × 组织角色 × 资源粒度 AC × 动作守卫、Passkey 与 2FA 让你是谁难以冒充HMAC 签名上下文 新登录告警 可信域白名单。如果你正在寻找一款密码不落明文、权限收放自如的自托管数据库备份方案Portabase 的安全设计值得你深入一读。赞分享【免费下载链接】portabasePortabase - Database backup restore tool for PostgreSQL, MySQL, MsSQL, MariaDB, Firebird SQL, SQLite, MongoDB, Redis and Docker Volume项目地址https://gitcode.com/gh_mirrors/por/portabase点击查看免费下载相关推荐ToolJet安全加密机制AES-256-GCM凭证保护详解ToolJet安全加密机制AES 256 GCM凭证保护详解 在当今数字化时代企业应用中的敏感数据保护至关重要。ToolJet作为一款低代码平台连接了多种低代码后端前端AI 应用MCP 服务OmniRoute 安全架构与加固实践从漏洞响应流程到 AES-256-GCM 凭据加密OmniRoute 安全架构与加固实践从漏洞响应流程到 AES 256 GCM 凭据加密 OmniRoute 是一个面向多 Provider AI 网关的开源后端API网关LLM 网关人工智能大模型MCP 服务桌面应用Pulse 安全架构与部署加固实践从容器 SSH 密钥禁用到 AES-256-GCM 凭据加密Pulse 安全架构与部署加固实践从容器 SSH 密钥禁用到 AES 256 GCM 凭据加密 Pulse 的仓库内规范安全策略文档 frontend mod可观测性运维后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考