Tratează cheile API ca secrete: scope limitat, rotație și revocare

Subiect din roadmap-ul Bune practici: securitatea API-urilor · parte din „Autentificare”

Cheile API sunt echivalentele digitale ale cheilor de la caseta forte a afacerii tale. Dacă le tratezi ca pe simple constante de configurare vizibile în cod, orice vulnerabilitate minoră poate duce la acces neautorizat, costuri financiare masive sau furt de date sensibile. Limitarea scope-ului (permisiunilor) asigură că chiar dacă o cheie este compromisă, damage-ul este minimizat, iar rotația regulată reduce fereastra de timp în care un atacator poate exploata credentialele furate. Ignorarea acestor principii transformă fiecare linie de cod expusă public într-o poartă deschisă pentru atacatori.

Cum o aplici

  1. Stochează-le în medii sigure: Niciodată nu hardcodifica cheile. Folosește variabile de mediu (process.env, .env fișiere ignorate de Git) sau servicii dedicate de management al secretelor (ex: AWS Secrets Manager, HashiCorp Vault).
  2. Aplică principiul dreptului minim: Generează chei cu permisiuni strict necesare. Dacă aplicația ta citește doar date, nu îi oferi chei cu drepturi de scriere sau ștergere.
  3. Implementează rotația automată: Configurează procese cron pentru a genera periodic noi chei și a le înlocui pe cele vechi.
  4. Revocă imediat la suspiciune: Ai un protocol clar pentru invalidarea rapidă a unei chei dacă detectezi utilizare neobișnuită sau expunere accidentală.

Exemplu

Varianta greșită (Hardcoded & Overprivileged):

# Nu face asta! Cheia este vizibilă în repository.
API_KEY = "sk_live_abc123supersecretkey" 
# Permite toate operațiile, inclusiv ștergerea bazei de date.
permissions = ["read", "write", "delete"]

Varianta corectă (Env Vars & Scoped):

import os

# Cheia încărcată din mediul securizat
API_KEY = os.getenv("API_SECRET_KEY")

# Doar permisiunea strict necesară
permissions = ["read"]

# Verificare simplă a existenței cheii
if not API_KEY:
    raise ValueError("API_KEY must be set in environment variables")

Cum verifici

  • Scanere de cod: Utilizează instrumente precum git-secrets, trufflehog sau detect-secrets în pipeline-ul CI/CD pentru a bloca commit-urile care conțin pattern-uri similare cu chei API.
  • Audit de permisiuni: Revizuiește lunar taboul de control al accesului (IAM) pentru a identifica chei cu privilegii excesive care nu mai sunt necesare.
  • Monitorizare anomalii: Setează alerte pentru volume neobișnuite de apeluri API sau acces din locații IP necunoscute, indicând posibilă utilizare a unei chei compromise.

Greșeli frecvente

  1. Commitarea fișierelor .env: Mulți dezvoltatori adaugă accidental fișierele care conțin secretele în repository-ul public. Asigură-te că .env este în .gitignore.
  2. Reutilizarea aceleiași chei master: Folosirea unei singure chei cu drepturi totale pentru toate serviciile amplifică riscul. Creează chei separate per serviciu sau modul.
  3. Neglijarea revocării post-mortem: După un incident de securitate, uitarea de a revoca toate cheile generate anterior lasă ușile deschise pentru atacuri viitoare.

Resurse gratuite

Alte subiecte din „Autentificare”