[comment]: # ({780b1aa2-780b1aa2})
# 13 Restringir les verificacions de l'agent

[comment]: # ({/780b1aa2-780b1aa2})

[comment]: # ({40953ae4-9de656b2})
#### Visió general

Podeu controlar quines claus d'elements l'agent Zabbix o l'agent 2 pot utilitzar o no en executar comprovacions d'elements, ordres remotes o scripts.

Per fer-ho, utilitzeu aquests paràmetres de [configuració de l'agent](/manual/appendix/config/zabbix_agentd) per definir les regles de permís/denegació:

- `AllowKey=<patró>`
- `DenyKey=<patró>`

El `<patró>` ha de contindre una sola clau d'element i admet comodins (`*`).
El comodí coincideix amb qualsevol nombre de caràcters a la seva posició i es pot emprar per fer coincidir claus o paràmetres d'element (per exemple, `vfs.file.*[*]`).

::: notaimportant
Per millorar la seguretat, es recomana utilitzar claus d'element exactes en lloc de comodins.
Per a més detalls, consulteu [Assegurar les regles de permís/denegació](#securing-allowdeny-rules).
:::

A diferència d'altres paràmetres de configuració de l'agent, podeu especificar un nombre il·limitat de paràmetres `AllowKey` o `DenyKey`.

[comment]: # ({/40953ae4-9de656b2})

[comment]: # ({9a018340-3145c750})
#### Notes importants

- Tots els elements de [`system.run`](/manual/config/items/itemtypes/zabbix_agent#system-data) són desactivats per defecte (fins i tot quan `DenyKey` està buit), com si `DenyKey=system.run[*]` s'hagués definit com a [última regla](#allowdeny-rule-order).
Per això, podeu permetre elements específics de `system.run` sense denegar explícitament altres elements de `system.run`.

- Un element especificat a `AllowKey` també s'ha d'especificar a `DenyKey` (excepte els elements de `system.run`); en cas contrari, l'agent Zabbix **no s'iniciarà**.

- Si és possible, utilitzeu `AllowKey` per permetre només els elements necessaris i denegar tota la resta.
Algunes claus es poden fer un ús indegut per llegir fitxers no desitjats mitjançant el recorregut de ruta (per exemple, `vfs.file.contents["../../../../etc/passwd"]`), i les noves versions de l'agent Zabbix poden introduir claus no cobertes per les vostres regles `DenyKey`.

- La configuració d'`AllowKey` i `DenyKey` no afecta els paràmetres de l'agent `HostnameItem`, `HostMetadataItem` o `HostInterfaceItem`.

- Els elements denegats esdevenen no compatibles sense cap suggeriment ni missatge d'error; per exemple:
- El paràmetre de línia d'ordres de l'agent Zabbix [`--print (-p)`](/manual/concepts/agent#other-agent-options) no mostrarà les claus d'element denegades.
- El paràmetre de línia d'ordres de l'agent Zabbix [`--test (-t)`](/manual/concepts/agent#other-agent-options) retornarà "Clau d'element no compatible." per a les claus d'element denegades. - El fitxer de registre de l'agent Zabbix no registrarà les [ordres remotes] denegades (/manual/config/notifications/action/operation/remote_command) si `LogRemoteCommands=1`.

[comment]: # ({/9a018340-3145c750})

[comment]: # ({071aae59-66ec4bb8})
#### Ordre de regles de permís/denegació

Podeu especificar un nombre il·limitat de regles `AllowKey` o `DenyKey`, tot i que el seu ordre és important.

- Les regles s'avaluen una per una, de dalt a baix.
- Quan una clau d'element coincideix amb una regla, es permet o es denega, i l'avaluació de la regla s'atura.

Per exemple, en avaluar `vfs.file.contents[/etc/passwd]`, les regles es processen de la manera següent:

```default
AllowKey=vfs.file.contents[/tmp/app.log] # El patró de la clau d'element no coincideix, l'agent procedeix a la regla següent.
AllowKey=vfs.file.contents[/etc/passwd] # El patró de la clau d'element coincideix; l'agent permet la comprovació de l'element i atura l'avaluació de la regla.
DenyKey=vfs.file.*[*] # L'agent ignora la regla, ja que l'avaluació s'ha aturat.
```

L'ordre de regles següent denegarà la comprovació d'elements:

```default
DenyKey=vfs.file.*[*] # El patró de clau d'element coincideix; l'agent denega la comprovació d'elements i atura l'avaluació de la regla.
AllowKey=vfs.file.contents[/etc/passwd] # L'agent ignora la regla, ja que l'avaluació s'ha aturat.
AllowKey=vfs.file.contents[/tmp/app.log] # L'agent ignora la regla, ja que l'avaluació s'ha aturat.
```

[comment]: # ({/071aae59-66ec4bb8})

[comment]: # ({cb10c569-253ad144})
#### Exemples

Els exemples següents mostren patrons de configuració comuns per a `AllowKey` i `DenyKey`.

[comment]: # ({/cb10c569-253ad144})

[comment]: # ({7c50f9f0-19895d10})
##### Permetre comprovacions i comandes específiques

Permeteu només dues comprovacions d'elements [`vfs.file`](/manual/config/items/itemtypes/zabbix_agent#virtual-file-system-data) i dues ordres [`system.run`](/manual/config/items/itemtypes/zabbix_agent#system-data):

```default
AllowKey=vfs.file.contents[/tmp/app.log]
AllowKey=vfs.file.size[/tmp/app.log]
AllowKey=system.run[/usr/bin/uptime]
AllowKey=system.run[/usr/bin/df -h /]
DenyKey=vfs.file.*[*]
```

::: noteclassic
Establir `DenyKey=system.run[*]` no és necessari, perquè totes les altres ordres `system.run` es deneguen per defecte.
:::

[comment]: # ({/7c50f9f0-19895d10})

[comment]: # ({038b9efe-3cc5f239})
##### Permetre scripts

Permetre que l'agent Zabbix executi scripts a equips mitjançant tots els mètodes disponibles:

- [Scripts globals](/manual/web_interface/frontend_sections/administration/scripts) que es poden executar al frontend o mitjançant l'API (aquest mètode sempre utilitza la clau `system.run[myscript.sh]`)
- Comandes remotes des de [action operations](/manual/config/notifications/action/operation#operation-details) (aquest mètode sempre utilitza la clau `system.run[myscript.sh,nowait]`)
- [`system.run`](/manual/config/items/itemtypes/zabbix_agent#system-data) Elements de l'agent Zabbix amb l'script, per exemple:
- `system.run[myscript.sh]`
- `system.run[myscript.sh,wait]`
- `system.run[myscript.sh,nowait]`

```default
AllowKey=system.run[myscript.sh,*]
```

Per controlar el paràmetre `wait`/`nowait`, heu de definir una regla diferent.
Per exemple, només podeu permetre els elements `system.run[myscript.sh,wait]`, excloent així altres mètodes:

```default
AllowKey=system.run[myscript.sh,wait]
```

[comment]: # ({/038b9efe-3cc5f239})

[comment]: # ({684f865a-1965a7d7})
##### Assegurar les regles de permetre/denegar

Aquest exemple mostra com assegurar les regles `AllowKey` o `DenyKey` massa permissives.

Tingueu en compte les regles següents:

```default
AllowKey=system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat*"]
DenyKey=vfs.file.*
DenyKey=system.cpu.load[*]
```

::: noteclassic
A Windows, heu d'escapar els espais a la ruta utilitzant un circumflex (`^`).
:::

Aquestes regles contenen un comodí (`*`), que es pot fer servir malament:

- L'script `test.bat` es pot executar amb qualsevol argument, inclosos els no desitjats.
- El patró `vfs.file.*` només coincideix amb les claus d'element sense paràmetres; tanmateix, tots els elements [`vfs.file`](/manual/config/items/itemtypes/zabbix_agent#virtual-file-system-data) requereixen paràmetres.
- El patró `system.cpu.load[*]` només coincideix amb les claus d'element amb paràmetres; tanmateix, els elements [`system.cpu.load`](/manual/config/items/itemtypes/zabbix_agent#system-data) no requereixen paràmetres.

Per assegurar aquestes regles, permeteu explícitament l'execució de `test.bat` només amb arguments específics i denegueu els patrons de clau d'element correctes; per exemple:

```default
AllowKey=system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat status"]
AllowKey=system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat version"]
DenyKey=vfs.file.*[*]
DenyKey=system.cpu.load
DenyKey=system.cpu.load[*]
```

Podeu provar les regles executant les ordres següents, que retornaran `ZBX_NOTSUPPORTED`.

```bash
cd "C:\Arxius de programa\Zabbix Agent 2"
zabbix_agent2.exe -t system.run["C:\Arxius de programa\Zabbix^ Agent^ 2\scripts\test.bat debug"]
zabbix_agent2.exe -t vfs.file.size["C:\ProgramData\MyApp\config.ini"]
zabbix_agent2.exe -t vfs.file.contents["C:\Windows\System32\drivers\etc\hosts"]
zabbix_agent2.exe -t system.cpu.load
zabbix_agent2.exe -t system.cpu.load[all,avg1]
```

[comment]: # ({/684f865a-1965a7d7})

[comment]: # ({23f78b84-16bccaff})
##### Exemples de patrons

La taula següent mostra com es coincideixen els patrons de clau d'element:

- Una clau coincideix amb el patró només si compleix **totes** les condicions de la columna *Coincidències*.
- Els paràmetres han d'anar completament entre claudàtors (per exemple, `vfs.file.contents[*` i `vfs.file.contents*utf8]` són patrons no vàlids).

|Patró|Coincidències|Exemples|
|--|----|----|
|`*`|Qualsevol clau amb o sense paràmetres| |
|`vfs.file.*`|La clau comença amb `vfs.file.`<br>Sense paràmetres|Coincidències:<br>`vfs.file.size`<br>`vfs.file.contents`<br><br>No coincideix:<br>`vfs.file.contents[]`<br>`vfs.file.size[/var/log/app.log]`|
|`vfs.*.contents`|La clau comença amb `vfs.`<br>La clau acaba amb `.contents`<br>Sense paràmetres|Coincideix amb: <br>`vfs..contents`<br>`vfs.mount.point.file.contents`<br><br>No coincideix amb:<br>`vfs.contents`<br>`vfs.file.contents[]`|
|`vfs.file.*[*]`|La clau comença amb `vfs.file.`<br>Qualsevol paràmetre o paràmetres buits|Coincideix<br>`vfs.file.get.custom[]`<br>`vfs.file.size[/var/log/app.log, utf8]`<br><br>No coincideix amb:<br>`vfs.file.get.custom`| |`vfs.file.contents`|La clau és `vfs.file.contents`<br>Sense paràmetres|Coincideix:<br>`vfs.file.contents`<br><br>No coincideix amb:<br>`vfs.file.contents[/etc/passwd]`|
|`vfs.file.contents[]`|La clau és `vfs.file.contents[]`<br>Paràmetres buits|Coincideix:<br>`vfs.file.contents[]`<br><br>No coincideix amb:<br>`vfs.file.contents`|
|`vfs.file.contents[*]`|La clau és `vfs.file.contents`<br>Qualsevol paràmetre o paràmetres buits|Coincideix:<br>`vfs.file.contents[/path/to/file]`<br><br>No coincideix amb:<br>`vfs.file.contents`|
|`vfs.file.contents[/etc/passwd,*]`|La clau és `vfs.file.contents`<br>El primer paràmetre és `/etc/passwd`<br>Qualsevol paràmetre o un segon paràmetre buit|Coincideix amb:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf8]`<br><br>No coincideix amb:<br>`vfs.file.contents[]`<br>`vfs.file.contents[/etc/passwd]`| |`vfs.file.contents[*passwd*]`|La clau és `vfs.file.contents`<br>El primer paràmetre inclou `passwd`<br>No hi ha un segon paràmetre|Coincideix amb:<br>`vfs.file.contents[/etc/passwd]`<br><br>No coincideix amb:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf8]`| |`vfs.file.contents[*passwd*,*]`|La clau és `vfs.file.contents`<br>El primer paràmetre inclou `passwd`<br>Qualsevol paràmetre o un segon paràmetre buit|Coincideix amb:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf8]`<br><br>No coincideix amb:<br>`vfs.file.contents[/etc/passwd]`<br>`vfs.file.contents[/tmp/test]`| |`vfs.file.contents[/etc/passwd,utf8]`|La clau és `vfs.file.contents`<br>El primer paràmetre és `/etc/passwd`<br>El segon paràmetre és `utf8`|Coincideix amb:<br>`vfs.file.contents[/etc/passwd,utf8]`<br><br>No coincideix amb:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf16]`|

[comment]: # ({/23f78b84-16bccaff})
