Saltar al contenido

Scope de comandos

Un scope (alcance) es una forma granular de definir el comportamiento permitido o denegado de un comando de Tauri.

Los scopes se categorizan en scopes de permitir o denegar, donde denegar siempre invalida el scope de permitir.

El tipo de scope debe ser de cualquier tipo serializable por serde. Estos tipos son específicos del plugin en general. Para comandos con scope implementados en una aplicación de Tauri el tipo de scope debe definirse en la aplicación y luego aplicarse en la implementación del comando.

Por ejemplo, el plugin Fs te permite usar scopes para permitir o denegar ciertos directorios y archivos y el plugin http utiliza scopes para filtrar las URL a las que se permite acceder.

El scope se pasa al comando y el manejo o la aplicación adecuada son implementados por el propio comando.

Estos ejemplos están tomados de los permisos del plugin Fs:

El tipo de scope en este plugin para todos los comandos es una cadena de texto, que contiene una ruta compatible con 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/**"
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"]
[[permission.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"]
[[permission.scope.deny]]
path = "$APPLOCALDATA/EBWebView/**"

Los scopes anteriores se pueden usar para permitir el acceso a la carpeta APPLOCALDATA, mientras que evitan el acceso a la subcarpeta EBWebView en Windows, la cual contiene datos sensibles del WebView.

Estos se pueden combinar en un conjunto, lo que reduce la configuración duplicada y la hace más comprensible para cualquiera que examine la configuración de la aplicación.

Primero, los scopes de denegación se combinan en 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"]

Posteriormente, los scopes denegados y permitidos se combinan:

[[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"]

Estos scopes se pueden utilizar para todos los comandos, extendiendo el scope global del plugin, o solo para comandos seleccionados cuando se usan en combinación con un comando habilitado dentro de un permiso.

Un acceso razonable de solo lectura a los archivos en APPLOCALDATA podría verse así:

[[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"]

Estos ejemplos solo destacan la funcionalidad del propio scope. Cada desarrollador de plugins o aplicaciones debe considerar combinaciones razonables de scopes según sus casos de uso.


© 2026 Colaboradores de Tauri. CC-BY / MIT