多人协作的安全边界:加密、成员权限、审计、数据主权
团队协作的数据保护分层
多人协作时,数据安全有多个需要保护的层级:
| 层级 | 保护什么 | 手段 |
|---|---|---|
| 1. 本地设备 | 单个成员被盗/损坏 | 设备级 PIN、OS 锁屏、备份 |
| 2. 传输通道 | 网络窃听、中间人 | TLS + 端到端加密 |
| 3. 服务器侧 | Anytype 服务器泄露数据 | 服务器只路由密文 |
| 4. 成员侧 | 被加入不认识的人 | 成员角色权限、邀请链接 |
| 5. 导出侧 | 有人把数据带走 | 权限控制、导出限制 |
加密范围
什么被加密了
在 Group Channel 里:
- ✅ 所有对象的内容(Blocks)
- ✅ 所有对象的属性(Properties)
- ✅ 所有文件和媒体
- ✅ 对象之间的链接关系
- ✅ Chat 消息
- ✅ Discussions
什么不被加密(或者说,"服务器能看到")
- Vault 在 Anytype Network 上的匿名注册 ID
- 数据传输的时间戳和数据量大小
- 成员的 ANY ID(用于互相发现)
- 公开发布的 Web Publishing 内容
重点:Anytype Foundation(荷兰非营利基金会)没有也无法获取:
- 恢复短语
- 加密密钥
- 任何 Channel 里的明文内容
成员退出/被移除后的数据
被移除的成员
当一个成员从 Group Channel 被移除:
- 他们的 Vault 自动收到删除信号 → 本地 Channel 副本被移除
- 他们无法再访问 Channel 的加密数据(因为加密密钥在他们本地,离开 Channel 后不再保留解密能力)
- 但他们创建的对象和聊天消息保留在 Channel 里——对象本身属于 Channel,不属于创建者个人
这是对的吗
这是一个设计权衡:
- ✅ 好的一面:团队知识不会因为有人离开就丢失
- ❌ 坏的一面:被移除者理论上提前下载到本地的数据可能残留
任何协作工具都面临这个问题——没有人能从别人的硬盘上物理删除数据。最佳实践:
- 移除成员前,让他们主动删除本地 Channel 副本
- 敏感数据不应该长期存在于可下载的对象里(考虑用更严格的权限管理)
审计与历史
Anytype 目前没有中心化的审计日志功能(查看谁在什么时候改了什么):
- 没有"操作日志"页面
- 没有"版本历史时间线"
- 只有:对象本身可以恢复(Bin),讨论里可以看到部分变更上下文
替代方案
- Discussions:用对象上的讨论来做决策记录(为什么这样改、谁提议的)
- 模板 + 版本号 Property:重要文档加一个"版本号"或"更新日期" Property
- GitBook / Markdown 导出:重要里程碑时导出存档
自托管 vs Anytype Network
如果你对"数据哪怕加密后也不想经过第三方服务器":
- 自建 AnySync 中继节点:开源协议,自建服务器
- 或者用纯 P2P 同步(所有协作者在同一局域网内)
但坦白说,对 99% 的用户来说:
Anytype 的 Anytype Network 中转 + 端到端加密,已经比 99% 的云应用安全得多。
因为服务器只做"加密盒子的转发"——它看到的是一堆看不懂的密文。
审计场景的特殊考虑
法律团队 / 监管场景
如果团队有严格的合规要求:
- 自建中继节点:数据路径完全可控
- Vault 导出:定期导出 Channel 内容做合规存档(Any-Block 或 Markdown 格式)
- Channel 权限:严格控制谁能进、谁的权限是只读
- 成员退出流程:书面化的退出数据清理流程
自我审计
个人使用时的安全自检:
- 定期检查 Vault Settings → Channels → 有没有不认识的 Channel
- 定期导出备份(本地 + 离线介质)
- 检查恢复短语备份是否完好