Permisiunile cheilor API hotărăsc ce poate strica o cheie scursă. Într-o unealtă de linkuri, valoarea implicită sigură este o cheie legată de un singur workspace, plafonată la cel mai mic rol care face treaba, stocată ca hash cu pepper, cu limită de rată proprie și cu dată de expirare. O cheie care doar creează linkuri nu are ce căuta la webhookuri, membri sau facturare și nu ar trebui să deschidă niciodată un endpoint admin. Asta este privilegiul minim, iar cea mai mare parte se reduce la alegeri pe care le faci în cele treizeci de secunde cât durează crearea cheii.
Am citit multe configurări de automatizare în ultimul an, iar tiparul se repetă: cineva lipește într-o vineri după-amiază propria cheie atotputernică în n8n, merge, și nimeni nu se mai gândește la ea până pleacă persoana respectivă sau până când exportul fluxului ajunge într-un drive partajat. Restul articolului arată cum funcționează scope-urile și rolurile cheilor API într-un produs de linkuri scurte, ce poate face concret fiecare rol și cum predai o cheie unei unelte de automatizare fără să predai workspace-ul.
Se așază lângă lista noastră de verificare a securității scurtătoarelor de URL, care acoperă scanarea, semnarea webhookurilor și jurnalele de audit pe toată platforma. Acesta se concentrează pe cheia în sine.
Ce înseamnă permisiunile cheilor API într-o unealtă de linkuri
API-ul unei unelte de linkuri atinge mai mult decât linkuri. Același token care creează go.example.com/spring-sale poate, în funcție de permisiuni, să citească analiticele de clicuri, să adauge un domeniu personalizat, să invite un membru sau să înregistreze un webhook care trimite fiecare eveniment către un server din exterior. Acesta din urmă mă sperie. Un webhook este un flux de date permanent pe care cine îl creează îl poate îndrepta spre orice server dorește, iar nimeni din echipa ta nu l-ar observa neapărat săptămâni întregi.
Permisiunile au deci trei axe. Unde funcționează cheia (ce cont sau workspace)? Ce poate face acolo (citire, scriere, administrare)? Și cât timp, și cât de repede? Definiția din glosarul NIST pentru least privilege (accesat 2026-10-24) spune că fiecare entitate primește autorizările minime de care are nevoie pentru funcția ei, iar toate cele trei axe fac parte din asta. O cheie cu drepturi doar de citire, care nu expiră niciodată și nu are limită de rată, este tot supraprivilegiată în timp.
Chei API legate de workspace: o cheie, un workspace
În Elido, fiecare cheie este emisă într-un workspace și rămâne acolo. Dacă apelezi cu ea endpointurile altui workspace, primești un 404, același răspuns ca pentru un workspace inexistent, deci o cheie nu poate nici măcar confirma că alte workspaceuri există.
Contează mai mult decât pare. Agențiile și echipele mari aparțin adesea la cinci sau zece workspaceuri. Dacă o cheie personală ar moșteni tot ce poate atinge creatorul ei, un singur token scurs dintr-un proiect de client ar deschide toți clienții. Cheile API legate de workspace reduc raza de impact la un singur workspace.
Cheia este plafonată și la rolul ales la creare și nu depășește niciodată rolul curent al creatorului ei. Accesul efectiv este cel mai mic dintre cele două. Retrogradează la editor adminul care a făcut o cheie. Cheia scade odată cu el. Permisiunile personalizate atașate acelui membru se renunță și ele ori de câte ori rolul cheii e cel mai mic, fiindcă ele descriu persoana, nu cheia.
Chei API pe bază de roluri: ce poate face fiecare rol
Cheile Elido folosesc aceleași patru roluri ca oamenii: viewer, editor, admin și owner. Alegi unul la crearea cheii; dacă îl omiți, cheia primește implicit editor, care acoperă sarcina uzuală de automatizare, crearea de linkuri și citirea analiticelor, fără acces de admin.
Iată cum arată asta în practică pentru lucrurile pe care le ating de obicei integrările.
| Rol | Linkuri și campanii | Analitice | Webhookuri | Domenii, membri, chei |
|---|---|---|---|---|
| viewer | Doar citire | Citire, pornire joburi de export CSV | Listare endpointuri | Vizualizare domenii și membri |
| editor | Creare, editare, ștergere, creare în masă | Citire, pornire joburi de export CSV | Listare endpointuri | Vizualizare domenii și membri |
| admin | Tot ce poate editor | Plus configurare export de date S3, rapoarte programate prin e-mail | Creare, modificare, retrimitere | Gestionare domenii, membri, chei |
| owner | Tot | Tot | Tot | Tot |
Un dashboard de raportare care trage numărul de clicuri într-o unealtă BI are nevoie de viewer. Un job Google Sheets care generează linkuri de campanie are nevoie de editor. Aproape nimic din automatizarea de zi cu zi nu are nevoie de admin, iar o cheie owner aș trata-o ca pe un semnal de alarmă: owner există pentru oamenii care conduc workspace-ul și nu mă pot gândi la nicio sarcină de automatizare care să îl ceară.
Merită cunoscute două limite. Doar adminii și ownerii dețin permisiunea api_keys.manage, deci o cheie viewer sau editor nu poate lista sau revoca chei. Iar crearea unei chei, sau schimbarea limitei ei de rată, cere o persoană autentificată: o cheie API, indiferent de rol, primește un 403 ("this action requires an interactive session"). O cheie admin scursă nu poate crea un înlocuitor fără expirare. Poate totuși lista și revoca chei. Și nicio cheie, de niciun rol, nu ajunge la API-ul admin al platformei. Acea suprafață refuză direct autentificarea prin cheie API, cu un 403 și mesajul "admin access requires an interactive session". O cheie este pentru o integrare de workspace, și doar atât deschide.
De ce gestionarea webhookurilor cere o cheie admin
Aceasta îi surprinde pe oameni. Citirea listei de endpointuri webhook este permisă oricărui membru, inclusiv cheilor viewer. Dar crearea unui endpoint, schimbarea destinației lui sau retrimiterea unei livrări cere permisiunea workspace.edit, pe care o dețin doar admin și owner.
Raționamentul este problema fluxului permanent de mai devreme. Un editor poate crea o mie de linkuri și vei observa. Un editor care ar putea adăuga un webhook general îndreptat spre propriul server ar primi de atunci înainte fiecare eveniment de link, pe tăcute. De aceea modificările de webhook rămân la aceiași oameni care pot schimba setările workspace-ului.
În practică, configurează webhookurile o singură dată, manual, ca admin în dashboard. Apoi dă automatizării care le consumă o cheie editor sau viewer pentru apelurile ei API. Dacă conectezi webhookuri pentru evenimente de link la Slack sau la un CRM, partea care primește nu are nevoie deloc de o cheie Elido; are nevoie de secretul de semnare, ca să verifice payloadurile.
Vrei dovada înainte să conectezi ceva? Creează un workspace gratuit, generează o cheie viewer și una editor și încearcă același apel de scriere cu fiecare. 403-ul de pe cheia viewer îți spune mai mult decât orice tabel.
Cum sunt stocate cheile: pepper, hash și prefix
Un token arată ca elido_ urmat de 52 de caractere base32, generate din 32 de octeți aleatori. Îl vezi în întregime exact o dată, în răspunsul la apelul de creare. După aceea dispare definitiv de la noi.
Ce păstrăm este un HMAC-SHA256 al tokenului, cu cheia unui pepper de pe server, care trăiește în configurația aplicației, nu în baza de date. La fiecare cerere, tokenul Bearer primit (schema definită în RFC 6750, accesat 2026-10-24) este supus aceluiași hash și căutat după hash. Un dump furat al bazei de date este deci o listă de hashuri pe care nimeni nu le poate verifica fără pepper. Fără pepper, nu pornește: serviciul de producție refuză să pornească dacă nu are unul setat.
Pentru evidența ta, stocăm primele opt caractere de după elido_ ca prefix de afișare, iar pagina de chei API arată acel prefix lângă numele cheii, rol, data creării, expirare, ora ultimei utilizări și IP-ul ultimei utilizări, plus numărul total de cereri și cel al cererilor eșuate. Când o cheie apare undeva într-un jurnal, prefixul îți spune care este. Nimeni nu trebuie să vadă secretul complet.
Limite de rată, expirare și rotirea cheilor API
Fiecare cheie primește propriul token bucket, separat de limita pe workspace, astfel încât un flux scăpat de sub control să nu consume bugetul pentru tot restul. Un admin autentificat poate suprascrie rata unei singure chei de la 1 la 10.000 de cereri pe secundă și burst-ul de la 1 la 20.000, sau poate șterge suprascrierea ca să revină la valoarea implicită. Peste limită, cheia primește un 429 cu Retry-After: 1 și X-RateLimit-Scope: api_key, deci logica ta de reîncercare poate deosebi plafonul unei chei de cel al unui workspace. Ghidul despre limite de rată și idempotență arată cum faci corect backoff.
Expirarea este opțională și se stabilește la creare ca timestamp RFC 3339. Odată trecută, cheia pur și simplu încetează să se potrivească. Revocarea este un singur DELETE. Este și idempotentă.
Nu există un singur buton de "rotire" și nu îmi lipsește. Rotirea înseamnă trei pași:
- Creează o cheie nouă cu același rol și o expirare nouă.
- Pune-o în depozitul de credențiale al uneltei și confirmă că un apel reușește.
- Revocă cheia veche, apoi verifică în listă că ora ultimei ei utilizări nu se mai schimbă.
Fiecare pas ajunge în jurnalul de audit al workspace-ului: api_key.created cu numele și rolul, api_key.revoked și api_key.rate_limit_set pentru suprascrieri. Rulează și o scanare în fundal la fiecare cinci minute, care marchează orice cheie cu peste 1.000 de cereri dintre care mai mult de 30% au eșuat. Marcajul ajunge în jurnalul de audit și pe cheie. Fără revocare automată. Oprirea unei chei este o decizie umană, fiindcă un val de 404-uri e la fel de des un flux stricat ca un atacator.
Predarea cheilor API cu privilegiu minim către n8n, Make și Zapier
Platformele de automatizare sunt locul unde cheile merg să fie uitate. Stau într-un depozit de credențiale, se copiază în JSON-ul exportat al fluxurilor și îl supraviețuiesc pe cel care le-a configurat. Două obiceiuri ajută:
- O cheie per unealtă și per familie de fluxuri, numită după ea ("n8n: campaign sheets"). Revocarea ei strică exact un singur lucru, iar jurnalul de audit spune ce unealtă a făcut ce.
- Editor pentru tot ce creează linkuri, viewer pentru tot ce doar citește și o dată de expirare pe ambele.
Aceasta e lista; restul e judecată. Secrets Management Cheat Sheet de la OWASP (accesat 2026-10-24) e o lectură bună despre ținerea tokenurilor în afara jurnalelor și exporturilor, unde de obicei se scurg cheile de automatizare.
Pentru configurarea specifică fiecărei unelte, ghidul scurtătorului de URL pentru n8n pune cheia într-o credențială Header Auth, iar comparația Make vs IFTTT vs n8n vs Zapier arată unde o ține fiecare platformă. Zapier se conectează prin același token, conform ghidului de automatizare Zapier. Pentru CI sau orice trebuie să supraviețuiască plecării unei persoane, un utilizator-mașină se potrivește mai bine: un cont de serviciu cu propriul token, separat de cheia oricărui om. Ca și cheile, utilizatorii-mașină sunt creați de un admin autentificat, niciodată de un token.
Iar motivul pentru care o cheie nu trebuie să deschidă niciodată endpointuri admin este chiar această predare. Odată ce un token stă într-o unealtă terță, oricine are drept de editare pe fluxurile acelei unelte îl poate folosi. Te încrezi în toți cei din partea lor, nu doar în ai tăi.
Tokenurile pe scope sunt planificate, nu active
Rolurile sunt grosiere intenționat, iar uneori prea grosiere. O cheie editor care doar creează linkuri le poate și șterge, fiindcă ștergerea face parte din rolul editor. Remediul este tokenurile pe scope, precum links:write sau analytics:read, atașate direct unei chei, peste roluri.
Asta e în roadmap și nu a fost livrat. Astăzi, permisiunile unei chei sunt workspace-ul ei plus rolul, și nimic mai fin. Dacă ai nevoie de control mai strâns acum, cele două pârghii sunt un rol mai mic și o expirare scurtă, plus chei separate per sarcină, ca raza de impact a fiecăreia să fie mică. Quickstart-ul API și referința API și SDK arată modelul actual de chei în cod funcțional, iar echipele care vor și control la nivel de identitate pot citi despre SCIM și SSO pentru unelte de marketing.
Citește piatra de temelie: lista de verificare a securității scurtătoarelor de URL acoperă controalele din jurul cheii, de la scanarea URL-urilor la listele de IP permise.
Pe același subiect pe blog
- API de scurtător de URL: quickstart de 30 de minute în cinci limbaje
- Scurtător de URL pentru n8n: nodul HTTP Request sau nodul comunității Elido
- Automatizarea linkurilor scurte: Make vs IFTTT vs n8n vs Zapier
- Webhookuri pentru evenimente de link
- Scurtător de URL cu GitHub Actions: linkuri scurte din CI-ul tău
Întrebări frecvente
Ce sunt permisiunile cheilor API?
Sunt setul de acțiuni pe care o cheie are voie să le facă într-un API: ce resurse poate citi, ce poate modifica și în ce cont. În Elido, permisiunile unei chei provin din workspace-ul în care a fost emisă și din rolul ales la creare, deci aceeași cheie nu poate acționa în alt workspace sau peste acel rol.
Ce este privilegiul minim pentru chei API?
Înseamnă că fiecare cheie primește cel mai mic set de permisiuni de care are nevoie sarcina ei și nimic în plus. Un dashboard care doar citește numărul de clicuri primește o cheie viewer, un flux de lucru care creează linkuri primește o cheie editor, iar cheile admin se păstrează pentru sarcina rară de gestionare a webhookurilor, domeniilor sau membrilor. O cheie scursă poate atunci face doar ce făcea acea sarcină.
Care este diferența dintre scope-urile cheilor API și roluri?
Un scope este o permisiune îngustă, precum links:write, atașată direct unui token, iar un rol este un pachet denumit de permisiuni, precum editor. Rolurile sunt mai ușor de înțeles; scope-urile sunt mai fine. Cheile Elido folosesc astăzi roluri de workspace, iar tokenurile pe scope sunt planificate peste ele, dar nu sunt încă active.
Cât de des ar trebui rotite cheile API?
Recomandarea uzuală este la 30-90 de zile, plus imediat când pleacă cineva care a văzut cheia, când cheia apare într-un jurnal sau când traficul ei pare anormal. Stabilirea unei date de expirare la creare transformă acest program într-o oprire fermă, nu într-un memento de calendar pe care oamenii îl ignoră.
Poate o cheie API să acceseze endpointuri admin?
În Elido, nu. API-ul admin al platformei acceptă doar o sesiune interactivă, autentificată, și răspunde cu 403 unei chei API, indiferent de rolul persoanei care a creat-o. Setările de workspace care cer drepturi de admin rămân accesibile, dar doar printr-o cheie creată cu rolul admin sau owner.
Cum ar trebui stocate cheile API de partea furnizorului?
Niciodată în text clar. Furnizorul trebuie să stocheze un hash cu cheie al tokenului și să îți arate ulterior doar un prefix scurt, astfel încât o copie a bazei de date să nu poată fi folosită singură pentru a apela API-ul. Elido face hash fiecărui token cu HMAC-SHA256 și un pepper pe server și arată tokenul complet exact o singură dată.
Încearcă Elido
Lipește un URL, obții un link scurt funcțional
Fără înregistrare. Linkul este activ timp de 30 de zile. Înregistrează-te ca să-l păstrezi pentru totdeauna.
Fără înregistrare. Creează un cont gratuit pentru 50 linkuri pe lună.