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

既定のデータアクセス

機能

@nocobase/app-plugin-authz-default-access がこの拡張を提供します。既定のデータアクセスは、すでに操作の権限を持つ身元に、共通のレコードの基準を追加します。付与に選択がない場合にだけ適用されるのではなく、権限セットの選択と組み合わさります。

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

シナリオと例

例

たとえば、サポートの担当者は最初、自分が担当する顧客だけを読めるとします。顧客の読み取りの既定として公開の顧客の選択を追加すると、担当する顧客と公開の顧客を読めるようになります。読み取りの操作の権限がない人は、引き続き顧客を読めません。

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

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

プレーンテキスト
@nocobase/app-plugin-authz-default-access を使ってください。顧客の読み取り権限をすでに持つ
サポートの担当者の既定の範囲に、公開の顧客を追加し、既存の範囲は保ってください。
認可の拡張は保ち、ルールの管理をその設定の権限とともに組み込んでください。レコードを設定する
前に読み取りの操作を確認してください。制限を回避するために管理者の付与を追加しないでください。
許可されたレコードと除外されたレコードを、API の直接の呼び出しで検証してください。

完了の条件担当者が、担当する顧客と公開の顧客を読めること。読み取りの操作の権限がないユーザーは、引き続き拒否されること。

主な仕組みと実装

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

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

組み込み

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

TypeScript
import { defaultAccess } from '@nocobase/app-plugin-authz-default-access/server';

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

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

ルールを設定して使う

1 つのリソースには既定のアクセスのルールが最大 1 つあり、その操作ごとに選択を持ちます。選択は、すべてのレコード、明示的な ID、登録された recordAccess に対応しています。複合的な操作は、scopeKey でデータの範囲を識別します。

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

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

AI 開発の制約と検証

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

  • リソースごとに既定のルールを 1 つだけ管理してください。その選択はレコードを追加するもので、ほかの範囲がない場合にだけ適用されるのではありません。
  • ルールが変えるのはレコードで、ページ、操作、フィールドの付与ではありません。サーバーの照会がそのポリシーを適用していることを検証してください。
  • root のアカウントだけでなく、unrestricted でない身元を使って、組み合わせたルール、削除、直接のアクセスを確認してください。

境界

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

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

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

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

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

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

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