−25%

la planurile Windows anuale, până pe 31 oct. Vezi planurile

EQVPS
Începe

MCP guardrails: permisiuni sigure pentru agenții AI

Înainte să-i dai unui agent AI un token pentru serverele tale, află exact ce poate atinge. Toate cele 45 de unelte MCP EQVPS pe niveluri de risc, limitele pe care le impune serverul și configurarea pe care am folosi-o noi înșine.

Verificat ultima dată: 2026-10-04 · Serverul MCP 1.6.0 · 45 de unelte (token de client)

Un token MCP e parola contului tău, cu un API atașat. Dă-l unui agent și ai un utilizator care nu obosește niciodată, citește fiecare pagină web spre care îl îndrepți și face exact ce spunea ultima instrucțiune din contextul lui. De cele mai multe ori, asta vrei. Pagina de față e despre restul timpului.

Tot ce urmează a fost verificat pe serverul live la data de sus: lista uneltelor vine din tools/list pe https://mcp.eqvps.com/mcp, limitele din API-ul însuși. Dacă ești nou pe server, începe cu conectarea unui client MCP și tokenurile API, apoi revino.

Modelul de amenințare: ce merge de fapt prost

Trei lucruri, în ordinea în care le vedem:

  1. Agentul înțelege greșit. „Curăță mașina de test” devine reinstalarea serverului greșit. Fără rea-voință, doar un model care umple un gol din instrucțiune.
  2. Prompt injection. Agentul citește un text pe care nu l-ai scris tu (un README, un răspuns de la suport, o pagină colectată) și acel text îi spune să facă ceva. Dacă agentul are un token cu drepturi depline, le are și instrucțiunea injectată.
  3. Tokenul se scurge. Ajunge într-un istoric de shell, într-un repo public, într-o configurație MCP dată altora sau într-o linie de log.

Serverul MCP verifică dacă tokenul e valid și dacă serverul aparține acelui cont (sau îi e delegat). Nu știe ce ai vrut să spui. Fiecare guardrail de mai jos lucrează pe o singură întrebare: câtă pagubă e posibilă când instrucțiunea e greșită?

Fiecare unealtă MCP, pe niveluri de risc

Un token de client vede 45 de unelte (serverul MCP 1.6.0). Un token de reseller (rk_…) vede un set separat de 30 de unelte pentru reselleri și niciuna dintre acestea, așa că endpointul are 75 în total. Clientul tău primește din tools/list doar propriul set.

Pagina asta ordonează uneltele după risc. Pentru parametrii fiecărei unelte și exemple de apeluri, vezi referința de parametri; toate uneltele pe câte un rând, inclusiv cele 30 pentru reselleri, sunt în lista completă.

Nu livrăm încă adnotări pentru uneltele MCP (readOnlyHint, destructiveHint), așa că clientul tău nu le poate ordona singur. Folosește nivelurile de mai jos ca să setezi aprobările manual.

Nivelul 0 — publice, fără token (5)

UnealtaCe face
get_startedTot fluxul într-un singur răspuns: ce unelte să apelezi și în ce ordine
list_plansPlanuri, prețuri, imagini de OS
sandbox_pricingTarifele sandboxurilor
register_accountCreează un cont nou și îi returnează tokenul
loginE-mail + parolă → token

Nivelul 1 — citirea contului, fără efecte secundare (15)

UnealtaCe faceAtenție
whoamiId-ul contului, numele, e-mailul
get_balanceSoldul preplătit
list_vpsServerele active, în pregătire și suspendate
get_vps_statusStarea, specificațiile, datele de accesCu reveal: true returnează parola root
get_vps_metricsCPU, memorie, rețea, disc în timp
get_upgrade_optionsPlanurile pe care le poate schimba serverul pe loc
list_delegationsCui i-ai oferit acces
list_delegated_to_meServerele pe care alții ți le-au delegat
list_ticketsTichetele tale de suport
get_ticketUn tichet cu firul luiTextul tichetului e o intrare nesigură pentru agent
list_sandboxesSandboxurile tale
get_sandboxUn sandbox și consumul lui
get_taskRezultatul unei sarcini de fundal
download_fileCitește un fișier mic dintr-un sandbox
get_download_urlLink de scurtă durată spre un fișier din sandboxOricine are linkul poate descărca până expiră

Nivelul 2 — schimbă starea, nu cheltuie nimic (17)

