最小权限 + 纵深防御
绝不信任任何未经严格验证的输入和访问,从代码、配置、数据、网络到日志,每一层都应设防。

第一部分:核心机密信息防护
这是防护的重中之重,主要针对密钥、令牌和认证信息。
-
严禁硬编码
- 绝不将任何API密钥(如OpenAI、 Anthropic、Google AI等)、数据库密码、SSH密钥、访问令牌等直接写入源代码文件(
.py,.js等)。 - 风险:代码泄露(如上传至GitHub)直接导致全线失守。
- 绝不将任何API密钥(如OpenAI、 Anthropic、Google AI等)、数据库密码、SSH密钥、访问令牌等直接写入源代码文件(
-
使用环境变量
- 标准做法:将所有敏感配置存储在环境变量中。
- 方法:创建
.env文件(但务必将其加入.gitignore),在应用启动时加载。# .env 文件示例 OPENAI_API_KEY="sk-..." DATABASE_URL="postgresql://user:password@localhost/dbname" SECRET_KEY="your-django-flask-secret-key"
- 在OpenClaw的配置文件中,通过
os.getenv(‘OPENAI_API_KEY’)等方式引用。
-
加密存储与密钥管理
- 对于生产环境,考虑使用更专业的密钥管理服务:
- 云服务:AWS Secrets Manager, Azure Key Vault, GCP Secret Manager。
- 自托管:HashiCorp Vault, Bitwarden。
- 这些服务提供密钥的自动轮换、访问审计和精细的权限控制。
- 对于生产环境,考虑使用更专业的密钥管理服务:
-
模型访问令牌
如果您使用了需要认证的专有模型(如通过OpenAI格式接口调用的本地模型),其访问令牌应视同API密钥进行同等保护。
第二部分:配置与文件安全
-
配置文件隔离
- 将开发、测试、生产环境的配置完全分离,使用不同的
.env文件(如.env.production),并由部署脚本或容器运行时指定。 - 确保生产环境配置文件仅对必要用户和进程可读。
- 将开发、测试、生产环境的配置完全分离,使用不同的
-
模型文件安全
- 来源可信:仅从官方或绝对可信的源下载模型文件(
.bin,.safetensors,.pth等),验证哈希值。 - 存储安全:模型文件可能包含训练数据信息,将其存放在访问受限的目录,权限设置为仅运行OpenClaw的服务账户可读。
- 网络隔离:如果不需从互联网更新模型,禁止运行模型的容器/服务器访问外部网络。
- 来源可信:仅从官方或绝对可信的源下载模型文件(
-
数据库与向量库
- 连接安全:使用强密码,并通过SSL/TLS连接数据库(如PostgreSQL for pgvector)。
- 权限限制:为OpenClaw应用创建专属数据库用户,只授予其必需的
INSERT,SELECT,UPDATE权限,而非DROP或ALL PRIVILEGES。 - 数据加密:
- 静态加密:启用数据库的磁盘加密功能。
- 传输中加密:确保应用与数据库之间的连接使用TLS。
第三部分:应用程序与运行时安全
-
依赖安全
- 定期使用
pip-audit,safety,npm audit等工具扫描项目依赖,修复已知漏洞。 - 锁定依赖版本:使用
requirements.txt精确版本或Pipfile.lock,避免因自动升级引入不兼容或存在漏洞的版本。
- 定期使用
-
输入验证与 sanitization
- 对用户输入进行严格清洗和验证,防止Prompt注入攻击。
- 定义清晰的角色和系统提示词,加固模型的行为边界。
- 对用户输入进行关键词过滤、长度限制、格式检查。
- 考虑在调用模型前,对输入进行内容安全审查(如检测是否试图窃取系统提示)。
- 对文件上传功能:检查文件类型、大小,并在沙箱环境中处理。
- 对用户输入进行严格清洗和验证,防止Prompt注入攻击。
-
输出过滤
- 在模型返回结果给用户前,实施输出过滤。
- 防止模型在“越狱”后泄露其系统提示词、内部指令或其他敏感配置信息。
- 过滤掉响应中可能出现的访问令牌、内部路径等模式的内容。
第四部分:网络与访问控制
-
最小化网络暴露
- 绝不将OpenClaw的管理后台或API直接暴露在公网(
0.0.0)。 - 使用反向代理(如Nginx, Caddy):
- 仅暴露
443(HTTPS)端口。 - 在反向代理层设置速率限制、请求大小限制。
- 为管理接口(如
/admin,/dashboard)设置独立的访问路径和更强的认证。
- 仅暴露
- 绝不将OpenClaw的管理后台或API直接暴露在公网(
-
强制HTTPS
使用有效的TLS证书(如Let‘s Encrypt),将所有HTTP流量重定向至HTTPS。
-
防火墙与安全组
- 在服务器或云安全组中,仅开放必要的端口(如
443,22for SSH)。 - 考虑将OpenClaw服务置于私有子网,通过跳板机或VPN访问。
- 在服务器或云安全组中,仅开放必要的端口(如
-
身份验证与授权
- 如果OpenClaw提供多用户功能,启用强密码策略。
- 强烈建议集成现有的身份提供商(如OAuth2, LDAP),或使用成熟的认证中间件。
- 实施基于角色的访问控制,区分普通用户、管理员。
第五部分:审计与监控
-
日志管理
- 不要在日志中记录敏感信息,确保日志配置不会打印出完整的请求/响应体(可能包含用户隐私或API密钥)。
- 将日志发送到独立的、受保护的日志服务器(如ELK Stack, Loki)进行分析。
- 监控日志中的异常模式:如大量认证失败、异常的Prompt请求、高频率的特定API调用。
-
访问审计
- 记录所有对管理接口的访问。
- 记录关键操作(如模型重新加载、配置更改、用户权限变更)。
第六部分:物理与运维安全
-
服务器/容器安全
- 非root用户运行:确保Docker容器或系统服务不以root权限运行OpenClaw。
- 定期更新:及时更新操作系统、Docker运行时、Python解释器的安全补丁。
- 容器镜像扫描:使用
trivy或docker scan检查基础镜像和最终镜像中的漏洞。
-
备份与恢复
- 定期备份:配置文件、数据库、向量化数据。
- 加密备份:备份文件也应加密存储。
- 测试恢复流程:确保在发生安全事件(如勒索软件)后能快速恢复。
检查清单(安装后立即执行)
- [ ] 1. 找到所有配置文件,将硬编码的密钥替换为环境变量。
- [ ] 2. 创建
.env文件并添加到.gitignore,设置强密码和密钥。 - [ ] 3. 审查并限制模型文件、数据库的访问权限(如
chmod 600, 专属用户)。 - [ ] 4. 检查防火墙,确保只开放必要端口。
- [ ] 5. 设置反向代理和HTTPS。
- [ ] 6. 审查应用日志配置,确保不泄露敏感数据。
- [ ] 7. 运行
pip-audit检查依赖漏洞。 - [ ] 8. 修改所有默认密码和默认账户(如数据库、管理后台)。
- [ ] 9. 制定并测试备份方案。
- [ ] 10. 建立定期(如每周)安全审查制度。
最后提醒:安全是一个持续的过程,而非一次性的任务,随着OpenClaw的更新和威胁环境的变化,您需要不断复审和更新您的安全措施,建议参考OWASP AI Security & Privacy Guide等专业资源,以获取更深入的信息。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。