コンテンツにスキップ
Tauri

コマンド・スコープ Command Scopes

「スコープ」(適用範囲)とは、Tauri コマンドに許可される動作(または許可されない動作)を細かく定義する方法です。

「スコープ」は「許可 allow スコープ」と「拒否 deny スコープ」に分類され、「拒否スコープ」は常に「許可スコープ」よりも優先されます。

この「スコープの型」は、serde のシリアル化可能な型(タイプ)のいずれかである必要があります。 これらのタイプは通例、プラグイン固有です。Tauri アプリケーションに実装されたスコープ付きコマンドの場合、スコープの型はアプリケーションで定義してコマンド実装で適用する必要があります。

たとえば、Fs プラグインでは、スコープを使用して特定のディレクトリとファイルを「許可」または「拒否」することができ、http プラグインでは、スコープを使用してアクセスが「許可」される URL をフィルタリングすることができます。

「スコープ」はコマンドに渡され、取り扱いや適切な執行についてはコマンド自身が実装します。

以下の事例は、Fs プラグインの「アクセス権」に基づくものです:

すべてのコマンドに対するこのプラグインの「スコープの型」は文字列で、これには glob 互換のパスが含まれます。

plugins/fs/permissions/autogenerated/base-directories/applocaldata.toml
[[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 フォルダへの再帰アクセスです。

plugins/fs/permissions/deny-webview-data.toml
[[permission]]
identifier = "deny-webview-data-linux"
description = '''
This denies read access to the
`$APPLOCALDATA` folder on linux as the webview data and
configuration values are stored here.
Allowing access can lead to sensitive information disclosure and
should 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 and
configuration values are stored here.
Allowing access can lead to sensitive information disclosure and
should 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 にマージされます:

plugins/fs/permissions/deny-default.toml
[[set]]
identifier = "deny-default"
description = '''
This denies access to dangerous Tauri relevant files and
folders 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 and
subfolders except for linux,
while it denies access to dangerous Tauri relevant files and
folders 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 and
subfolders except for linux,
while it denies access to dangerous Tauri relevant files and
folders 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