Actions 对象结构
Actions 可用于根据 OpenAPI 规范动态创建工具。actions 对象结构允许您为 agent/assistant 的操作指定允许的域名。
更多信息:Agents - Actions
示例
# Example Actions Object Structure
actions:
# Strict whitelist mode:
# allowedDomains:
# - "swapi.dev"
# - "librechat.ai"
# - "google.com"
# - "https://api.example.com:8443" # With protocol and port
# Default SSRF mode with private service exemptions:
allowedAddresses:
- "host.docker.internal:11434" # Permit one private host on one port
- "10.0.0.5:8080" # Permit one private IP on one portallowedDomains
密钥:
| Key | Type | Description | Example |
|---|---|---|---|
| allowedDomains | Array of Strings | 指定允许用于 agent/assistant 操作的域名的列表。 | When configured, only listed domains are allowed. When not configured, SSRF targets are blocked but all other domains are allowed. |
可选
安全上下文 (SSRF 保护)
LibreChat 包含 SSRF (Server-Side Request Forgery) 保护,其行为如下:
当未配置 allowedDomains 时:
- 容易受到 SSRF 攻击的目标默认被阻止
- 所有其他外部域名均被允许
当配置了 allowedDomains 时:
- 仅允许列表中的域名
- 可以通过显式地将内部/SSRF目标添加到列表中来允许它们。
被拦截的 SSRF 目标包括:
- Localhost 地址 (
localhost,127.0.0.1,::1) - 私有 IP 地址范围 (
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16) - 链路本地地址 (
169.254.0.0/16,包含云元数据 IP) - 内部 TLD (
.internal,.local,.localhost) - 常见的内部服务名称 (
redis,mongodb,postgres,api等)
如果您的操作需要访问内部服务,请将其添加到严格的 allowedDomains 白名单中,或者将 allowedDomains 留空并将具体的私有服务添加到 allowedAddresses 中。
模式格式
allowedDomains 数组支持多种格式:
-
仅域名 - 允许所有协议和端口:
allowedDomains: - "api.example.com" -
With protocol - 限制为特定协议:
allowedDomains: - "https://api.example.com" -
带协议和端口 - 限制为特定的协议和端口:
allowedDomains: - "https://api.example.com:8443" -
内部地址(必须明确允许):
allowedDomains: - "192.168.1.100" - "internal-api.local"
示例:
allowedDomains:
- "swapi.dev"
- "librechat.ai"
- "google.com"
- "https://secure-api.example.com:443"
- "192.168.1.50" # Internal service (explicitly allowed)allowedAddresses
allowedAddresses 是针对 SSRF 私有 IP 拦截的豁免列表,而非域名白名单。当您希望允许访问一两个特定的私有/内部服务,同时又不限制 Actions 对公共互联网的访问范围时,它是最合适的工具。
何时使用它来代替 allowedDomains
allowedDomains 是一个严格的白名单:当设置该项时,只有列出的条目是可访问的。在此处添加一个私有 IP 以允许(例如)自托管的内部 API,也会同时阻止所有未列出的公共操作 endpoint。
allowedAddresses 仅在未配置 allowedDomains 时使用。它允许特定的私有 host:port 目标,同时允许通过默认的 SSRF 策略访问其余的公共互联网。
actions:
allowedAddresses:
- "host.docker.internal:11434"
- "10.0.0.5:8080"
# allowedDomains is intentionally not set — public destinations
# remain reachable, only listed private host:port services are exempted.如果配置了 allowedDomains,它将具有权威性:私有服务必须列在其中,而不能依赖 allowedAddresses。
可接受的条目
- 带有端口的主机名:
host.docker.internal:11434,ollama.internal:8080,localhost:11434 - 带有端口的私有 IPv4 字面量:
10.0.0.5:8080,127.0.0.1:11434,192.168.1.10:443,169.254.169.254:80 - 带端口的方括号私有 IPv6 字面量:
[::1]:11434,[fc00::1]:8080,[fe80::1]:8080
被拒绝的条目(在配置加载时验证)
- URLs / paths / CIDR ranges:
http://10.0.0.5,10.0.0.0/24,/path - 裸主机名或 IP:
localhost、10.0.0.5、::1、[::1]— 每个条目都必须包含端口 - 无效端口:
localhost:0,localhost:65536,localhost:http - 公网 IP 字面量:
8.8.8.8:53,1.1.1.1:53,[2001:4860::8888]:443— 该字段的作用域仅限于私有 IP 空间;公网 IP 不属于 SSRF 攻击目标,因此公网 IP 免除规则没有防御意义。
Hostname trust
主机名条目会信任该主机名在运行时解析到的任何 IP 地址(在指定的端口上)。如果所列主机名的 DNS 被轮换或劫持以指向不同的私有 IP,则该豁免也会随之生效。请仅列出您拥有 DNS 控制权的主机名。在可能的情况下,优先使用具体的 IP 地址。
这篇指南怎么样?