Core · プラグインを使う · 権限とデータアクセス

制限ルール

機能

@nocobase/app-plugin-authz-restriction-rules がこの拡張を提供します。制限ルールは、指定した主体の既存のレコードの範囲を絞り込みます。その選択は、隠すレコードではなく、引き続き許可するレコードを記述します。一致するすべての制限が適用されます。

ルールの管理はアプリが担います。実行時の登録に加えて、認可のファクトリーが必要です。

シナリオと例

例

注文を読めるが機密でない注文だけを扱うべきインターンには、読み取りの制限で機密でない注文を選びます。機密の注文を共有しても、その制限を回避することはできません。

まず操作の付与を確認し、範囲を設定してから、許可されたレコード、除外されたレコード、API の直接の呼び出しを検証します。ルールを実際のアクセスに反映させるには、業務の照会が認可のポリシーを適用する必要があります。

開発用のプロンプト(アプリのディレクトリで作業するコーディングエージェント向け):

プレーンテキスト
@nocobase/app-plugin-authz-restriction-rules を使ってください。注文の読み取り権限を持つ
インターンを機密でない注文に制限し、共有でその制限を回避できないことを検証してください。
認可の拡張は保ち、ルールの管理をその設定の権限とともに組み込んでください。レコードを設定する
前に読み取りの操作を確認してください。制限を回避するために管理者の付与を追加しないでください。
許可されたレコードと除外されたレコードを、API の直接の呼び出しで検証してください。

完了の条件機密の注文が共有されても、インターンには機密でない注文だけが表示されること。

主な仕組みと実装

以下は、この例での組み込みの領域と、想定される画面の変化です。開発作業を記述したもので、実際のファイル構成はアプリに合わせてください。

組み込みの領域コードまたは設定の変更画面と動作の変化
プラグインの配列と server/config/authorization.tsランタイムを登録し、restrictionRules() を組み込むエンドポイントとルールの評価を有効にする
アプリのルールの管理ページ選択肢、選択、保護された書き込みを組み込む管理者が意図したルールを管理する
業務の照会とテストポリシーを適用し、異なる主体でテストするルールが返されるデータに影響する

組み込み

権限管理 と並べてその Client と Server の入口を登録し、マイグレーションを適用して、server/config/authorization.ts にファクトリーを追加します。

TypeScript
import { restrictionRules } from '@nocobase/app-plugin-authz-restriction-rules/server';

// Merge into the existing authorization configuration, retaining other extensions.
plugins: [restrictionRules()]

実行時の登録は、ロケールとマイグレーションを提供します。設定のファクトリーが、ルールの動作と HTTP のエンドポイントをインストールします。パッケージをインストールしただけでは、それらは有効になりません。

ルールを設定して使う

選択は、すべてのレコード、明示的な ID、登録された recordAccess に対応しています。複数の制限は共通部分になるため、あるルールですべてのレコードを選んでも、別のルールを打ち消すことはありません。制限を削除するとアクセスが広がることがあるため、検証が必要です。

/api/authorization/restrictionRules は、一覧、作成、更新、削除と、それを支える選択のエンドポイントを提供します。管理ページはアプリが所有します。操作には、settings:authorization.restriction-rules に対する、対応する read、create、update、delete の操作が必要です。

ルールは保護されたエンドポイントで保存します。信頼できるサーバーのコードは、認可サービスの restrictionRules の API を使えます。独自の HTTP のラッパーでは、認可と入力の検証を保つ必要があります。

AI 開発の制約と検証

プラグイン固有の開発の制約

  • 選択は引き続き許可するレコードを意味し、一致する制限は共通部分になります。ルールを削除するとアクセスが広がることがあるため、確認し直してください。
  • ルールが変えるのはレコードで、ページ、操作、フィールドの付与ではありません。サーバーの照会がそのポリシーを適用していることを検証してください。
  • root のアカウントだけでなく、unrestricted でない身元を使って、組み合わせたルール、削除、直接のアクセスを確認してください。

境界

ルールはページ、操作、フィールドの権限を付与せず、関連するレコードを自動で公開することもありません。制限ルールは、組み合わせた既定の範囲と共有の範囲を引き続き絞り込みます。unrestricted の身元はこれらのルールを回避するため、一般ユーザーでもテストしてください。

関連:権限管理、既定のデータアクセス、共有ルール、制限ルール。

これらはあなたの組み込みの検収の要件であり、実機での検証が完了したことを示すものではありません。実際の変更、実行したチェック、未検証の項目をエージェントに報告させてください。プロジェクトのガイダンス、スキル、共通のチェックについては アプリの開発を続ける と テスト を参照してください。

出典:公開のプラグインの入口と実装。

NocoBase ドキュメントアシスタント

NocoBase について何を知りたいですか?

質問は個別に回答され、過去の質問や回答は参照されません。必要な背景をすべて含めてください。