UnealtaCe faceAtenție
power_vpspornire / oprire / repornireO oprire e o oprire: serviciile cad
set_hostnameRedenumește serverulSchimbă valoarea cu care e comparat confirm
undo_cancelElimină o anulare programată la sfârșitul perioadei
refresh_tokenToken nou, cel vechi revocat imediatActualizează apoi orice configurație statică
set_passwordSetează parola contului dacă nu există unaCine are tokenul o poate seta primul
topup_balanceCreează o factură de alimentare + un link de checkout criptoPlata ei cere un portofel
pay_invoiceLink de checkout pentru o factură neplătităLa fel
accept_delegationAcceptă o invitație
revoke_delegationÎncheie o delegare
create_ticket / reply_ticket / close_ticketTichete de suportAgentul scrie suportului în numele tău
run_code / exec_commandRulează cod într-un sandboxDoar în sandbox, nu pe VPS-ul tău
kill_taskOprește o sarcină de fundal din sandbox
upload_file / get_upload_urlPune un fișier într-un sandbox

Nivelul 3 — cheltuie bani, distruge date sau oferă acces (8)

UnealtaCe faceVerificarea pe server
order_vpsComandă un server, plătit din soldSold insuficient → factură neplătită, nu se taxează nimic
change_planSchimbare de plan pe loc, diferența taxată din soldconfirm: true; sold insuficient → 402
create_sandboxPornește un sandbox facturatSold gol → 402
reinstall_vpsȘterge discul și instalează un OS nouconfirm = numele de host exact sau DELETE; 4 apeluri/min
reset_passwordParolă root nouă, cea veche nu mai mergeconfirm = numele de host sau DELETE; 6 apeluri/min
cancel_serviceend_of_period (implicit, reversibil) sau immediate (distruge serverul acum)immediate cere confirm = numele de host
kill_sandboxȘterge un sandbox și fișierele luiniciuna
delegate_serviceÎi oferă altei persoane acces de operator la un serverDoar proprietarul; persoana trebuie să accepte

Jurnalul schimbărilor setului de unelte

DataVersiunea serveruluiSchimbareImpactul asupra riscului
2026-10-031.6.0adăugat refresh_token; tokenurile trăiesc implicit 1 anNivelul 2
2026-10-031.5.0undo_cancel, get_upgrade_options, change_planchange_plan cheltuie din sold → nivelul 3
2026-10-031.1.013 unelte pentru sandboxuricreate_sandbox cheltuie, kill_sandbox distruge → nivelul 3

Versiunea care rulează e publică: curl -s https://mcp.eqvps.com/healthz. Când se schimbă, se schimbă și tabelul.

Soldul e plafonul de cheltuieli

EQVPS e preplătit. Nu există card salvat, linie de credit sau descoperit de cont, așa că maximul pe care îl poate cheltui vreodată un agent e cât stă în sold. Trei unelte cheltuie: order_vps, change_plan și create_sandbox. Reînnoirile serverelor existente ies din același sold.

Agentul poate crea cereri de bani, dar nu le poate plăti. topup_balance și pay_invoice returnează un link de checkout cripto, iar un link nu face nimic fără un portofel în spate. Nu există nici endpoint de retragere: banii din sold pot cumpăra servicii în contul tău și nu pot fi trimiși în afară. Și banii pentru timpul nefolosit, la o anulare imediată, se întorc tot în sold.

O precizare, și e una reală. Dacă ții soldul foarte mic ca să limitezi agentul, propriile reînnoiri încep să eșueze și serverele intră în perioada de grație. Regula noastră practică: un ciclu de reînnoire pentru ce rulezi deja, plus bugetul sarcinii curente a agentului. Ghidul bugetului pentru agenți arată cum îl dimensionezi. Iar dacă îi dai agentului propriul portofel alimentat, acel portofel devine un al doilea plafon la care trebuie să fii atent.

Privilegiul minim: nu există (încă) token doar de citire

Răspunsul direct: fiecare token de client are aceleași drepturi ca, în panou, contul. Numele și durata de viață ale tokenurilor se pot configura; domeniile de acces, nu.

Cel mai îngust lucru disponibil azi e delegarea. Îi dai agentului propriul cont, cu sold zero, și îi delegi un server:

delegate_service  { "service_id": "EQ-XXXX", "email": "agent@yourdomain.com", "expires_days": 30 }

Același lucru prin REST:

curl -s -X POST "https://api.eqvps.com/api/v1/eqvps/services/EQ-XXXX/delegations" \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"email":"agent@yourdomain.com","expires_days":30}'

Invitația trebuie acceptată fiind autentificat cu acel e-mail (accept_delegation), iar expires_days poate fi între 1 și 365. Pas cu pas, cu capturi de ecran: delegarea accesului și accesul în documentație.

Un cont delegat poateUn cont delegat nu poate
Să vadă starea, metricile și istoricul acelui serverSă vadă celelalte servere, soldul sau facturile tale
Să pornească, să oprească, să reporneascăSă anuleze, să reînnoiască sau să schimbe planul
Să seteze numele de host și reverse DNSSă cumpere add-on-uri sau IP-uri
Să reseteze parola rootSă deschidă consola web
Să reinstaleze OS-ulSă delege serverul altcuiva

