第 8 / 8 节10 分钟
🔒
安全与隐私
中级保护代码和数据的安全最佳实践
🎬
视频教程即将上线
安全与隐私
学习 OpenCode 的安全最佳实践,保护你的代码和数据。
# 安全概述#
使用 AI 编程助手时需要注意:
| 风险类型 | 说明 | 防护措施 |
|---|---|---|
| 数据泄露 | 敏感信息发送给 AI | 内容过滤 |
| 代码注入 | AI 生成恶意代码 | 代码审查 |
| 权限滥用 | AI 执行危险操作 | 权限控制 |
| 隐私问题 | 代码被用于训练 | 选择合规服务 |
# 敏感信息保护#
## 自动过滤#
OpenCode 默认过滤敏感信息:
toml1[security.filter] 2enabled = true 3 4# 自动检测并过滤的模式 5patterns = [ 6 "password", 7 "api_key", 8 "secret", 9 "token", 10 "private_key", 11 "credential" 12] 13 14# 文件级别过滤 15exclude_files = [ 16 ".env", 17 ".env.*", 18 "*.pem", 19 "*.key", 20 "credentials.json", 21 "secrets.yaml" 22]
## 手动标记#
在代码中标记敏感区域:
typescript1// @opencode-ignore-start 2const SECRET_KEY = "super-secret-value"; 3const DATABASE_URL = "postgresql://user:pass@host/db"; 4// @opencode-ignore-end
## 脱敏显示#
❯ /context add src/config/database.ts
Adding file with redaction:
Original: DATABASE_URL = "postgresql://user:pass@localhost/db"
Redacted: DATABASE_URL = "postgresql://[REDACTED]@localhost/db"
# 执行权限控制#
## 沙箱模式#
限制 AI 的执行能力:
toml1[security.sandbox] 2enabled = true 3 4# 允许的操作 5allow = [ 6 "read_file", 7 "write_file", 8 "run_lint", 9 "run_test" 10] 11 12# 禁止的操作 13deny = [ 14 "delete_file", 15 "execute_shell", 16 "network_access", 17 "system_call" 18]
## 确认机制#
危险操作需要确认:
❯ 删除 node_modules 目录
⚠️ 危险操作警告!
操作:删除目录
目标:node_modules (125,432 files)
这是一个不可逆操作。确认执行?[yes/NO]
## 白名单目录#
toml1[security.paths] 2# 只允许访问这些目录 3allowed = [ 4 "./src", 5 "./tests", 6 "./docs" 7] 8 9# 始终禁止访问 10denied = [ 11 "~/.ssh", 12 "~/.aws", 13 "/etc" 14]
# 代码审查#
## 自动审查#
在执行 AI 生成的代码前自动审查:
toml1[security.code_review] 2enabled = true 3 4# 检查项 5checks = [ 6 "no_eval", # 禁止 eval 7 "no_shell_exec", # 禁止 shell 执行 8 "no_network_calls", # 检查网络调用 9 "no_file_system", # 检查文件系统操作 10]
## 危险模式检测#
❯ 帮我写一个执行用户输入的函数
⚠️ 安全警告:检测到潜在危险模式
生成的代码包含:
- eval() 调用(第 5 行)
- 未过滤的用户输入(第 3 行)
建议:
1. 使用白名单验证输入
2. 避免使用 eval
3. 使用更安全的替代方案
是否继续?[y/N]
## 代码签名#
验证 AI 生成代码的来源:
toml[security.signing] enabled = true verify_before_execute = true
# 网络安全#
## API 密钥管理#
bash1# 使用环境变量,不要硬编码 2export OPENAI_API_KEY="sk-..." 3 4# 或使用密钥管理器 5opencode config set api_key --from-keychain
## 代理设置#
toml1[network.proxy] 2http = "http://127.0.0.1:7890" 3https = "http://127.0.0.1:7890" 4 5# 不走代理的地址 6no_proxy = ["localhost", "127.0.0.1"]
## TLS 设置#
toml1[network.tls] 2verify = true 3min_version = "1.2" 4ca_bundle = "/path/to/ca-bundle.crt"
# 审计日志#
## 启用审计#
toml1[audit] 2enabled = true 3log_path = "~/.opencode/audit.log" 4 5# 记录的事件 6events = [ 7 "file_read", 8 "file_write", 9 "file_delete", 10 "command_execute", 11 "api_call" 12]
## 查看日志#
❯ /audit log
Recent activities:
[10:30:15] file_read: src/config.ts
[10:30:16] api_call: OpenAI completions
[10:30:20] file_write: src/config.ts
[10:31:05] command_execute: npm test
## 导出报告#
❯ /audit export --format json --from 2024-01-01
Exported audit log to audit-2024-01.json
# 隐私保护#
## 数据存储#
toml1[privacy.storage] 2# 本地存储,不上传 3location = "local" 4 5# 自动清理 6auto_cleanup = true 7retention_days = 30
## 遥测设置#
toml1[privacy.telemetry] 2# 禁用所有遥测 3enabled = false 4 5# 或只允许匿名统计 6enabled = true 7anonymous = true 8exclude_code = true
## 模型提供商选择#
不同提供商的数据政策:
| 提供商 | 数据用于训练 | 数据保留 |
|---|---|---|
| OpenAI API | 否(默认) | 30 天 |
| Anthropic | 否 | 按需 |
| Azure OpenAI | 否 | 可配置 |
| 本地模型 | 否 | 本地 |
# 企业安全#
## SSO 集成#
toml1[enterprise.sso] 2provider = "okta" 3client_id = "xxx" 4issuer = "https://company.okta.com"
## 合规模式#
toml1[enterprise.compliance] 2mode = "strict" 3 4# SOC2 合规 5soc2 = true 6 7# GDPR 合规 8gdpr = true 9 10# 数据驻留 11data_residency = "us-west"
## 访问控制#
toml1[enterprise.access] 2# 基于角色的访问控制 3rbac = true 4 5# 最小权限原则 6least_privilege = true 7 8# 操作审批 9approval_required = ["delete", "deploy"]
# 安全检查清单#
## 日常使用#
- 不在代码中硬编码密钥
- 使用
.gitignore排除敏感文件 - 定期检查审计日志
- 及时更新 OpenCode
## 团队使用#
- 统一安全配置
- 培训团队成员安全意识
- 定期安全审计
- 建立应急响应流程
## 企业部署#
- 私有化部署或使用企业版
- 配置网络隔离
- 启用全面审计
- 合规性评估
# 安全资源#
# 总结#
恭喜你完成了所有进阶教程!你已经掌握了:
- ✅ 多模型配置
- ✅ MCP 协议
- ✅ 自定义工具
- ✅ GitHub 集成
- ✅ 记忆系统
- ✅ Agent 模式
- ✅ 自动化工作流
- ✅ 安全与隐私
现在你已经是 OpenCode 高级用户了,可以充分利用它的强大功能提高开发效率!
继续探索:
← 上一节
自动化工作流
🎉 恭喜完成
你已掌握所有教程内容!