コンテンツにスキップ

アクセス権 permissions

《訳注》

permission 「アクセス権」。原義は「許可」の意。本稿では、「アクセス権を許可/拒否」する動作やその状態を含めて「アクセス権」としています。

「アクセス権」(Permissions/許可権限)とは、コマンドの明示化された特権について記述したものです。

[[permission]]
identifier = "my-identifier"
description = "This describes the impact and more." // "ここに「影響・効果」などを記載します。"
commands.allow = [
"read_file"
]
[[permission.scope.allow]]
my-scope = "$HOME/*"
[[permission.scope.deny]]
my-scope = "$HOME/secret"

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

アプリのウィンドウや WebView に対してアクセス権を付与または拒否するには、「セキュリティ・レベル/Capabilities 設定」でそのアクセス権限を参照しなければなりません。

「アクセス権」は、新しい「識別子 identifier」を付け、一組のセットとしてグループ化できます。 これは「アクセス権許可セット」と呼ばれます。この仕組みにより、「スコープ」関連のアクセス権を「コマンド」関連のアクセス権と組み合わせたり、「操作」限定のアクセス権をグループ化またはバンドルすることでより使いやすいセットにすることもできます。

プラグイン開発者であれば、自分が公開しているすべてのコマンドに対して、あらかじめ定義し、わかりやすい名前を付与した複数のアクセス権設定も配布できます。

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

アクセス権識別子 Permission Identifier

Section titled “アクセス権識別子 Permission Identifier”

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

  • <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;

セキュリティ設定ファイル Configuration Files

Section titled “セキュリティ設定ファイル Configuration Files”

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

ターミナルウィンドウ
tauri-plugin
├── README.md
├── src
│ └── lib.rs
├── build.rs
├── Cargo.toml
├── permissions
│ └── <identifier>.json/toml
│ └── default.json/toml

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

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

ターミナルウィンドウ
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."""
// """このスコープ(適用範囲)は、`$HOME` フォルダー内の最上位レベルのディレクトリにあるすべてのファイルとリスト内容へのアクセスを許可します。"""
[[permission.scope.allow]]
path = "$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"
]
plugins/fs/permissions/autogenerated/commands/mkdir.toml
[[permission]]
identifier = "allow-mkdir"
description = "This enables the mkdir command." // "これにより、「mkdir」コマンドが有効になります。"
commands.allow = [
"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.
"""
// """これにより、ファイルへの非再帰的な読み取りアクセスが可能になり、`$HOME` フォルダー内にディレクトリを作成できるようになります。"""
permissions = [
"fs:read-files",
"fs:scope-home",
"fs:allow-mkdir"
]

【※ この日本語版は、「Jul 20, 2026 英語版」に基づいています】


© 2026 Tauri Contributors. CC-BY / MIT