Observă ultimele două rânduri din stânga. Un delegat nu-ți poate cheltui banii, dar poate șterge acel server. Pornește backup-urile pe orice server pe care un agent îl poate reinstala.

Igiena tokenurilor

Un token pentru fiecare agent, cu un nume. Creează-l în Panou → Setări → Tokenuri API pentru agenți sau:

curl -s -X POST "https://api.eqvps.com/api/v1/eqvps/auth/tokens" \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"backup-agent","expires_in_days":90}'

Tokenul e afișat o singură dată. Durata de viață e între 1 și 1825 de zile, 365 dacă nu o setezi. Pentru agenți am alege 90.

Ține-l într-un fișier pe care doar tu îl poți citi, nu în repo, nu în prompt, nu într-o variabilă de shell pe care o lipești peste tot:

mkdir -p ~/.config/eqvps && chmod 700 ~/.config/eqvps
( umask 077; read -rsp 'EQVPS token: ' T; echo; printf 'EQVPS_TOKEN=%s\n' "$T" > ~/.config/eqvps/agent.env )
ls -l ~/.config/eqvps/agent.env   # expect -rw-------

Apoi încarcă-l în serviciul agentului cu EnvironmentFile= (systemd) sau set -a; . ~/.config/eqvps/agent.env; set +a.

Rotește-l înainte să expire. Unealta refresh_token sau POST /auth/tokens/{id}/refresh emite un token nou cu același nume și îl revocă imediat pe cel vechi. Dacă clientul tău MCP are tokenul scris direct în configurație, actualizează-l imediat după, altfel următoarea sesiune primește 401.

Verifică cine folosește ce: GET /auth/tokens listează fiecare token cu numele, expirarea și last_used_at. Un token pe care nu-l recunoști sau unul folosit după ce ai oprit agentul e semnalul tău.

Dacă se scurge un token

În ordinea asta:

  1. Revocă-l. Panou → Setări → Tokenuri API pentru agenți → Revocă sau curl -s -X DELETE -H "Authorization: Bearer $EQVPS_TOKEN" https://api.eqvps.com/api/v1/eqvps/auth/tokens/<id>. Nu mai merge de la următoarea cerere.
  2. Caută tokenuri noi pe care nu le-ai creat și revocă-le și pe ele.
  3. Verifică suprafața pagubei: Istoricul serviciului fiecărui server, facturile și soldul și list_delegations pentru acces pe care nu l-ai oferit.
  4. Schimbă parolele root pe fiecare server pe care îl putea vedea tokenul. get_vps_status cu reveal: true dă parola root, așa că un token scurs e o parolă root scursă. Verifică și ~/.ssh/authorized_keys cât ești acolo.
  5. Închide ușa parolei. Dacă contul tău n-a avut niciodată o parolă, cine avea tokenul putea seta una cu set_password. Autentifică-te cu un cod pe e-mail și schimb-o.

Prevenția pentru pasul 5 e ieftină: setează-ți chiar acum o parolă de cont, iar set_password va returna 409 pentru oricine după tine.

Omul în buclă

Ce impune serverul:

  • reinstall_vps, reset_password și cancel_service cu type: immediate cer confirm egal cu numele de host exact (DELETE merge și pentru reinstalare și resetare).
  • change_plan cere confirm: true.
  • Anularea implicită e end_of_period: serverul rulează până la sfârșitul perioadei plătite, iar undo_cancel o întoarce.
  • Limite de rată pe cont: reinstalare 4/min, resetarea parolei 6/min, pornire/oprire 20/min, comenzi 20/min. Destul cât să oprească o buclă să facă asta de cincizeci de ori, nu destul cât să oprească un singur apel greșit.

Fii lămurit ce e confirm. Oprește un agent să acționeze pe „curăță tot”. Nu oprește un atacator, pentru că numele de host e la un apel get_vps_status distanță. Pasul real de aprobare stă în clientul tău MCP. Majoritatea clienților pot întreba înaintea fiecărui apel de unealtă; lasă nivelurile 0 și 1 să ruleze liber și pune nivelul 3 să întrebe mereu. În clienții cu permisiuni pe unealtă, cum e settings.json din Claude Code (serverul înregistrat ca eqvps):

{
  "permissions": {
    "ask": ["mcp__eqvps__order_vps", "mcp__eqvps__change_plan", "mcp__eqvps__create_sandbox", "mcp__eqvps__reset_password", "mcp__eqvps__delegate_service"],
    "deny": ["mcp__eqvps__reinstall_vps", "mcp__eqvps__cancel_service", "mcp__eqvps__kill_sandbox"]
  }
}

Adaugă și un rând în instrucțiunile agentului. Nu e un control de securitate în sine, dar taie cazurile de neînțelegere:

