コンテンツにスキップ
Tauri

アクセス権 permissions

「アクセス権」(Permissions)とは、明示化されたコマンド特権の内容説明です。

[[permission]]
identifier = "my-identifier"
description = "This describes the impact and more."
commands.allow = [
"read_file"
]
[[scope.allow]]
my-scope = "$HOME/*"
[[scope.deny]]
my-scope = "$HOME/secret"

これにより、Tauri アプリケーションのフロントエンドでコマンドにアクセスできるようになります。 また、「適用範囲」(スコープ)をコマンドに割り当て、どのコマンドが有効化されるのかを指定できます。 「アクセス権」では、特定のコマンドを有効化または無効化したり、「適用範囲」を定義したり、あるいはその両方を組み合わせたりすることができます。

「アクセス権」は、新しい「識別子」の下に一組のセットとしてグループ化できます。 これは「アクセス権セット」と呼ばれ、これにより、「適用範囲」関連のアクセス権を「コマンド」関連のアクセス権と組み合わせることができます。また、「操作」固有のアクセス権をより使いやすいセットにグループ化またはバンドルすることもできます

プラグイン開発者であれば、公開されているすべてのコマンドに対して、複数の定義済みで適切な名前を付与したアクセス権を配布できます。

アプリケーション開発者の場合は、既存のプラグイン・アクセス権を拡張したり、個人設定のコマンド用に定義したりできます。これらは、後で再利用したり、メインの設定ファイルを簡素化したりするために、ひとつのセットとしてグループ化または拡張できます。

「アクセス権識別子」は、アクセス権を再利用して一意の名前を持つことを保証するために使用されます。

  • <name>:default : これは、アクセス権がプラグインまたはアプリケーションのデフォルトであることを示しています。
  • <name>:<command-name> これは、アクセス権が個々のコマンド用であることを示しています。

プラグインのプレフィックス tauri-plugin- は、コンパイル時にプラグインの識別子の先頭に自動的に追加されるため、手動で指定する必要はありません。

識別子は ASCII 文字のアルファベット小文字 [a-z] に制限されており、識別子の最大長(文字数)は下記の定数により現在 116 に制限されています。

const IDENTIFIER_SEPARATOR: u8 = b':';
const PLUGIN_PREFIX: &str = "tauri-plugin-";
// https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field
const MAX_LEN_PREFIX: usize = 64 - PLUGIN_PREFIX.len();
const MAX_LEN_BASE: usize = 64;
const MAX_LEN_IDENTIFIER: usize = MAX_LEN_PREFIX + 1 + MAX_LEN_BASE;

Tauri プラグイン ディレクトリ構造の簡略化された例:

Terminal window
tauri-plugin
├── README.md
├── src
└── lib.rs
├── build.rs
├── Cargo.toml
├── permissions
└── <identifier>.json/toml
└── default.json/toml

デフォルトのアクセス権は、特別な方法で処理されています。というのも、Tauri CLI を使用して Tauri アプリケーションにプラグインを追加する限り、アプリケーション設定に自動的に追加されますので。

アプリケーション 開発者の場合も構造は同様です:

Terminal window
tauri-app
├── index.html
├── package.json
├── src
├── src-tauri
├── Cargo.toml
├── permissions
└── <identifier>.toml
| ├── capabilities
└── <identifier>.json/.toml
├── src
├── tauri.conf.json

File System プラグインからの「アクセス権」設定例:

plugins/fs/permissions/autogenerated/base-directories/home.toml
[[permission]]
identifier = "scope-home"
description = """This scope permits access to all files and
list content of top level directories in the `$HOME`folder."""
[[scope.allow]]
path = "$HOME/*"

《訳注》 上記 description の内容: この適用範囲は、$HOME フォルダー内のすべてのファイルとリスト内容へのアクセスを許可します。

plugins/fs/permissions/read-files.toml
[[permission]]
identifier = "read-files"
description = """This enables all file read related
commands without any pre-configured accessible paths."""
commands.allow = [
"read_file",
"read",
"open",
"read_text_file",
"read_text_file_lines",
"read_text_file_lines_next"
]

《訳注》 上記 description の内容: これにより、事前に設定されたアクセス可能なパスなしで、すべてのファイル読み取り関連コマンドが有効になります。

plugins/fs/permissions/autogenerated/commands/mkdir.toml
[[permission]]
identifier = "allow-mkdir"
description = "This enables the mkdir command."
commands.allow = [
"mkdir"
]

《訳注》 上記 description の内容: これにより、「mkdir」コマンドが有効になります。

アプリで上記のプラグインアクセス権を拡張する実装例:

my-app/src-tauri/permissions/home-read-extends.toml
[[set]]
identifier = "allow-home-read-extended"
description = """ This allows non-recursive read access to files and to create directories
in the `$HOME` folder.
"""
permissions = [
"fs:read-files",
"fs:scope-home",
"fs:allow-mkdir"
]

《訳注》 上記 description の内容: これにより、ファイルへの非再帰的な読み取りアクセスが可能になり、$HOME フォルダー内にディレクトリを作成できるようになります。

【※ この日本語版は、「Feb 22, 2025 英語版」に基づいています】


© 2025 Tauri Contributors. CC-BY / MIT