MCP server

Pārskats

Zabbix MCP serveris ir process, kas ļauj MI aģentiem strādāt ar Zabbix, izmantojot Model Context Protocol (MCP). MCP serveris sazinās ar MCP klientiem un Zabbix API.

Izmantojot MCP serveri, MI aģents var:

  • Iegūt hosts grupas, veidņu grupas, hosts, veidnes, vienumus, LLD noteikumus, saskarnes, makro, trigerus, problēmas, uzturēšanas periodus un vienumu vēstures datus (izņemot bināros vienumus);
  • Atjaunināt problēmas: pievienot komentārus, apstiprināt vai atcelt apstiprinājumu, mainīt prioritāti, apspiest vai atcelt apspiešanu, kā arī aizvērt problēmas;
  • Izveidot, atjaunināt un dzēst uzturēšanas periodus.

Autorizācijai tiek izmantoti Zabbix API marķieri; marķieri tiek nosūtīti ar katru pieprasījumu. Piekļuvi ierobežo marķiera īpašnieka atļaujas: ir redzami tikai dati no tām hosts grupām, kas ir pieejamas šim lietotājam, un darbības, kuras lietotājam nav atļauts veikt, tiek noraidītas.

MCP serveris ir bezstāvokļa: starp pieprasījumiem sesija netiek saglabāta.

Lai gan Zabbix MCP serveris var darboties ar vecākām vai jaunākām Zabbix versijām, tā oficiālā saderība tiek atbalstīta tikai ar to pašu Zabbix versiju, kuru izmanto pats MCP serveris.

Skatiet arī:

Instalēšana

Oficiālā zabbix-mcp-server pakotne ir pieejama Zabbix repozitorijā.

Lai instalētu Zabbix MCP serveri no pirmkoda, izveidojiet to, izmantojot make.

Lai konfigurētu Zabbix MCP serveri, atjauniniet MCP servera konfigurācijas faila parametrus. Jāiestata vismaz parametri FrontendURL un AllowedIP.

Noklusējuma konfigurācijas fails (zabbix_mcp_server.conf) atrodas /etc/zabbix/; tajā ir aizliegti rīki, kas visbiežāk atklāj sensitīvus datus. Lai iespējotu kādu rīku, noņemiet atbilstošo rindu DenyTool.

Skatiet arī: Drošības paraugprakse

Darbināšana

Lai palaistu MCP serveri, izpildiet:

zabbix_mcp_server -c /etc/zabbix/zabbix_mcp_server.conf

Lai pārbaudītu konfigurācijas failu un izietu, nepalaižot serveri, izmantojiet opciju -T:

zabbix_mcp_server -c /etc/zabbix/zabbix_mcp_server.conf -T

Tiek atbalstītas šādas komandrindas opcijas:

Opcija Apraksts
-c <file> Konfigurācijas faila ceļš.
Noklusējuma vērtība ir /etc/zabbix/zabbix_mcp_server.conf.
-T Validēt konfigurācijas failu un iziet.
-h Parādīt palīdzības informāciju.
-V Parādīt versijas numuru.

Ja MCP serveris ir instalēts no pirmkoda, systemd vienība ir jāizveido manuāli, piemēram:

[Unit]
Description=Zabbix MCP server
After=network-online.target

[Service]
User=zabbix
ExecStart=/usr/local/sbin/zabbix_mcp_server -c /etc/zabbix/zabbix_mcp_server.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target

MCP klienta savienošana

MCP serverim var pievienot jebkuru MCP klientu, kas atbalsta Streamable HTTP transportu. Ir nepieciešami šādi iestatījumi:

Iestatījums Vērtība
Transports Streamable HTTP
URL https://<host>:<ListenPort>/mcp
Galvene Authorization: Bearer <Zabbix API token>, nosūtīta ar katru pieprasījumu

Katram lietotājam ir jākonfigurē savs API tokens.

Lai pārbaudītu iestatījumus, nosūtiet vienu pieprasījumu MCP serverim:

curl -sS https://mcp.example.com:8443/mcp \
  -H "Authorization: Bearer $ZABBIX_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

HTTP statusa kods 200 un pieejamo rīku saraksts atbildē apstiprina, ka MCP serveris ir sasniedzams un pieņem tokenu; sarakstā ir redzams, kuri rīki ir pieejami. Citi statusa kodi norāda uz šādām problēmām:

  • 400 - Accept galvenē nav iekļauti abi transportam nepieciešamie multivides tipi;
  • 401 - trūkst Authorization galvenes ar tokenu;
  • 403 - klienta adrese nav norādīta AllowedIP parametrā.