Never call reinstall_vps, reset_password, cancel_service (type=immediate), change_plan,
order_vps, create_sandbox, kill_sandbox or delegate_service unless the human has typed
the target server's hostname in this conversation for that specific action.

Dacă agentul se autentifică printr-un cod pe e-mail în loc să țină un token de lungă durată, vezi autentificarea agentului prin MCP.

Auditul: ce poți vedea după aceea

  • Lista tokenurilor (GET /auth/tokens sau Setări → Tokenuri API pentru agenți): nume, creare, expirare, last_used_at. De aceea contează să dai câte un nume tokenului fiecărui agent.
  • Istoricul serviciului (panou, pagina serverului): porniri, opriri și reporniri, reinstalări, resetări de parolă, schimbări de plan, plăți, fiecare cu ora și cu autorul: tu, suportul sau automat. Nu-ți spune ce token sau delegat a acționat, doar că a venit din partea ta.
  • Facturile și soldul: fiecare taxare și fiecare sumă întoarsă în sold.
  • list_delegations: cine are acces la ce și până când.

Golul din Istoricul serviciului e limita cinstită a auditului pe server, azi. Dacă trebuie să știi ce agent a făcut ce, loghează pe partea agentului fiecare apel de unealtă, cu argumentele lui (fără secrete).

Configurarea pe care am folosi-o noi

Pentru un agent care administrează un server de producție:

  1. Un cont separat pentru agent, cu sold zero, cu serverul delegat cu expires_days: 90.
  2. Tokenul tău de proprietar rămâne la tine, în nicio configurație de agent.
  3. Backup-uri pe acel server, pentru că un delegat poate reinstala.
  4. Uneltele de nivelul 3 pe „ask” sau „deny” în client.
  5. Tokenul agentului într-un fișier 600, reîmprospătat înainte să expire.

Pentru un agent care trebuie să comande servere sau să ruleze sandboxuri, delegarea nu ajunge, pentru că are nevoie de sold. Acolo soldul e plafonul tău: alimentează-l pentru fiecare sarcină, dă un nume tokenului și citește last_used_at o dată pe săptămână. Dacă un token doar de citire ți-ar schimba felul în care pui agenții în producție, spune-ne la suport: genul ăsta de feedback decide ce construim mai departe.

Întrebări frecvente

Pot să-i dau unui agent AI acces doar de citire?

Nu cu un token, deocamdată: fiecare token de client are aceleași drepturi ca contul tău în panou. Cea mai apropiată opțiune e delegarea: îi dai agentului propriul cont, fără sold, și îi delegi un server. Poate vedea și opera acel server, dar nu poate cheltui, anula, deschide consola sau delega mai departe. Poate totuși reporni, reseta parola root și reinstala, așa că ține backup-uri pe acel server.

Cum limitez cât poate cheltui un agent?

Prin soldul preplătit. Doar trei unelte cheltuie bani (order_vps, change_plan, create_sandbox) și trag din sold; când nu ajunge, returnează 402 sau o factură neplătită. Agentul poate crea un link de alimentare sau de plată, dar plata cere un portofel cripto, deci o face un om. Nu există card salvat și nici descoperit de cont.

Ce împiedică un agent să-mi șteargă serverul?

reinstall_vps, reset_password și un cancel_service imediat cer confirm setat exact la numele de host (sau DELETE pentru reinstalare și resetare). Anularea implicită e end_of_period, care lasă serverul să ruleze și poate fi anulată cu undo_cancel. Conturile delegate nu pot anula deloc. Câmpul confirm oprește un agent care acționează pe o instrucțiune vagă, nu un atacator cu tokenul tău, așa că setează aceste unelte să ceară mereu aprobarea în clientul MCP.

Ce fac dacă mi s-a scurs tokenul Bearer?

Revocă-l imediat (Panou → Setări → Tokenuri API pentru agenți sau DELETE /auth/tokens/{id}). Apoi caută în lista de tokenuri tokenuri pe care nu le recunoști, verifică Istoricul serviciului fiecărui server, facturile și list_delegations și schimbă parolele root pe serverele pe care le putea citi tokenul: get_vps_status cu reveal returnează parola root.

Câte unelte are serverul MCP EQVPS?

45 pentru un token de client, la serverul MCP 1.6.0 (verificat pe 2026-10-04): 5 publice, 15 doar de citire, 17 care schimbă starea fără să cheltuie și 8 care cheltuie bani, distrug date sau oferă acces. Tokenurile de reseller văd în schimb un set separat de 30 de unelte pentru reselleri, 75 în total pe același endpoint.

Comentarii

Încă nu există comentarii. Fii primul.

Lasă un comentariu

Comentariile sunt moderate înainte să apară.