hamatz/chatgpt_minimal_starter_kit

プラグイン間で共通に利用可能なデータフォルダの提供ができないか検討する

Closed this issue · 2 comments

あるプラグインで作ったベクトルDBを他のプラグインから利用する的なシーンを想定

案: 共有フォルダ管理APIの導入

  1. 共有フォルダ管理APIの設計

    • 共有フォルダの作成、削除、アクセス権限の設定などの機能を提供するAPIを設計します。
    • APIは、プラグインがセキュアに共有フォルダを操作できるようにします。
  2. 共有フォルダの作成と管理

    • プラグインは、共有フォルダ管理APIを使用して、共有フォルダを作成できます。
    • 共有フォルダには、一意の識別子(UUID)が割り当てられます。
    • 共有フォルダの所有者(作成したプラグイン)は、他のプラグインにアクセス権限を付与できます。
  3. アクセス権限の管理

    • 共有フォルダには、読み取り、書き込み、実行の権限を設定できます。
    • 所有者は、他のプラグインに対して、適切なアクセス権限を付与します。
    • アクセス権限は、プラグインの識別子(プラグイン名とバージョン)に基づいて管理されます。
  4. 共有フォルダへのアクセス

    • プラグインは、共有フォルダ管理APIを使用して、共有フォルダにアクセスできます。
    • APIは、プラグインの識別子とアクセス権限を確認し、適切なアクセスを許可します。
    • 読み取り、書き込み、実行の操作は、APIを介して行われ、直接のファイルアクセスは禁止されます。
  5. セキュリティの確保

    • 共有フォルダ管理APIは、プラグインからの要求を検証し、不正なアクセスを防止します。
    • APIは、プラグインの識別子を確認し、なりすましを防ぎます。
    • 共有フォルダのパスは、APIによって抽象化され、プラグインからは直接アクセスできません。
  6. 共有フォルダの監視

    • CraftForgeは、共有フォルダの使用状況を監視し、異常なアクセスパターンを検出します。
    • 不正なアクセスが疑われる場合、CraftForgeは管理者に通知し、適切な措置を講じます。
  7. プラグイン開発者向けのドキュメント

    • 共有フォルダ管理APIの使用方法を、プラグイン開発者向けのマニュアルに追加します。
    • APIの利用例と、セキュリティ上の注意点を明確に説明します。

この案では、共有フォルダ管理APIを導入することで、プラグイン間でのフォルダ共有を安全に実現します。APIがアクセス制御とセキュリティを担保することで、プラグインは直接ファイルシステムにアクセスする必要がなくなり、安全性が向上します。

また、共有フォルダの作成と管理をAPIで一元化することで、権限の設定ミスや不正なアクセスを防ぐことができます。CraftForgeが共有フォルダの使用状況を監視することで、異常な動作を早期に検出し、対処することも可能になります。

プラグイン開発者は、共有フォルダ管理APIを使用することで、安全かつ簡単にプラグイン間でデータを共有できるようになります。APIの使用方法をマニュアルで明確に説明することで、開発者の理解を促進し、安全なプラグインの開発を支援します。

ユーザーが設定したフォルダへのアクセス権を設定できるシステムプラグインを提供することで実現。将来的に Read/Write/Execute の設定ができるよう設計的には種別を作ったが、現状フォルダを渡した後は相手が好きにできるようになっているので、Write一択でひとまずは機能提供する形にした

e2a1888