---
title: 명령 범위 Command Scopes
sidebar:
  order: 3
i18nReady: true
---

"범위"(적용 범위)는 Tauri 명령에 허용되는 동작(또는 허용되지 않는 동작)을 세밀하게 정의하는 방법입니다.

"범위"는 "허용 `allow` 범위"와 "거부 `deny` 범위"로 분류되며, "거부 범위"는 항상 "허용 범위"보다 우선합니다.

이 "범위의 유형"은 [`serde`](https://docs.rs/serde/latest/serde/)의 직렬화 가능한 유형(타입) 중 하나여야 합니다.
이러한 유형은 일반적으로 플러그인별로 다릅니다. Tauri 애플리케이션에 구현된 범위 지정 명령의 경우, 범위의 유형은 애플리케이션에서 정의하고 명령 구현에서 적용해야 합니다.

예를 들어, [`Fs`](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/fs) 플러그인에서는 범위를 사용하여 특정 디렉토리와 파일을 "허용" 또는 "거부"할 수 있으며, [`http`](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/http) 플러그인에서는 범위를 사용하여 액세스가 "허용"되는 URL을 필터링할 수 있습니다.

"범위"는 명령에 전달되며, 처리 및 적절한 집행은 명령 자체가 구현합니다.

:::caution

명령 개발자는 범위 회피가 불가능하다는 것을 확실히 해야 합니다. 범위 검증 구현은 그 정확성을 담보하기 위해 감사해야 합니다.

:::

## 실시 예

다음 예는 [`Fs`](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/fs) 플러그인의 "접근 권한"을 기반으로 합니다:

모든 명령에 대한 이 플러그인의 "범위의 유형"은 문자열이며, 여기에는 [`glob`](https://docs.rs/glob/latest/glob/) 호환 경로가 포함됩니다.

```toml title="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` 폴더에 대한 재귀적 액세스입니다.

```toml title="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`에 병합됩니다:

```toml title="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 관련 파일 및 폴더에 대한 액세스가 기본적으로 "거부"됩니다.

그런 다음 "거부" 범위와 "허용" 범위가 병합됩니다:

```toml
[[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` 내의 파일에 대한 적절한 읽기 전용 파일 액세스 설정은 다음과 같습니다:

```toml
[[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 관련 파일과 폴더에 대한 액세스를 "거부"합니다.

위의 각 예는 "범위"의 기능 자체를 강조하기 위한 것입니다. 플러그인 또는 애플리케이션의 각 개발자는 사용 사례(사용자 기능 요구)에 따라 적절한 범위의 조합을 검토해야 합니다.
