mcpField
A
api-platform-security

api-platform-security

github.com/dev-toolingsセキュリティ22780 回インストール3 週間前に更新
リポジトリ

api-platform-security について

API Platform の操作、オブジェクト、コレクション、フィールドに対する認可を設計する Symfony 向けスキルです。アクセス制御の実装とテストの手順、注意点を示します。

主な機能

  1. 01操作ごとのセキュリティ式
  2. 02複雑な認可の Voter 対応
  3. 03入力後のセキュリティチェック
  4. 04ユーザー別のコレクションとフィールド
  5. 05認可テストのガイダンス

活用シーン

  1. 01API 操作へのアクセス制限
  2. 02ユーザー自身のレコードにコレクションを限定
  3. 03ロールや所有権に応じたフィールドの非表示

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill api-platform-security

インストール後、Claude Code で/api-platform-securityを入力して読み込まれたか確認します。

同梱ファイルreference.md

詳細

Api Platform Security(Symfony)

使用する場面

  • API Platform のリソースの各オペレーションを呼び出せるユーザーを制限する場合。
  • 認可がオブジェクト(所有者)または送信されたデータに依存する場合。
  • ユーザーにコレクションの一部だけを表示する必要がある場合。
  • ロールや所有権に応じてフィールドを非表示にする必要がある場合。

デフォルトのワークフロー

  1. is_granted()、object、user を使ってオペレーションごとに security を設定し、securityMessage も指定します。
  2. 複雑なルールは voter に移します。例:is_granted('POST_EDIT', object)。
  3. ルールが入力に依存する場合は securityPostDenormalize を使います。Validator の実行後に処理するには securityPostValidation を使います。
  4. QueryCollectionExtensionInterface(および QueryItemExtensionInterface)または state provider を使って行を絞り込みます。
  5. serializer group と装飾した context builder を使ってフィールドを非表示にし、access_control で firewall を保護します。
  6. 保護された各オペレーションについて、許可されるケースと拒否されるケースの両方をテストします。

ガードレール

  • コレクションに対する security 式で行を絞り込まないでください。コレクション全体へのアクセスを制御するものであり、行を絞り込むものではありません。
  • チェックの順序:security、非正規化、securityPostDenormalize、バリデーション、securityPostValidation。
  • previous_object は securityPostDenormalize でのみ使用でき、request はリソースレベルでのみ使用できます。
  • デフォルトで拒否し、password などの秘密情報には #[Ignore] を付けます。
  • getAccessDecision() と Twig の access_decision() ヘルパーには Symfony 8.1 以降が必要です。使用前に確認してください。

段階的な情報開示

  • 実行時の姿勢とリスク制御にはこのファイルを使用します。
  • 実装の詳細が必要な場合は、リファレンスを開いてください。

出力要件

  • オペレーションごとのセキュリティ式とメッセージ、および関連する voter。
  • コレクションとフィールドをユーザーごとに絞り込む方法。
  • 許可、拒否、匿名アクセスを網羅するテスト。

リファレンス

  • reference.md

コメント