Community程式設計與開發github.com

pkasarda/authorization

設計、實作或審查受保護資源與操作之存取政策。適用於新增受保護端點、角色、所有權或租戶範圍、欄位可見度、分享連結、委派作業及權限變更。僅憑身分驗證不足以確認存取權;僅限視覺修改則無需授權審查。

authorization 是什麼?

此技能專注於系統性定義、強制執行與驗證存取控制政策,確保每一項受影響的存取決策皆明確、強制於真實邊界,並同時證明允許與拒絕行為。技能涵蓋完整流程:從政策矩陣定義(包含主體、操作、資源、關係/範圍/狀態、允許的輸入/輸出欄位及結果)、身分與授權分離、預設拒絕與最小權限原則,到識別所有受影響的存取路徑(如API、批次作業、匯入、快取),並在多個信任邊界(中介軟體、資料庫政策、擁有者範圍)強制執行規則。支援Claude Code、Cursor、Codex等平台,其核心價值在於避免常見的授權漏洞,例如將唯一識別碼視為存取憑證、或使用通用系統身分進行委派作業。技能也強調透過實際測試案例證明邊界有效性,包含正常操作與各種拒絕情境(如同租戶不同擁有者、不同租戶、較弱角色、匿名/格式錯誤的能力),並確保測試使用隔離的授權資料,不影響生產環境。

相容平台~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 狀態選擇或描述一個請求;它們不賦予權限。可以明確允許匿名/公開存取,或將其限定於能力範圍。遺失的身分或範圍不得默默變成全域/系統授權。保持特權操作者與模擬行為明確且可歸責。

將未配對的存取預設為拒絕,並使用滿足已接受政策的最小權限。未決的業務權限是產品問題,而非發明寬鬆預設值的藉口。在該選擇尚未解決時,繼續獨立工作。保持刻意本機、非共享的 demo 與暴露真實受保護資料的服務有所區別。

找出每個受影響的存取路徑

追蹤受影響的資源,通過其實際端點與擁有者。包含相關的 Web/Mobile API、伺服器渲染的載入器、動作、匯入、批次操作、作業與整合。當搜尋/計數/匯出、檔案、快取與訂閱暴露相同受保護事實時,檢查它們。閱讀 Access surfaces 以了解這些路徑或能力、委派與撤銷;選擇適用的章節。

命名政策擁有者與強制執行點。集中規則的意義,同時在資料或效果跨越信任邊界之處強制執行它。中介軟體登入檢查、UI 保護、UUID 或先前的成功讀取單獨來說是不夠的。框架政策、資料庫政策或範圍內擁有者可以運作;驗證其實際配置與執行時期憑證,而非假設它涵蓋了繞過路線。

強制執行決策

針對讀取,在結果離開信任邊界前限制授權的資源群體,並限制回傳的欄位。將等效政策應用於相關物件與替代表示。對於遺失與禁止的資源,使用產品的揭露政策;錯誤、計數與序列化屬性也可能揭露受保護事實。

針對變更,驗證動作、目標與結果關係,包括使用者提供的 foreign keys 與受保護欄位。使用允許的輸入欄位,而非將整個請求綁定到持久化實體。當可觸及的交錯會使權限失效時,在效果處使用儲存體適當的原子防護或序列化來強制執行範圍、成員資格或狀態。耦合的子項與副作用遵循相同的准入原則。保留一個完整的既有擁有者;不要僅僅為了插入授權檢查而新增另一個業務寫入者。

定義授權何時被評估,以及變更何時生效。當前存取、不可變的歷史歸因與先前接受的持久義務是不同的契約。重播、延遲傳遞與委派作業需要明確的權限/生命週期;過期的使用者聲明或通用系統身分無法回答此問題。根據該契約套用撤銷與恢復,而不會默默取消有效義務或擴大其受眾。

證明邊界

從政策矩陣衍生一個小型、具區別性的測試集合。透過真實擁有者與相關的掛載邊界,展示有效角色完成操作以及有意義的拒絕:同租戶中的另一個擁有者、另一個租戶、較弱的角色、匿名/格式錯誤的能力或適用的授權變更。使用實際目標記錄與明確的誘餌;斷言受保護欄位、未變更的持久效果與不相關的記錄。選擇相關案例,而非排練每一個理論組合。

模擬政策回傳 true 或 false 既不能證明其決策,也無法證明查詢/寫入限制。使用實際的述詞或儲存體政策與真實的執行時期權限進行測試。對於 UI 存取聲明,獨立於按鈕可見性驗證直接請求。請勿探測他人的身分或共享/即時資料;使用隔離的授權測試資料。區分靜態發現、提議的檢查、已執行的測試與部署政策間的差距。

交付政策、權威來源、受影響路徑、強制執行與證明,以及未解決的產品選擇或外部配置。通過檢查僅限於那些路徑;此程序不保證應用程式的整體安全性。

Individual skills in this repo

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

相關技能