コマンド・スコープ Command Scopes
「スコープ」(適用範囲)とは、Tauri コマンドに許可される動作(または許可されない動作)を細かく定義する方法です。
「スコープ」は「許可 allow
スコープ」と「拒否 deny
スコープ」に分類され、「拒否スコープ」は常に「許可スコープ」よりも優先されます。
この「スコープの型」は、serde
のシリアル化可能な型(タイプ)のいずれかである必要があります。
これらのタイプは通例、プラグイン固有です。Tauri アプリケーションに実装されたスコープ付きコマンドの場合、スコープの型はアプリケーションで定義してコマンド実装で適用する必要があります。
たとえば、Fs
プラグインでは、スコープを使用して特定のディレクトリとファイルを「許可」または「拒否」することができ、http
プラグインでは、スコープを使用してアクセスが「許可」される URL をフィルタリングすることができます。
「スコープ」はコマンドに渡され、取り扱いや適切な執行についてはコマンド自身が実装します。
以下の事例は、Fs
プラグインの「アクセス権」に基づくものです:
すべてのコマンドに対するこのプラグインの「スコープの型」は文字列で、これには glob
互換のパスが含まれます。
[[permission]]identifier = "scope-applocaldata-recursive"description = '''This scope recursive access to the complete `$APPLOCALDATA` folder,including sub directories and files.'''
[[permission.scope.allow]]path = "$APPLOCALDATA/**"
《訳注》 上記 description の内容: このスコープは、サブディレクトリとファイルを含む完全な
$APPLOCALDATA
フォルダへの再帰アクセスです。
[[permission]]identifier = "deny-webview-data-linux"description = '''This denies read access to the`$APPLOCALDATA` folder on linux as the webview data andconfiguration values are stored here.Allowing access can lead to sensitive information disclosure andshould be well considered.'''platforms = ["linux"]
[[scope.deny]]path = "$APPLOCALDATA/**"
[[permission]]identifier = "deny-webview-data-windows"description = '''This denies read access to the`$APPLOCALDATA/EBWebView` folder on windows as the webview data andconfiguration values are stored here.Allowing access can lead to sensitive information disclosure andshould be well considered.'''platforms = ["windows"]
[[scope.deny]]path = "$APPLOCALDATA/EBWebView/**"
《訳注》 上記 description の内容(Linux 用と Windows 用の記述に分かれています。内容はほぼ同一): このアクセス権設定により、WebView データと設定値がここに保存されるため、Linux 上〔Windows 上〕の
$APPLOCALDATA
〔$APPLOCALDATA/EBWebView/〕フォルダへの読み取りアクセスが「拒否」されます。アクセスを「許可」すると機密情報の漏洩につながる可能性があるため、十分に検討する必要があります。
上記の二つのスコープを使用すると、機密性の高い WebView データが含まれる Windows 上の EBWebView
サブフォルダへのアクセスを防止しながら、APPLOCALDATA
フォルダへのアクセスを許可できます。
これらをひとつのセットに統合することで、重複する構成が削減され、アプリケーション設定を調べる人にとって理解しやすくなります。
まず、「拒否」スコープが deny-default
にマージされます:
[[set]]identifier = "deny-default"description = '''This denies access to dangerous Tauri relevant files andfolders by default.'''permissions = ["deny-webview-data-linux", "deny-webview-data-windows"]
《訳注》 上記 description の内容: これにより、危険な Tauri 関連ファイルおよびフォルダへのアクセスがデフォルトで「拒否」されます。
その後、「拒否」スコープと「許可」スコープがマージされます:
[[set]]identifier = "scope-applocaldata-reasonable"description = '''This scope set allows access to the `APPLOCALDATA` folder andsubfolders except for linux,while it denies access to dangerous Tauri relevant files andfolders by default on windows.'''permissions = ["scope-applocaldata-recursive", "deny-default"]
《訳注》 上記 description の内容: このスコープ・セットは、Linux 以外では
APPLOCALDATA
フォルダーとサブフォルダーへのアクセスを「許可」しますが、Windows ではデフォルトで危険な Tauri 関連ファイルとフォルダーへのアクセスを「拒否」します。
このような「スコープ」は、プラグインのグローバル・スコープを拡張することですべてのコマンドに使用することも、アクセス権内で有効なコマンドと組み合わせて使用する場合は選択したコマンドのみに使用することもできます。
APPLOCALDATA
内のファイルへの適切な読み取り専用ファイル・アクセス設定は次のようになります:
[[set]]identifier = "read-files-applocaldata"description = '''This set allows file read access to the `APPLOCALDATA` folder andsubfolders except for linux,while it denies access to dangerous Tauri relevant files andfolders by default on windows.'''permissions = ["scope-applocaldata-reasonable", "allow-read-file"]
《訳注》 上記 description の内容: このセットは、Linux 以外の
APPLOCALDATA
フォルダとサブフォルダへのファイル読み取りアクセスを「許可」しますが、Windows ではデフォルトで危険な Tauri 関連ファイルとフォルダへのアクセスを「拒否」します。
上記の各事例は、「スコープ」の機能自体を強調するためだけのものです。プラグインまたはアプリケーションの各開発者は、ユース・ケース(利用者の機能要求)に応じて適切なスコープの組み合わせを検討する必要があります。
【※ この日本語版は、「Feb 28, 2025 英語版」に基づいています】
© 2025 Tauri Contributors. CC-BY / MIT