Supermemory 如何用 scoped API key 把客户端访问限制在指定 containerTag

📅 发布时间:2026/9/12 15:43:39
Supermemory 如何用 scoped API key 把客户端访问限制在指定 containerTag
Supermemory 如何用 scoped API key 把客户端访问限制在指定 containerTag【免费下载链接】supermemoryMemory and context engine app that is extremely fast, scalable, and can be run fully locally. The Memory API for the AI era.项目地址: https://gitcode.com/GitHub_Trending/su/supermemory在多租户应用里你通常会把一个 API key 直接发给前端、某个会话或某个租户的客户端。Supermemory 的做法是用scoped API key作用域受限的 key把某个客户端的访问范围锁死在一个或几个containerTag上让它只能读写、搜索这些 container 里的文档和记忆而不是把组织级 master key 发出去。认证文档 明确把这一机制定位为「给客户端、会话或租户有限访问而不必下发 org master key」。前提条件已有一个 Supermemory 组织并拿到组织级 API key文档称为YOUR_API_KEY从 Developer Platform 获取。目标数据已经按containerTag组织。Container tag 的命名规则不超过 100 字符只允许字母、数字、连字符-、下划线_、冒号:匹配^[a-zA-Z0-9_:-]$见 Container Tags 文档。注意一个文档间差异创建 scoped key 的参数说明里containerTag额外允许点号.而 container tag 通用校验规则未列出点号使用时建议避开点号。创建 scoped key用组织级 key 调用POST /v3/auth/scoped-key。下面命令中的YOUR_API_KEY替换为你的组织级 keycurl https://api.supermemory.ai/v3/auth/scoped-key \ --request POST \ --header Content-Type: application/json \ --header Authorization: Bearer YOUR_API_KEY \ -d { containerTag: my-project, name: my-key-name, expiresInDays: 30 }参数说明来自 authentication.mdx参数必填默认值说明containerTag是—限定的 container tagname否scoped_{containerTag}key 的显示名expiresInDays否—有效期1–365 天rateLimitMax否500每窗口最大请求数1–10,000rateLimitTimeWindow否60000限流窗口毫秒1–3,600,000成功时返回以下为文档示例响应{ key: sm_orgId_..., id: key-id, name: scoped_my-project, containerTag: my-project, expiresAt: 2026-03-08T00:00:00.000Z, allowedEndpoints: [/v3/documents, /v3/memories, /v4/memories, /v3/search, /v4/search, /v4/profile] }两个需要记住的返回值key是发出去给客户端的凭据id之后用来禁用这个 key。客户端使用 scoped key返回的 key 和正常 API key 用法一致放进Authorization: Bearer头即可只是它「在其 container 范围之外不生效」。以搜索为例把SCOPED_KEY换成上一步返回的 keycurl -X POST https://api.supermemory.ai/v4/search \ -H Authorization: Bearer SCOPED_KEY \ -H Content-Type: application/json \ -d { q: machine learning, containerTag: my-project, searchMode: hybrid, limit: 5 }用 SDK 时同样只是换 key例如 TypeScript SDK 的new Supermemory({ apiKey: SCOPED_KEY })。scoped key 只被允许访问以下端点超出即不可用/v3/documents/v3/memories/v4/memories/v3/search/v4/search/v4/profile也就是说scoped key不能读取计费信息、管理组织设置也不能再签发新的 key。如果你的客户端需要这些能力它拿到的只能是组织级 key那就不属于本场景。验证访问边界Container Tags 文档 的「Access control」一节给出了受限调用的行为规则可以用来核对作用域是否生效客户端用 scoped key 搜索自己范围内的 tag如上面示例的my-project请求正常返回结果。用同一个 scoped key 请求允许集合之外的 tag返回403 Forbidden。受限调用方如果请求里不带 tagSupermemory 会自动把请求限定到该 key 允许的 tag 上。该机制在数据层强制执行——文档原话是「你可以发出一把在物理上就无法读写其他租户数据的 API key」不依赖你的应用代码去拦截。安全文档 对此的表述是拿着一个正确作用域 key 的恶意或有 bug 的客户端无法读取另一个 container 的记忆。禁用 key 时的行为用创建时返回的id不是 key 字符串本身发 DELETE 请求用组织级 key 认证curl https://api.supermemory.ai/v3/auth/scoped-key/KEY_ID \ --request DELETE \ -header Authorization: Bearer YOUR_API_KEY成功返回{ success: true }。之后的影响要分清两件事该 scoped key 的后续请求会得到401数据不受影响——container 里的 memories 和 container tag 本身不会被删除。这个边界对安全场景很重要吊销凭据是切断访问的手段不是擦除数据的操作。安全文档 给出的 GDPR 风格删除用户流程正是两步组合先按 container tag 删除该用户名下的 documents 和 memories再吊销发给该用户的 scoped keys。限制与说明scoped key 的有效期最长 365 天expiresInDays上限过期后需要重新签发。创建请求里是单个containerTag字段文档描述为「restricted to one or morecontainerTags」且 Container Tags 文档提到 key 可以限定到一组 tag、按 tag 区分读写权限但创建示例只展示了单个 tag 的用法多 tag 的具体请求形态请以 Developer Platform 当前文档为准。限流参数rateLimitMax/rateLimitTimeWindow允许你按客户端粒度再收紧请求频率默认是 60000 毫秒窗口内 500 次。如果客户端只需要查某个 container 的 profile/v4/profile也在允许列表内文档管理端点仅限/v3/documents系列没有/v4文档端点条目。按上面的顺序操作完你得到的结果是客户端手里只有一把带范围、带有效期、可随时吊销的 key越权 tag 请求在数据层被403拒绝吊销后401而组织 master key 从未离开你的服务端。【免费下载链接】supermemoryMemory and context engine app that is extremely fast, scalable, and can be run fully locally. The Memory API for the AI era.项目地址: https://gitcode.com/GitHub_Trending/su/supermemory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考