应配置域名与ip白名单、密钥作用域隔离及调用前校验钩子:一、修改skills_guard.py为白名单正则;二、在.env设outbound_allowed_ips/ports;三、config.yaml中按模型实例绑定专属密钥;四、新增guard_hook.py并在executor.py中调用校验。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您正在配置Hermes Agent的安全机制,但发现API密钥可能因出站请求被未授权服务捕获,则很可能是由于缺乏严格的域名与IP白名单控制。以下是设置白名单以防止API密钥泄露的具体操作步骤:
一、配置出站域名白名单
通过限制Hermes Agent仅能向预定义的可信域名发起HTTP/HTTPS请求,可有效阻止密钥在调用恶意或中间人服务时意外暴露。该策略由tools/skills_guard.py模块实时拦截非白名单域名请求。
1、打开项目根目录下的tools/skills_guard.py文件。
2、定位到可疑域名匹配规则段落,找到类似(r'webhook\.site|requestbin\.com', ...)的正则元组列表。
3、将原有黑名单逻辑替换为白名单逻辑:删除全部现有匹配项,仅保留一条允许规则,例如:(r'^api\.openai\.com$|^api\.majiabin\.com$', "allowed_api", "high", "whitelist", "trusted model providers")。
4、保存文件并重启Hermes Agent服务使规则生效。
二、启用环境变量IP白名单
在容器或本地运行环境中,通过环境变量限定Agent可连接的后端服务IP地址范围,从网络层阻断对非授权基础设施的连接尝试,避免密钥随请求头泄露至任意IP。
1、编辑~/.hermes/.env文件(Linux/macOS)或%USERPROFILE%\AppData\Local\hermes\.env(Windows)。
2、添加或修改以下两行:
OUTBOUND_ALLOWED_IPS=104.18.24.0/24,172.217.0.0/16
OUTBOUND_ALLOWED_PORTS=443,80
3、确保所填IP段覆盖您实际使用的模型服务商(如Cloudflare托管的OpenAI代理、Majiabin API等)的官方出口IP范围。
4、重新加载环境变量并启动hermes gateway进程。
三、配置模型API密钥作用域隔离
避免单一密钥具备全局调用权限,应为不同用途分配独立密钥,并在config.yaml中按模型实例绑定,降低单点泄露导致全系统失陷的风险。
1、登录各模型服务商控制台(如Majiabin、Xuedingmao、Feishu AI平台),分别为“主对话模型”“工具执行模型”“通知回调模型”创建专用API密钥。
2、打开config.yaml,在model:层级下为每个模型实例指定专属密钥:
model:
default: z-ai/glm-5.1
provider: majiabin
base_url: https://api.majiabin.com/v1
api_key: sk-maj-xxx-default
tools_model:
provider: xuedingmao
base_url: https://xuedingmao.com/v1
api_key: sk-xdm-xxx-tools
3、确认所有密钥均未在日志、错误响应或调试输出中明文打印。
四、启用技能调用前密钥校验钩子
在每次工具函数(如http_request、run_shell)执行前插入密钥使用合法性检查,拒绝携带未绑定白名单域名或IP的请求参数,实现运行时动态防护。
1、进入hermes/tools/目录,新建guard_hook.py文件。
2、写入如下校验逻辑:
def validate_api_call(url, headers):
if "Authorization" in headers and "Bearer" in headers["Authorization"]:
allowed_hosts = ["api.majiabin.com", "xuedingmao.com"]
host = urlparse(url).netloc
if host not in allowed_hosts:
raise PermissionError(f"API key usage denied for host: {host}")
3、在hermes/core/executor.py中导入该函数,并在execute_tool方法开头插入validate_api_call(url, headers)调用。
4、测试一次带密钥的HTTP请求,确认非法域名触发PermissionError异常而非真实发出请求。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











