DifySandbox
はじめに
DifySandbox(ディファイサンドボックス)
は、Python
やNode.js
など複数のプログラミング言語に対応した、軽量・高速・安全なコード実行環境です。Difyワークフロー
に関する様々な要素(コードノード
、テンプレートノード
、LLMノード
のJinja2構文、ツールノード
のコードインタプリター
など)の基盤となる実行環境として機能します。DifySandboxは、ユーザーが提供したコードを実行しつつ、システム全体のセキュリティを確保します。
特徴
多言語サポート:
DifySandbox
は、システムレベルのソリューションであるSeccomp
(システムコールを制限するLinuxカーネルのセキュリティ機能)を基盤として構築されており、複数のプログラミング言語に対応しています。現在、PythonとNode.jsをサポートしています。システムセキュリティ: 特定のシステムコールのみを許可するホワイトリスト方式を採用し、予期せぬセキュリティ侵害を防止します。
ファイルシステムの分離: ユーザーコードは、ユーザーごとに隔離されたファイルシステム環境で実行されます。
ネットワーク分離:
Docker Compose環境: 専用のSandboxネットワークとプロキシコンテナを活用してネットワークアクセスを制御し、内部システムのセキュリティを維持しつつ、柔軟なプロキシ設定オプションを提供します。
Kubernetes(K8s)環境: Egressポリシーを使用してネットワーク分離の設定を直接行うことが可能です。
依存関係のインストール
DifySandboxプロジェクトをインストールおよび展開する前に、以下の依存関係要件を満たしていることを確認してください:
依存関係
Linuxディストリビューションに応じて、以下のコマンドを実行して必要なシステムコンポーネントをインストールします:
Ubuntu/Debian
CentOS
Go言語環境
Go開発環境をインストールします(Go 1.20.6以上を推奨):
インストールを確認します:
Python環境設定
サンドボックス環境の準備
Python 3.10以上を推奨します。
事前インストール済みの依存関係管理
DifySandboxには以下のPython依存関係があらかじめ設定されています:
http
- 基本的なネットワークライブラリjinja2
- LLMプロンプト処理用のテンプレートエンジンrequests
- HTTPクライアントライブラリ
カスタム依存関係の追加
追加のPython依存関係が必要な場合は、以下の手順に従ってください:
プロジェクトのルートディレクトリにある
dependencies/python-requirements.txt
ファイルを見つけます。DifySandboxを再構築します。
新しい依存関係を追加すると、追加の権限要件が発生する可能性があります。セキュリティへの影響を慎重に評価してください。潜在的なセキュリティリスクを完全に制御できない場合は、権限設定を変更しないことをお勧めします。
貢献
Last updated