Obsidian 安全加固指南
Obsidian 以「本地优先」著称,但本地存储并不意味着绝对安全。本文提供全面的安全加固方案,保护你的知识库免受各种威胁。
威胁模型
| 威胁 | 风险等级 | 影响 | 本文章节 |
|---|---|---|---|
| 设备丢失/被盗 | 🔴 高 | 数据泄露 | 设备加密 |
| 恶意插件 | 🔴 高 | 数据窃取 | 插件安全 |
| 同步劫持 | 🟡 中 | 数据篡改 | 同步安全 |
| 误操作删除 | 🟡 中 | 数据丢失 | 备份策略 |
| 恶意软件 | 🟡 中 | 数据泄露 | 系统防护 |
| 物理损坏 | 🟢 低 | 数据丢失 | 离线备份 |
设备加密
全盘加密
| 操作系统 | 方案 | 开启方法 |
|---|---|---|
| Windows | BitLocker | 设置 → 隐和安全 → 设备加密 |
| macOS | FileVault | 系统设置 → 隐私与安全 → FileVault |
| Linux | LUKS | 安装时选择加密 / 使用 LUKS |
| iOS | 自动启用 | 设置 → 面容 ID 与密码 |
| Android | 自动启用 | 设置 → 安全 → 加密与凭据 |
确保设备加密已开启
全盘加密是第一道防线。即使设备被盗,没有密码也无法读取数据。
Vault 级别加密
如果需要在共享设备上保护敏感笔记,可以使用插件级加密:
推荐插件:
- Meld Encrypt:对单篇笔记或文件夹加密
- Cryptsidian:AES-256 加密笔记内容
- Obsidian Encrypt:内联文本块加密
使用方式:
1. 敏感笔记放在单独的文件夹(如 secrets/)
2. 使用加密插件对该文件夹加密
3. 设置强密码(建议 12+ 字符)
4. 密码不要存储在设备上加密文本块
在普通笔记中使用内联加密:
markdown
# 项目笔记
## 公开内容
项目名称:网站重构
状态:进行中
## 🔒 机密信息
%%ENCRYPT
API_KEY=sk-xxxxxxxxxxxxx
DATABASE_PASSWORD=p@ssw0rd123
END_ENCRYPT%%
以上内容需要密码才能查看。访问控制
Vault 访问限制
bash
# 1. 文件系统权限(Linux/macOS)
chmod 700 ~/ObsidianVault # 仅所有者可访问
chmod 600 ~/ObsidianVault/.obsidian # 保护配置
# 2. Windows 权限
# 右键文件夹 → 属性 → 安全 → 编辑权限
# 移除 Users 组的访问权限,仅保留当前用户Obsidian 应用层保护
| 保护措施 | 实现方式 | 工具/插件 |
|---|---|---|
| 启动密码 | 锁定插件 | Lock Screen Plugin |
| 空闲自动锁定 | 定时锁定 | Idle Timer 插件 |
| 生物识别 | 指纹/面容 | 系统级(移动端) |
| 敏感内容隐藏 | 内容遮罩 | Censor Plugin |
敏感数据隔离
推荐结构:
vault/
├── public/ # 可分享的笔记
├── private/ # 个人笔记
├── secrets/ # 加密存储(密码、密钥)
│ ├── .encrypted/ # 加密内容
│ └── .gitignore # 忽略加密文件
├── work/ # 工作相关
└── archive/ # 归档插件安全审计
插件安全检查清单
在安装任何社区插件前,执行以下检查:
审查插件代码
bash
# 克隆插件源码
git clone https://github.com/author/plugin-name.git
cd plugin-name
# 检查网络请求
grep -rn "fetch\|XMLHttpRequest\|http" src/ --include="*.ts"
# 检查代码执行
grep -rn "eval\|Function\|require" src/ --include="*.ts"
# 检查文件系统访问
grep -rn "fs\.\|readFile\|writeFile\|path\." src/ --include="*.ts"
# 检查外部数据传输
grep -rn "upload\|send\|post\|transmit" src/ --include="*.ts"高风险插件特征
⚠️ 警告信号:
- 闭源插件
- 请求管理员权限
- 访问系统级文件
- 收集用户数据上传到服务器
- 代码混淆或压缩(非构建产物)
- 安装后立即请求网络访问
- 插件描述与功能不符插件沙箱化
使用 Sandboxes 插件 或手动隔离:
bash
# 为高风险插件创建测试 Vault
mkdir ~/ObsidianTestVault
# 在测试 Vault 中安装和测试插件
# 确认安全后再安装到主 Vault同步安全
Obsidian Sync 加密
Obsidian Sync 默认提供 E2EE(端到端加密):
1. 设置 → 同步 → 开启端到端加密
2. 设置加密密码(独立于 Obsidian 账户密码)
3. 加密密码不要存储在云端
验证加密状态:
- 同步设置中显示 🔒 加密已启用
- Obsidian 服务器无法读取你的笔记内容Git 同步安全
bash
# 1. 使用 SSH 密钥认证(而非密码)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 将公钥添加到 GitHub
# 2. 配置 Git 不存储敏感信息
# .gitignore
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/plugins/*/data.json # 插件配置可能含敏感数据
.secrets/
*.key
*.pem
# 3. 使用 Git Credential Manager
git config --global credential.helper manager
# 4. 如果使用 HTTPS,确保使用 Personal Access Token
# 不要使用账户密码第三方同步服务对比
| 服务 | E2EE | 安全评级 | 注意事项 |
|---|---|---|---|
| Obsidian Sync | ✅ | ⭐⭐⭐⭐⭐ | 官方服务,推荐 |
| Git (自建) | ✅ | ⭐⭐⭐⭐ | 需要 GPG 加密 |
| Syncthing | ✅ | ⭐⭐⭐⭐ | P2P 加密传输 |
| iCloud | ❌ | ⭐⭐⭐ | Apple 可访问 |
| Dropbox | ❌ | ⭐⭐ | 可被服务方读取 |
| Google Drive | ❌ | ⭐⭐ | 可被服务方读取 |
备份安全
3-2-1 备份策略
3 份数据副本
2 种不同存储介质
1 份离线备份
推荐方案:
副本 1:本地 NAS / 外置硬盘(自动同步)
副本 2:加密云存储(Obsidian Sync / Cryptomator)
副本 3:离线硬盘(每月手动备份)加密备份
bash
# 使用 GPG 加密备份
tar czf - ~/ObsidianVault | gpg --symmetric --cipher-algo AES256 -o vault-backup-$(date +%Y%m%d).tar.gz.gpg
# 解密恢复
gpg --decrypt vault-backup-20260713.tar.gz.gpg | tar xzf -
# 自动化备份脚本
#!/bin/bash
BACKUP_DIR="/backup/obsidian"
DATE=$(date +%Y%m%d)
VAULT_DIR="$HOME/ObsidianVault"
# 加密备份
tar czf - "$VAULT_DIR" | gpg --batch --yes --passphrase-file /path/to/passphrase \
--symmetric --cipher-algo AES256 -o "$BACKUP_DIR/vault-$DATE.tar.gz.gpg"
# 保留最近 30 天
find "$BACKUP_DIR" -name "vault-*.tar.gz.gpg" -mtime +30 -delete
echo "备份完成: vault-$DATE.tar.gz.gpg"隐私保护
数据最小化原则
不要在笔记中存储:
- 银行卡号、CVV
- 身份证号
- 社交媒体密码
- 私密照片
如需存储敏感信息:
- 使用密码管理器(Bitwarden / KeePassXC)
- 在 Obsidian 中只存储引用链接
- 加密存储绝对必要的少量信息
网络隐私
关闭非必要网络功能:
1. 设置 → 社区插件 → 关闭自动更新检查
2. 使用 Web Clipper 时注意 URL 泄露
3. AI 插件注意数据上传政策
4. 关闭遥测/使用统计(如有)
DNS 隐私:
- 使用 DoH (DNS over HTTPS)
- 推荐:Cloudflare 1.1.1.1 / Google 8.8.8.8AI 插件隐私
使用 AI 插件时的隐私注意事项:
| 配置项 | 推荐设置 | 说明 |
|---|---|---|
| 数据上传 | 仅选中文本 | 避免全库上传 |
| API 密钥存储 | 环境变量 | 不硬编码在配置中 |
| 本地模型 | Ollama / LM Studio | 敏感数据用本地 AI |
| 日志清理 | 定期清除 | 避免对话记录泄露 |
| 模型选择 | 按需选择 | 敏感任务用本地模型 |
安全检查清单
每月检查
每季度检查
每年检查
相关文档
- 安全与隐私 — 基础安全指南
- 数据备份与迁移 — 备份基础
- 数据可移植性 — 数据迁移
- 插件安全性审查指南 — 开发者安全指南
- Obsidian Sync 详解 — 同步深入
- 性能优化完整指南 — 性能优化
- Obsidian Git — Git 版本管理