Apstiprināšana un rīku piekļuve

Ja MCP klients atbalsta veidlapu izsaukšanu, lietotājam ir jāapstiprina katras izmaiņas pirms tās nosūtīšanas uz Zabbix. MCP klients parāda lietotājam, kas tiks mainīts, un izmaiņa tiek lietota tikai tad, ja lietotājs to apstiprina; ja lietotājs pieprasījumu noraida vai aizver, Zabbix nekas netiek mainīts. Apstiprinājums ir derīgs piecas minūtes un tikai tieši parādītajai izmaiņai; šajā laikā apstiprinājumu var izmantot atkārtoti.

Ja MCP klients neatbalsta veidlapu izsaukšanu (tostarp klienti, kas atbalsta tikai URL izsaukšanu), izmaiņas tiek lietotas nekavējoties, bez apstiprināšanas. Šādā gadījumā ierobežojiet rakstīšanas rīkus un Zabbix API atļaujas.

Apstiprināšana ir īpaši svarīga, jo rīka izvade var saturēt neuzticamu tekstu no uzraudzītajām sistēmām, kas var ietekmēt aģentu.

Izmantojiet AllowTool, DenyTool, AllowToolRegexp un DenyToolRegexp, lai kontrolētu, kurus rīkus MCP serveris padara pieejamus. Liegtos rīkus nevar izsaukt vai uzskaitīt, un to saistītajiem resursiem nevar piekļūt.

AllowTool, DenyTool, AllowToolRegexp un DenyToolRegexp noteikumi ierobežo MCP piekļuvi, bet nemaina Zabbix pilnvaras marķiera atļaujas. Ja lietotāja saskarnes adrese ir pieejama aģentam, aģents var mēģināt nosūtīt tiešus API pieprasījumus. Nodrošiniet, lai Zabbix lietotāja saskarnes atrašanās vieta un MCP servera konfigurācija nebūtu pieejama aģentam, tādējādi pieprasījumiem būs jāiet caur MCP serveri un tā drošības vadīklām.

Drošības paraugprakse

API marķieri

Autentifikāciju un autorizāciju pilnībā nodrošina Zabbix. MCP klients ar katru pieprasījumu nosūta Zabbix API marķieri; MCP serveris to pārsūta, neuzglabājot un nereģistrējot, savukārt Zabbix validē marķieri, piemēro atļaujas un reģistrē darbības audita žurnālā.

Katram aģentam un lietotājam izmantojiet atsevišķu, ar minimālajām nepieciešamajām privilēģijām apveltītu marķieri ar derīguma termiņu. Glabājiet marķierus drošā vietā un regulāri nomainiet API marķierus.

TLS šifrēšana

Lai novērstu tokenu nosūtīšanu nešifrētā veidā, iestatiet TLSAccept=cert un norādiet sertifikātu un atslēgu (TLSCertFile un TLSKeyFile) vai palaidiet MCP serveri aiz uzticama TLS terminējoša reversā starpniekservera un iestatiet TLSAccept=unencrypted. Nešifrēts HTTP ir pieļaujams tikai uzticamā tīklā.

Piekļuves ierobežojumi

Ierobežojiet parametru AllowedIP, atļaujot tikai uzticamu MCP klientu adreses, un izmantojiet Zabbix atļaujas, lai ierobežotu API pilnvaru iespējas.

MCP serveris nenodrošina pieprasījumu ātruma ierobežošanu. Katrs MCP pieprasījums parasti izraisa vienu Zabbix API izsaukumu, tomēr cilpā darbojošs aģents joprojām var radīt ievērojamu slodzi.

Sensitīvu datu aizsardzība

Vienumu atslēgas var saturēt akreditācijas datus (piemēram, SSH, JMX, ODBC un HTTP aģenta vienumos), makro vērtības var saturēt paroles un kopienas virknes, saskarnes atklāj iekšējās adreses, bet žurnāla vai teksta vienumu vērtības var saturēt jebkādus datus. Šī iemesla dēļ rīki item_get, lld_get, interface_get, macro_get un history_get piegādes konfigurācijas failā pēc noklusējuma ir liegti.

Lai nepieļautu sensitīvu makro vērtību atklāšanu pievienotā aģenta LLM pakalpojumu sniedzējam, izmantojiet slepenos makro; to vērtības API nekad neatgriež.