de Bruno Pedro

Cele mai bune practici pentru stocarea în siguranță a cheilor API

Cele mai bune practici pentru stocarea in siguranta a cheilor
Imagine de Jose Fontano

În trecut, am văzut că mulți oameni folosesc depozite Git pentru a stoca informații sensibile legate de proiectele lor.

În ultima vreme, am văzut unii oameni care anunță că stochează chei API în depozitele lor private GitHub. Scriu acest articol, deoarece oamenii ar trebui să înțeleagă riscurile stocării cheilor API cu codul dvs.

Acest articol nu este destinat să fie o soluție permanentă la problemele pe care le-ați putea avea cu stocarea cheilor API. În schimb, este propria mea analiză a problemei și sugestiile mele despre cum să o rezolv.

Deci, care este exact problema cu stocarea informațiilor sensibile lângă codul dvs. într-un depozit Git?

De ce nu ar trebui să stocați cheile API în depozitele Git

Stocarea cheilor API sau a oricărei alte informații sensibile pe un git depozitul este ceva de evitat cu orice preț. Chiar dacă depozitul este privat, nu ar trebui să-l vedeți ca pe un loc sigur pentru stocarea informațiilor sensibile.

Să începem prin a analiza de ce este o idee proastă să stocați cheile API pe public git depozite.

Prin natură, un public git depozitul poate fi accesat de oricine.

Cu alte cuvinte, oricine are o conexiune la Internet poate accesa conținutul unui public git repertoriu. Nu numai asta, dar pot răsfoi tot codul din depozit și, eventual, chiar îl pot rula. Dacă stocați o cheie API într-un depozit public, publicați în aer liber, astfel încât oricine să o poată vedea.

O căutare recentă pentru client_secret pe GitHub a dezvăluit că există mai mult de 30.000 de confirmări care pot expune o cheie API și un secret. În unele cazuri, copiați și lipiți codul doar pentru a accesa imediat API-ul.

Această problemă devine atât de importantă, încât unele companii investesc în resurse pentru a se asigura că nu există scurgeri de chei și secrete API.

Anul trecut, Slack a început să caute jetoane API expuse și să le invalideze proactiv. Această acțiune previne accesul rău intenționat la conturile lui Slack, dar nu poate găsi toate jetoanele scurse.

Deci, acest lucru se întâmplă în depozitele publice Git. Dar despre privat unii? De ce este o problemă?

Depozitele private Git găzduite pe servicii precum GitHub, GitLab și Bitbucket sunt expuse unui alt tip de risc. Când integrați o aplicație terță parte cu unul dintre serviciile menționate, este posibil să vă deschideți depozitele private către aceste terțe părți. Aceste aplicații vor putea accesa depozitele dvs. private și pot citi informațiile conținute.

Deși numai asta nu creează un risc, imaginați-vă dacă una dintre aceste aplicații devine vulnerabilă la atacatori. Obținând acces neautorizat la una dintre acele aplicații terță parte, atacatorii ar putea obține acces la datele dvs. sensibile, inclusiv cheile API și secretele.

Deci, unde ar trebui stocate cheile API?

Există multe alternative pentru stocarea în siguranță a cheilor și secretelor API. Unele dintre ele vă permit să utilizați depozitul Git și să criptați datele sensibile. Alte instrumente sunt mai sofisticate și decriptează informații sensibile ca parte a unui flux de lucru de implementare. Să analizăm câteva dintre soluțiile disponibile.

git-remote-gcrypt

Prima soluție vă permite să criptați un întreg depozit Git. git-remote-gcrypt face asta prin adăugarea de funcționalități la asistenții la distanță Git, astfel încât să devină disponibil un nou strat de transport criptat. Utilizatorii trebuie doar să configureze o nouă telecomandă criptată și să introducă codul în ea.

Citiți mai departe dacă căutați o soluție mai fină, care vă permite să criptați fișiere individuale.

git-secret

git-secret este un instrument care funcționează pe mașina dvs. locală și criptează anumite fișiere înainte de a le împinge în depozitul dvs. În spatele scenelor, git-secret este un script shell care folosește GNU Privacy Guard (GPG) pentru a cripta și decripta fișiere care ar putea avea informații sensibile.

git-crypt

O altă soluție este git-crypt. Este foarte asemănător cu git-secret în modul în care funcționează, dar are unele diferențe interesante.

Primul lucru de care trebuie remarcat git-crypt este că este un executabil binar și nu un script shell, așa cum este git-secret. Fiind un executabil binar înseamnă că pentru a-l utiliza trebuie mai întâi să îl compilați sau trebuie să găsiți o distribuție binară pentru mașina dvs.

Dacă folosești un Mac, ai noroc pentru că HomeBrew oferă o git-crypt pachet gata de instalare. Tot ce trebuie să faceți este să rulați instalarea brew git-crypt pe un terminal.

Cutie neagră

Cutie neagră este un instrument creat de Stive Overflow. Aceasta este compania din spatele comunităților populare de întrebări și răspunsuri, cum ar fi Stack Overflow, Server Fault și Super User. BlackBerry este un instrument robust, deoarece funcționează cu Git, precum și cu alte sisteme de control al versiunilor precum Mercurial și Subversion.

De asemenea, acceptă criptarea șirurilor mici și nu numai a fișierelor întregi. Face asta când lucrezi cu Marionetă și folosește Puppet’s Hiera, un instrument de căutare valoare-cheie pentru datele de configurare.

Abilitatea de a cripta și decripta șiruri individuale face ca BlackBerry să fie o soluție excelentă pentru securizarea cheilor și secretelor API.

Configurare Heroku și configurare Vars

Dacă lucrezi cu Heroku nu ar trebui să stocați informații sensibile, cum ar fi cheile API și secretele, în depozitele dvs. Git. Heroku oferă o soluție care vă permite setați variabilele de configurare.

Aplicația dvs. poate accesa apoi conținutul acelor variabile de configurare în timpul rulării accesând variabilele de mediu corespunzătoare. Chiar dacă valorile nu sunt criptate, această soluție vă permite să evitați utilizarea depozitului dvs. Git pentru stocarea cheilor API.

Dokku, o soluție Open Source precum Heroku, oferă aceleași capacități.

Secretele lui Docker

La sfârșitul spectrului de soluții posibile este Secretele lui Docker. Această soluție a fost introdus de Docker în februarie 2017. De atunci a câștigat popularitate.

Secretele Docker vă permit să definiți variabile criptate și să le puneți la dispoziția anumitor servicii în timpul rulării. Secretele sunt criptate atât în ​​timpul tranzitului, cât și în repaus.

Această abordare face din secretele Docker soluția perfectă pentru stocarea și utilizarea cheilor și secretelor API într-un mod sigur și criptat.

rezumat

Până acum ar trebui să fiți conștienți de pericolele stocării informațiilor sensibile, cum ar fi cheile API și secretele în depozitele publice și private Git.

Înțelegerea modalităților potențiale în care ar putea fi expuse depozitele dvs. este esențială pentru evaluarea și atenuarea riscurilor asociate scurgerilor de informații.

Acest articol propune, de asemenea, câteva soluții diferite care vă permit să criptați cheile și secretele API, astfel încât să puteți utiliza în siguranță depozitele de coduri.

Sunt sigur că există mai multe soluții care vă pot ajuta să obțineți aceleași rezultate.