内容
# 制裁
**AI 代理的独立授权平面**
在代理花费资金、调用工具、接触凭证或配置资源之前,它会询问制裁。制裁会批准、升级给人类或拒绝。每个决定都会被记录和审计。制裁不属于任何平台:一个策略引擎可以跨模型提供商、支付渠道、身份和代理生态系统进行回答。
## 它做什么
一个策略决策引擎管理所有类型的代理操作:
| 被管理的操作 | 制裁强制执行的内容 |
|---|---|
| **花费** (`/authorize`) | 自动批准下限、人工升级区间、每笔交易硬上限、日预算和月预算 — 在检查和扣款时原子化。 |
| **工具** (`/authorize/tool`) | 工具或外部操作的阻止/允许/升级列表。升级请求会到达审批邮箱,就像花费一样。 |
| **凭证** (`/exec` + `/credentials/inject`) | 使用 AES-256-GCM 信封加密的凭证库(KMS 封装,密钥轮换)。注入需要作用域为 15 分钟的执行 JWT 和大于凭证栏的许可。每次访问都会记录审计日志。 |
| **配置** (`/authorize/provision`) | 席位、许可证、基础设施 — 资源、行项目、数量和美元在一次调用中授权。 |
| **能力** (`/authorize/capability`) | 技能、插件、新 API — 获取能力的过程与花费资金类似。一个有序的规则列表(阻止/允许/升级,前缀通配符模式)在新能力赋予代理之前进行控制。 |
在引擎周围:
- **人工审批 → 一次性授权**。升级请求会到达审批邮箱(仪表盘 PWA、电子邮件、Slack)。审批会生成一次性、过期的授权,代理在重试时可兑换。策略超时保证终端结果。
- **席位**。代理是一个席位,您可以将其授予任意持有者:命名持有者、承包商自动过期(密钥在过期日期后失效)、密钥轮换以保留历史记录,以及从一个模板批量创建。
- **预算层级**。钱包嵌套成树结构;子树上限被原子化强制执行,因此子代理无法超越父级的限制。仪表盘显示预算运行状况 — 使用百分比、速度、预计耗尽时间 — 从钱包到席位。
- **通知**。默认情况下使用电子邮件;Slack 使用粘贴的 webhook URL(可读消息、审批按钮);机器使用签名的 JSON webhooks — 每个路由订阅其自己的事件。[指南](docs/NOTIFICATIONS.md)
- **证据**。每个策略编辑成为不可变的修订版本;每个决定存储强制执行的修订版本和引擎评估的确切上下文。 `GET /authorize/{id}/evidence` 在存储的上下文中重放纯规则并证明结果重现。
- **假设**。 `POST /policy/simulate` 在候选策略下重放存储的决定 — 哪些调用会翻转,哪些花费不会清除 — 在更改任何内容之前。
- **审计平面**。 `GET /audit-events` 合并所有决定、令牌日志和机密访问到一个日志中(包括 CSV 导出); `GET /reporting/summary` 跨任意时间段(≤92 天)汇总数据,包括日桶和按席位汇总;钱包统计数据显示燃烧速度和预计耗尽时间;每周一早会在 Slack 发送摘要。
- **LLM 网关**。将模型 SDK 的基础 URL 指向 `https://getsanction.com/api/gateway/<provider>`,并附上 `x-sanction-key` — 使用情况会被计量并预算上限,零每次调用的额外开销。
上述每个安全声明都映射到强制执行的代码和回归测试,详见 [docs/TRACEABILITY.md](docs/TRACEABILITY.md) — 700+ 测试覆盖率达 88%,包括并发和 Postgres 行级安全套件。
## 分发
平台供应商在其自身范围内管理代理。制裁授权代理无论在何处运行:
- **MCP 服务器** — 在任意 MCP 主机(Claude Desktop 等)中使用 `npx sanction-mcp`。
- **AuthZEN PDP** — 任意 [OpenID AuthZEN 1.0](https://openid.net/specs/authorization-api-1_0.html) 强制执行点可以使用制裁作为其决策点,无需自定义代码([指南](docs/AUTHZEN.md))。
- **TypeScript SDK** — `@sanction/sdk`:`SanctionClient`(代理平面)和 `SanctionAdminClient`(管理平面)。
- **REST API** — 直接集成,OpenAPI 3.0 规范位于 `/api/openapi.json`(与 Bedrock 兼容)。
- **AWS Bedrock Action Group** — 企业代理编排([设置指南](docs/BEDROCK.md))。
- **LLM 网关** — 跨提供商计量,无需代码更改。
指南:[快速入门](docs/QUICKSTART.md) · [入门套件](docs/STARTER-KIT.md) · [LangChain](docs/LANGCHAIN.md) · [CrewAI](docs/CREWAI.md) · [Vercel AI SDK](docs/VERCEL-AI-SDK.md) · [Bedrock 代理](docs/BEDROCK.md) · [代理舰队](docs/AGENT-FLEETS.md) · [AuthZEN PDP](docs/AUTHZEN.md) · [多租户运行手册](docs/INTEGRATION.md) · [通知](docs/NOTIFICATIONS.md)
## API
基准 URL:`https://getsanction.com/api/v1`
```
# 授权(代理密钥:x-api-key pxy_...)
POST /authorize — 授权花费操作(grant_id 兑换审批)
POST /authorize/tool — 授权工具调用
POST /authorize/provision — 授权配置(资源 + 行项目 + $)
POST /authorize/capability — 授权获取能力(技能/插件/API)
GET /authorize/{id} — 轮询升级决策(包含授权收据)
GET /authorize/{id}/evidence — 在存储的上下文中重放决策(匹配判决)
POST /tokens — 记录 LLM 令牌消耗以对抗日预算
POST /exec — 发布作用域执行 JWT(15 分钟 TTL)
POST /credentials/inject — 注入解密凭证(Bearer JWT)
GET /audit-events — 统一审计日志(决策、令牌、机密访问;?format=csv)
GET /reporting/summary — 任意范围 ≤92 天:总数、日桶、按代理汇总
GET /reporting/daily-summary — 一日汇总
# AuthZEN PDP + AARP(代理密钥;基准 https://getsanction.com/api — 规范规范路径)
POST /access/v1/evaluation — OpenID AuthZEN 1.0 评估(仅决策)
POST /access/v1/evaluations — AuthZEN 批量评估,所有三种评估语义
POST /access/v1/access-request — AARP:从签名绑定令牌打开升级
GET /access/v1/access-request/{id} — AARP 任务状态(映射到配置文件状态)
# 管理(所有者密钥:x-mgmt-key sk_...)
POST /wallets — 创建钱包 + 策略(管理密钥显示一次)
GET /wallets/stats — 今日 + 本月至今统计 + 燃烧预测
GET /wallets/tree — 子树花费汇总
GET/PATCH /wallets/policy — 读取/更新预算、阈值、列表、能力规则
POST /policy/simulate — 在候选策略下重放真实历史(假设)
GET /policy/packs — 列出可安装的策略包(公共)
POST /policy/packs/{id}/preview — 在最近 30 天内模拟一个包
POST /policy/packs/{id}/apply — 安装一个包作为钱包策略(写入修订版)
POST /wallets/keys/rotate — 旋转钱包的数据加密密钥
POST /agents — 注册席位(持有者、过期;密钥显示一次)
POST /agents/batch — 印章一个模板到最多 50 个席位
GET/PATCH /agents — 列出/每个席位的预算、许可、持有者、过期
POST /agents/rotate — 旋转席位的密钥(可选传递给新持有者)
POST /credentials/vault — 存储加密凭证
POST /exec/revoke — 杀死一个活跃的执行令牌
GET/POST /approvals — 审批邮箱;审批生成一次性授权
POST /webhooks — 注册通知路由(每个事件订阅)
```
完整模式: [`/api/openapi.json`](https://getsanction.com/api/openapi.json).
## MCP 设置
```json
{
"mcpServers": {
"sanction": {
"command": "npx",
"args": ["sanction-mcp"],
"env": {
"SANCTION_API_URL": "https://getsanction.com/api/v1",
"SANCTION_API_KEY": "pxy_...",
"SANCTION_WALLET_ID": "wallet_..."
}
}
}
}
```
## 技术栈
Next.js 16(应用路由器)+ TypeScript · Prisma 7 在 Neon Postgres 上(强制执行行级安全)· Vercel · jose(HS256,算法固定)· 使用 AWS KMS 根信任的生产环境中的 AES-256-GCM 信封加密。
## 贡献与安全
[CONTRIBUTING.md](CONTRIBUTING.md) 让您从克隆到绿色 PR(`npm install && npm run check` — 单元测试无需数据库)。安全模型和披露: [docs/SECURITY.md](docs/SECURITY.md). 词汇: [docs/DOMAIN.md](docs/DOMAIN.md).
## 定价
免费或协议。 **免费** 适用于个人 — 无需信用卡,个人和生产环境使用。除此之外,企业协议根据您的部署情况量身定制:SSO、策略管理、审计导出、SLA。 [联系我们](https://getsanction.com/#pricing).
## 许可证
- **`packages/sanction-mcp`** (MCP 客户端)— [MIT](packages/sanction-mcp/LICENSE). 可以在任何地方嵌入。
- **其他所有内容** (服务器、仪表盘、API)— [功能源许可证 1.1](LICENSE) (FSL-1.1-MIT). 源代码可用:可用于任何目的,但不得提供竞争性服务。使用两年后转换为 MIT。
- **超出 FSL 的商业使用** — [商业许可证指南](docs/COMMERCIAL-LICENSE.md) ([现场](https://getsanction.com/docs/commercial-license)).