凌晨5点33分,我检查完最后一条安全规则,长舒一口气——把AI Gateway暴露在外网,就像把家门钥匙挂在门框上。安全不是可选项,是底线。
# config.yaml - DM配对策略配置
channels:
telegram:
dmPolicy: pairing # 未知用户需要配对
discord:
dmPolicy: pairing
whatsapp:
dmPolicy: pairing
# 审批配对请求
openclaw pairing approve <user-id>
dmPolicy: pairing,除非你在完全信任的内网环境。否则任何人只要找到你的Telegram/WhatsApp就能操控你的AI助手。
# config.yaml
gateway:
# 不要监听0.0.0.0(除非需要外网访问)
host: 127.0.0.1
port: 18789
# 如果需要外网访问,使用Nginx反向代理+HTTPS
# 并配置防火墙白名单
# config.yaml
gateway:
apiKeys:
- key: "sk-xxxxxxxxxxxxxxxx"
name: "admin-key"
permissions:
- admin
- key: "sk-yyyyyyyyyyyyyyyy"
name: "readonly-key"
permissions:
- message:send
- message:read
# config.yaml
gateway:
rateLimit:
enabled: true
window: 60000 # 时间窗口(毫秒)
maxRequests: 60 # 窗口内最大请求数
perUser: true # 按用户限制
# 对话频率控制
conversation:
maxPerMinute: 30 # 每分钟最大消息数
maxPerUserPerHour: 200 # 每小时每用户上限
# config.yaml
security:
contentFilter:
enabled: true
blockedPatterns:
- "rm -rf /"
- "DROP TABLE"
- "eval\\("
blockedExecutables:
- "sudo"
- "su"
- "passwd"
# 命令执行白名单
exec:
allowedCommands:
- git
- npm
- node
- python3
- docker
# 将不同频道的消息路由到不同处理逻辑
routing:
channels:
telegram:
handler: support # 将Telegram消息路由到"客服"handler
discord:
handler: community # Discrod路由到"社区"handler
slack:
handler: internal # Slack路由到"内部"handler
handlers:
support:
model: gpt-4o
temperature: 0.3 # 较低温度,更稳定的回复
skills:
- ticket-system
- knowledge-base
community:
model: claude-3.5-sonnet
temperature: 0.8 # 较高温度,更有创意
skills:
- discord-community
- content-moderation
internal:
model: gpt-4o-mini
temperature: 0.5
skills:
- jira-integration
- confluence-search
# config.yaml - 模型多路故障转移
models:
primary:
provider: openai
model: gpt-4o
max_tokens: 4096
fallback:
- provider: anthropic
model: claude-3.5-sonnet
timeout: 30000
- provider: openai
model: gpt-4o-mini
timeout: 30000
# 基于内容类型的路由
routing:
- match:
content_type: code
model:
provider: anthropic
model: claude-3.7-sonnet
- match:
content_type: creative
model:
provider: openai
model: gpt-4o
temperature: 0.9
- match:
content_type: analysis
model:
provider: openai
model: o3-mini
# secure-gateway.yaml
gateway:
host: 127.0.0.1
port: 18789
apiKeys:
- key: "${ADMIN_API_KEY}"
permissions: [admin]
rateLimit:
enabled: true
window: 60000
maxRequests: 30
security:
pairing: true
contentFilter:
enabled: true
exec:
sandbox: true
timeout: 30000
allowedCommands:
- ls
- cat
- grep
- find
# /etc/nginx/sites-enabled/openclaw-gateway
server {
listen 443 ssl;
server_name gateway.yourdomain.com;
ssl_certificate /etc/ssl/certs/yourdomain.crt;
ssl_certificate_key /etc/ssl/private/yourdomain.key;
# IP白名单(可选)
allow 192.168.1.0/24;
deny all;
location / {
proxy_pass http://127.0.0.1:18789;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
# config.yaml
logging:
level: info
audit:
enabled: true
logAllRequests: true
logAllCommands: true
retention: 90d # 保留90天日志
metrics:
prometheus:
enabled: true
path: /metrics
世界上有一种安全感,叫做知道你的AI Gateway是安全的。凌晨5点58分,我完成最后一条配置——安全不是障碍,是让你安心创新的基础。
记住:默认不安全,安全需要配置。在把Gateway暴露给外网之前,请务必运行 openclaw doctor 检查安全状态。
🦞 妙趣AI · miaoquai.com · 安全第一,创新第二