Communityコーディング&開発github.com

pkasarda/authorization

保護されたリソースと操作に対するアクセスポリシーの設計、実装、レビューを行います。新しい保護エントリポイント、ロール、所有権やテナントスコープ、フィールドの可視性、共有リンク、委任ジョブ、権限変更の際に使用します。認証だけではアクセスは確定せず、視覚的な編集のみでは認可レビューは不要です。

authorization とは?

このスキルは、保護されたリソースや操作に対するアクセス認可のポリシーを体系的に設計・実装・レビューするためのものです。認証(Authentication)と認可(Authorization)を明確に分離し、変更されたフローに関わるすべてのアクセス決定を明示的に定義し、実際の境界で強制し、許可・拒否の両方をテストで証明することを目的とします。 主な特徴として、ポリシーマトリクス(主体、操作、リソース、関係性/スコープ/状態、許可される入出力フィールド、結果)を記録し、未定義のアクセスはデフォルトで拒否とします。影響を受けるすべてのアクセス経路(Web/モバイルAPI、サーバーレンダリングローダー、アクション、バッチ処理、ジョブ、統合など)を特定し、ポリシーオーナーと強制ポイントを明確にします。読み取りでは信頼境界を出る前に許可されたリソース母集団とフィールドを制限し、変更ではアクション、ターゲット、結果の関係性を検証します。 さらに、ポリシーマトリクスから導出した少数の識別テストセットを使用して、実際のターゲットレコードと明示的なデコイを用いた境界テストを実施します。モックされたポリシーではなく、実際の述語やストアポリシーを現実的なランタイム権限でテストし、UIの可視性とは独立して直接リクエストを検証します。 このスキルは主にAIエージェント向けの開発ツール(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に質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

認可

影響を受ける各アクセス決定を明示的にし、実際の境界で強制し、許可と拒否の両方の動作を証明します。要求されたフロー内で作業を行い、このスキルを読み込んでもアプリケーション全体の監査は開始しません。新しいフレームワークを導入する前に、既存のアイデンティティ、ポリシー、ドメインオーナーを使用します。

ポリシーの定義

承認されたプロダクト決定と実際の呼び出し元を読み取ります。変更されたフローについて、小さなポリシーマトリクス(主体、操作、リソース、該当する関係性/スコープ/状態、許可される入出力フィールド、結果)を記録します。実際のニーズに応じて、ロール、属性、所有権、またはケイパビリティを使用します。ロールだけでは特定のレコードへのアクセスを確立できない場合があります。意図的に異なる読み取り、書き込み、エクスポート、共有、管理権限を保持します。

アイデンティティ認証と操作への権限を分離します。信頼できるセッション、トークン、またはサービスコンテキストからアイデンティティと許可を取得します。リクエストID、テナントセレクター、ロールフィールド、UI状態はリクエストを選択または記述するものであり、権限を付与するものではありません。匿名/パブリックアクセスは明示的に許可するか、ケイパビリティスコープ内で許可できます。アイデンティティやスコープがない場合、黙ってグローバル/システム許可になってはいけません。特権オペレーターとインパーソネーションは明示的かつ属性可能に保ちます。

未一致のアクセスはデフォルトで拒否とし、承認されたポリシーを満たす最小権限を使用します。未決定のビジネス権限はプロダクト上の問題であり、寛容なデフォルトを発明するための招待ではありません。その選択が未解決の間は、独立した作業を続けます。実際の保護データを公開するサービスとは別に、意図的にローカルで非共有のデモを維持します。

影響を受けるすべてのアクセス経路を見つける

影響を受けるリソースを、その実際のエントリポイントとオーナーをたどって追跡します。関連するWeb/モバイルAPI、サーバーレンダリングローダー、アクション、インポート、バッチ操作、ジョブ、統合を含めます。同じ保護された事実を公開する検索/カウント/エクスポート、ファイル、キャッシュ、サブスクリプションを検査します。アクセスサーフェスでそれらの経路、またはケイパビリティ、委任、取り消しについて読み取り、該当するセクションを選択します。

ポリシーオーナーと強制ポイントを指定します。データやエフェクトが信頼境界を越える場所では、ルールの意味を集中化しつつ強制します。ミドルウェアのログインチェック、UIガード、UUID、または以前の成功した読み取りだけでは不十分です。フレームワークポリシー、データベースポリシー、スコープ付きオーナーは機能する可能性がありますが、バイパスルートをカバーしていると仮定するのではなく、実際の設定とランタイムクレデンシャルを検証します。

決定を強制する

読み取りの場合、結果が信頼境界を離れる前に許可されたリソース母集団を制限し、返されるフィールドを制限します。関連オブジェクトと代替表現に同等のポリシーを適用します。不足リソースと禁止リソースについては、プロダクトの開示ポリシーを使用します。エラー、カウント、シリアル化されたプロパティも保護された事実を明らかにする可能性があります。

変更の場合、アクション、ターゲット、結果の関係を検証します。ユーザー指定の外部キーと保護されたフィールドを含みます。許可された入力フィールドを使用し、リクエスト全体を永続エンティティにバインドしないようにします。到達可能なインターリーブが権限を無効にする可能性がある場合、ストアの適切なアトミックガードまたはシリアル化を使用して、エフェクトでスコープ、メンバーシップ、または状態を強制します。結合された子と副作用は同じ許可に従います。既存の完全なオーナーを維持し、認可チェックを挿入するためだけに新しいビジネスライターを追加しないようにします。

許可が評価されるタイミングと変更が有効になるタイミングを定義します。現在のアクセス、不変の履歴属性、以前に受け入れられた永続的な義務は異なる契約です。リプレイ、遅延配信、委任ジョブには明示的な権限/ライフタイムが必要です。古くなったユーザークレームも汎用的なシステムアイデンティティもその質問に答えられません。有効な義務を黙ってキャンセルしたり、その対象を広げたりすることなく、その契約に従って取り消しと復旧を適用します。

境界を証明する

ポリシーマトリクスから小さな識別テストセットを導出します。実際のオーナーと関連するマウントされた境界を通じて、有効なアクターが操作を完了することを示し、意味のある拒否を示します。同じテナント内の別のオーナー、別のテナント、弱いロール、匿名/不正なケイパビリティ、該当する場合は変更された許可などです。実際のターゲットレコードと明示的なデコイを使用し、保護されたフィールド、不変の永続的エフェクト、無関係なレコードをアサートします。すべての理論上の組み合わせを試すのではなく、関連するケースを選択します。

trueまたはfalseを返すモックポリシーは、その決定もクエリ/書き込み制限も証明しません。実際の述語またはストアポリシーを現実的なランタイム権限でテストします。UIアクセスクレームについては、ボタンの可視性とは独立して直接リクエストを検証します。他の人のアイデンティティや共有/ライブデータをプローブしないでください。分離された許可されたフィクスチャを使用します。静的な発見、提案されたチェック、実行されたテスト、デプロイメントポリシーのギャップを分離します。

ポリシー、権威あるソース、影響を受ける経路、強制、証明、および未解決のプロダクト選択や外部設定を提供します。合格したチェックはそれらの経路に限定されます。この手順はアプリケーションの全体的なセキュリティを認定するものではありません。

Individual skills in this repo

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

関連スキル