Pryxor 开源 AI 智能体运行时安全层,在动作边界做授权决策
I build an open-source runtime security layer for AI agents – Let's break it
Pryxor 是一个自托管运行时网关,在智能体工具调用到达真实系统前评估具体动作,返回 APPROVED、HOLD 或 BLOCKED 三种结果,并支持人工审批与凭证隔离。
AI 代理操作的运行时授权
AI 代理通常拥有有效凭证,却仍然执行错误的操作。
一个令牌可以授权访问 CRM、数据库、电子邮件提供商或支付 API。但这并不意味着使用该令牌发出的每个请求都应被允许。
Pryxor 是一个自托管的运行时网关,在代理的具体操作到达真实系统之前对其进行评估。
代理提出请求。
Pryxor 做出决定。
受信任的执行器执行操作。
演示
Pryxor 可以:
- 批准安全操作;
- 阻止禁止的操作;
- 暂停有风险的操作以供人工审核;
- 执行已批准的操作,而不向代理暴露上游凭证;
- 记录策略决策、审批生命周期和执行结果。
它专为能够发送消息、修改数据、访问文件、调用 API 或执行其他外部可见操作的代理而设计。
Pryxor 不是 LLM 防火墙,目前本身并不理解用户意图。它在操作边界执行明确、确定性的控制。
问题:已授权但危险
传统授权通常回答:
此身份能否调用此 API?
代理安全还需要回答:
现在是否应允许这一确切操作?
这是两个不同的问题。
一个对 CRM 拥有有效读取权限的代理可能会:
- 检索远超任务所需的记录;
- 重复发出单个有效的请求,直到导出整个客户表;
- 读取敏感数据,然后将其发送到外部目的地;
- 在用户任务已经完成后继续操作;
- 因为 API 凭证在技术上允许,而执行破坏性操作。
Pryxor 并不声称能自动解决所有这些问题。它提供了执行点,使这些决策可以被明确制定、测试、审计,并与人工审批相连接。
工作原理
AI agent
|
| proposes a tool call
v
Pryxor runtime
|
| authenticate the agent
| validate the arguments
| evaluate deterministic policy
| approve, block, or hold
v
Trusted executor
|
| uses the real credential
| calls the external system
v
External API
作为执行契约的一部分,代理不会收到执行器的 API URL 或上游密钥。
每个受管控的操作都会返回三种结果之一:
- APPROVED
- HOLD
- BLOCKED
HOLD 不是可重试的错误。代理不得简单地再次提交相同的操作。
尝试演示
该演示使用模拟的 HTTP 端点。它不会发送真实电子邮件。
请参阅 QUICKSTART.md 获取完整演练。
要求:
- Docker 24+
- Docker Compose v2
- Git
git clone https://github.com/Pryxor/pryxor.git
cd pryxor
make init
make up
make health示例策略包含两条规则:
- 发往内部域的电子邮件被批准;
- 发往外部域的电子邮件被暂停以供审核。
注册一个代理:
make register AGENT=ops_agent
复制返回的代理密钥:
export PRYXOR_AGENT_KEY="your-agent-key" export PRYXOR_URL="http://127.0.0.1:8000"
使用内部收件人调用模拟电子邮件工具:
curl -s "$PRYXOR_URL/v1/execute-tool" \ -H "X-Agent-Key: $PRYXOR_AGENT_KEY" \ -H "Content-Type: application/json" \ -d '{ "tool_name": "send_email", "parameters": { "to": "alice@company.local", "subject": "Hello", "body": "This is an internal test." } }' | python -m json.tool
预期结果:
{
"status": "APPROVED",
"execution": {
"success": true
}
}现在尝试外部收件人:
curl -s "$PRYXOR_URL/v1/execute-tool" \ -H "X-Agent-Key: $PRYXOR_AGENT_KEY" \ -H "Content-Type: application/json" \ -d '{ "tool_name": "send_email", "parameters": { "to": "bob@example.com", "subject": "External test", "body": "This action requires review." } }' | python -m json.tool
预期结果:
{
"status": "HOLD",
"action_id": "hold_...",
"reason": "EXTERNAL_EMAIL",
"retry": false
}尚未发送任何内容。
注册一个管理员:
make register-admin NAME=reviewer
然后批准该暂停:
make approve HOLD_ID=hold_...
Pryxor 仅在批准后执行操作,并在审计跟踪中记录批准的管理员。
策略示例
策略是明确且确定性的:
{
"type": "declarative",
"rules": [
{
"name": "allow-internal-emails",
"when": {
"tool": "send_email",
"to_domain_in": ["company.local"]
},
"then": {
"approve": true
}
},
{
"name": "hold-external-emails",
"when": {
"tool": "send_email"
},
"then": {
"hold": "EXTERNAL_EMAIL",
"message": "External recipients require human approval."
}
}
]
}在调用执行器之前评估规则。
对于安全敏感的部署,Pryxor 应使用默认拒绝策略:没有明确有效授权规则的操作不得执行。
Pryxor 目前提供
- 对受管控工具调用的运行时拦截;
- 代理和管理员身份验证;
- 根据工具模式进行参数验证;
- 确定性的 APPROVED、HOLD 和 BLOCKED 结果;
- 持久的人工审批状态;
- 批准和拒绝生命周期跟踪;
- 与代理的凭证隔离;
- 可配置的 HTTP 执行器;
- 执行尝试的幂等键;
- 经过脱敏的审计记录;
- 指标与通知;
- MCP 支持;
- Python SDK;
- 针对选定 agent 框架的适配器;
- 单节点 Docker 部署。
Pryxor 不声称的内容
Pryxor 不是:
- IAM 的替代品;
- LLM 提示注入检测器;
- 恶意代码沙箱;
- 完整的数据防泄漏系统;
- 监控或追踪平台;
- 外部 API 将恰好执行一次的保证;
- 自动理解用户意图的系统。
Pryxor 只能治理实际经由它路由的操作。如果 agent 有另一条通往外部系统的路径,该路径必须被移除或单独控制。
被攻陷且持有有效 Pryxor 密钥的 agent 主机仍可能以该 agent 的身份提交请求。生产部署除 Pryxor 外还需要网络控制、密钥轮换、最小权限和主机隔离。
项目状态
Pryxor 是一个早期开源项目。
当前版本适用于:
- 本地评估;
- 安全实验;
- 预发布环境;
- 单节点部署;
- 构建集成和策略原型。
它尚不足以声称:
- 高可用性;
- 多租户 SaaS;
- SSO 或企业 RBAC;
- 管理仪表盘;
- 受监管环境合规;
- 防御一切形式的数据外泄;
- 自主意图理解。
安全声明只有在其边界明确时才有意义。在将 Pryxor 用于真实系统之前,请阅读 KNOWN_LIMITATIONS.md。
路线图
项目正朝四个方向推进:
更安全的策略语义
- 默认拒绝行为;
- 严格的策略校验;
- 绑定操作的审批;
- 策略模拟与测试;
- 累计预算与速率限制。
可靠执行
- 更清晰的超时与未知结果处理;
- 连接器特定的幂等性;
- 执行前立即重新校验;
- 更安全的 重试与恢复。
团队运营
- 审批收件箱;
- 基于角色的审核者;
- 策略版本管理;
- 审批通知;
- 审计导出。
更广泛的部署
- PostgreSQL 支撑的状态;
- 水平扩展;
- SSO;
- 密钥管理器集成;
- 更多 MCP 和框架集成。
核心运行时将继续以 Apache-2.0 许可证开源。
贡献
最有用的贡献是:
- 对抗性测试用例;
- 暴露危险边缘情况的策略;
- 执行器集成;
- MCP 兼容性报告;
- 框架适配器;
- 安全审查;
- 文档改进。
有用的问题不只是“这个功能会不错”。而是一个具体场景:
这是工具调用,这是策略,这是应该发生的情况,而这是实际发生的情况。
请私下报告安全漏洞。参见 SECURITY.md。
许可证
Apache License 2.0
来源:Hacker News · github.com
