Community编程与开发github.com

pkasarda/authorization

设计、实施或审查受保护资源和操作的访问策略。适用于新的受保护入口点、角色、所有权或租户范围、字段可见性、共享链接、委托任务和权限变更。仅身份认证不足以确定访问权限;仅视觉编辑无需授权审查。

authorization 是什么?

该技能专注于为受保护资源和操作提供精细化访问策略的设计、实施与审查。它强调在每个受影响的访问点做出明确的决策,并在实际边界强制执行,同时通过允许和拒绝的行为来验证策略的有效性。技能支持多种平台和场景,包括新受保护入口点、角色、所有权、租户范围、字段可见性、共享链接、委托任务和权限变更。其核心工作流程包括:定义策略(使用角色、属性、所有权或能力,并明确分离身份认证与操作权限)、发现所有受影响的访问路径、强制执行决策(对读取限制授权资源群体和字段,对变异验证操作、目标和结果关系)、以及通过精心设计的测试集证明边界。此外,技能还强调保持安全默认值(拒绝未匹配的访问)、明确特权操作与委托、以及区分演示环境与真实保护数据。使用该技能时,需要利用现有身份、策略和领域所有者,避免引入新框架。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/pkasarda/skills/tree/HEAD/skills/authorization

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

授权

将每个受影响的访问决策明确化,在实际边界强制执行,并证明允许和拒绝的行为。在请求的流程内工作;加载此技能并不意味着启动全局审计。在引入新框架之前,请使用现有的身份、策略和领域所有者。

定义策略

阅读已接受的产品决策和实际调用者。为更改的流程记录一个小型策略矩阵:主体、操作、资源、适用的关系/范围/状态、允许的输入/输出字段以及结果。根据实际需求使用角色、属性、所有权或能力;角色本身可能不足以确定对特定记录的访问权限。保留有意区分的读取、写入、导出、共享和管理权限。

将身份认证与操作权限分离。从受信任的会话、令牌或服务上下文中获取身份和授权。请求 ID、租户选择器、角色字段和 UI 状态用于选择或描述请求;它们本身不授予权限。匿名/公共访问可以明确允许或限定能力范围。缺失的身份或作用域不得静默地变为全局/系统授权。保持特权操作者和委托身份的明确性和可追溯性。

将未匹配的访问默认为拒绝,并使用满足已接受策略的最小权限。未决定的业务权限是一个产品问题,而不是发明宽松默认值的借口。在该选择仍未解决时继续独立工作。保持一个特意创建的、本地的、非共享的演示环境,与暴露真实受保护数据的服务区分开来。

找出所有受影响的访问路径

遵循受影响的资源通过其实际入口点和所有者。包括相关的 Web/Mobile API、服务器端渲染的加载器、操作、导入、批处理、作业和集成。当搜索/计数/导出、文件、缓存和订阅暴露相同的受保护数据时,请检查它们。阅读 访问面 了解这些路径或关于能力、委托和撤销的内容;选择适用的章节。

明确策略所有者和执行点。集中规则的含义,同时在数据或效果跨越信任边界的任何地方强制执行。单独的中间件登录检查、UI 守卫、UUID 或先前的成功读取不足以满足要求。框架策略、数据库策略或作用域所有者可以生效;请验证其实际配置和运行时凭据,不要假设它涵盖了绕过路径。

强制执行决策

对于读取,在结果离开信任边界之前限制授权的资源集合,并限制返回的字段。对相关对象和替代表示应用等效策略。对缺失资源与禁止资源使用产品的披露策略;错误、计数和序列化属性也可能暴露受保护的事实。

对于变异,验证操作、目标和结果关系,包括用户提供的外键和受保护字段。使用允许的输入字段,而不是将整个请求绑定到持久实体中。当可达到的交叉操作会使权限失效时,在效果处使用存储的适当原子守卫或序列化强制执行作用域、成员身份或状态。耦合的子对象和副作用遵循相同的准入。保留现有完整的所有者;不要仅仅为了插入授权检查而添加另一个业务写入器。

定义授权何时评估以及更改何时生效。当前访问、不可变的历史归因以及先前接受的持久义务是不同的合约。重放、延迟交付和委托作业需要明确的授权/生命周期;过时的用户声明或通用系统身份都不能回答这个问题。根据该合约应用撤销和恢复,而不要静默地取消有效义务或扩大其受众。

证明边界

从策略矩阵派生出一个小型区分性测试集。通过真实所有者和相关的已挂载边界,展示有效主体完成操作以及有意义的拒绝:同一租户中的另一个所有者、另一个租户、较弱的角色、匿名/格式错误的能力或已更改的授权(如果适用)。使用实际目标记录和显式诱饵;断言受保护字段、未更改的持久效果和不相关的记录。选择相关案例,而不是重复每种理论组合。

返回 true 或 false 的模拟策略既不能证明其决策,也不能证明查询/写入限制。使用真实运行时授权测试实际谓词或存储策略。对于 UI 访问声明,独立于按钮可见性验证直接请求。不要探测其他人的身份或共享/实时数据;使用隔离的授权装置。区分静态发现、建议的检查、已执行的测试和部署策略差距。

交付策略、权威来源、受影响的路径、强制执行和证明,以及未解决的产品选择或外部配置。通过的检查仅限于这些路径;该过程不会认证整个应用程序的安全性。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能