Navicat Team 不支持客户端侧云端数据加密保护,所谓“Enable Encryption”开关实为遗留占位项且不可用;所有云同步数据由服务端用硬编码AES-256-CBC加密,用户无法控制密钥、验证加密或关闭该机制。
navicat team 不支持客户端侧的“云端数据加密保护”功能——所谓“开启加密”实际是混淆概念,它只做传输加密(tls)和基础权限隔离,没有端到端加密或密钥自管能力。
为什么 Settings → Cloud → Enable Encryption 点不动或灰掉
这个开关根本不是加密开关,而是旧版 UI 遗留的占位控件。Navicat Team 的云同步依赖的是 Navicat Cloud 服务,所有数据在上传前已由服务端用固定密钥 AES-256 加密,用户无法控制密钥、无法关闭该加密,也无法验证是否真加密了。
- 你看到的灰色
Enable Encryption是前端未移除的残余配置项,后端压根不响应 - 真正起作用的是
https://cloud.navicat.com的 TLS 1.2+ 连接,以及服务端对.ncx同步文件的自动加密 - 如果你用的是私有部署版 Navicat Cloud Server(极少见),加密行为才可配置,但 Team 客户端仍不暴露密钥管理界面
navicat-cloud-sync 数据到底有没有被加密
有,但属于服务端托管加密:所有同步到云端的连接、查询、模型元数据,都会被打包成 .ncx 文件,经服务端用硬编码密钥 AES-256-CBC 加密后存储。你本地导出的 .ncx 文件是明文,但上传后立刻被替换为密文 blob。
- 风险点在于:Navicat 官方可解密你全部云端数据,且无审计日志供你核查解密行为
- 不支持 BYOK(自带密钥),也不提供加密算法切换选项(比如改用 ChaCha20 或国密 SM4)
- 若团队成员账号被盗,攻击者可直接下载并解密全部
.ncx内容——因为解密密钥和服务端逻辑完全由 Navicat 控制
想真正保护敏感连接信息,只能绕开 Navicat Cloud 同步
把连接配置当机密处理,而不是依赖它的“加密开关”。实际可用路径只有两条:
- 禁用
Cloud Sync,改用 Git +.gitignore管理本地connections.ncx(注意:该文件含明文密码,必须先用navicat --export-connections导出为加密格式,或手动删掉Password字段) - 用环境变量 +
navicat --connect "host=${DB_HOST};port=${DB_PORT};..."动态注入参数,彻底避免密码落盘 - 对高敏场景,直接弃用 Navicat Team 的同步功能,改用 HashiCorp Vault 或 AWS Secrets Manager 做连接凭据分发
真正的加密保护不在那个灰掉的开关里,而在你是否让敏感数据离开可控环境。Navicat Team 的“云端加密”本质是传输+存储层的默认防护,不是你手里的锁,只是快递盒自带的封条——拆开它不需要你的同意。


















