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

Poza de Jose Fontano

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

În ultima vreme, am văzut că unii anunță că stochează chei API în depozitele 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ăm.

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 într-un depozit git este ceva care trebuie evitat cu orice preț. Chiar dacă depozitul este privat, nu ar trebui să-l vedeți ca un loc sigur pentru a stoca informații sensibile.

Să începem să analizăm de ce este o idee proastă să stochezi chei API în depozitele publice de tip GIT.

Din fire, oricine poate fi accesat un depozit public de git.

Cu alte cuvinte, oricine are conexiune la Internet poate accesa conținutul unui depozit public de git. Nu numai asta, dar pot parcurge tot codul din interiorul depozitului și, eventual, chiar să-l ruleze. Dacă stocați o cheie API într-un depozit public, publicați în mod deschis pentru ca 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 angajamente care pot expune o cheie API și un secret. În unele cazuri, copiați și lipiți codul 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ă chei și secrete API pierdute.

Anul trecut, Slack a început să caute token-uri API expuse și să le invalideze proactiv. Această acțiune împiedică accesul rău intenționat la conturile lui Slack, dar nu poate găsi toate elementele de scurgere scurse.

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

Depozitele private Git găzduite pe servicii precum GitHub, GitLab și Bitbucket sunt expuse unui tip de risc diferit. Când integrați o aplicație terță parte cu unul dintre serviciile menționate, este posibil să deschideți depozitele private către terții. Aceste aplicații vor putea să vă acceseze depozitele private și să citească informațiile conținute în acesta.

Cu toate că asta nu creează un risc, imaginați-vă dacă una dintre aceste aplicații devine vulnerabilă atacatorilor. Obținând acces neautorizat la una dintre acele aplicații terțe, atacatorii pot avea 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ă folosiți depozitul Git și să criptați datele sensibile. Alte instrumente sunt mai sofisticate și decriptați informațiile sensibile ca parte a unui flux de lucru de implementare. Să ne uităm la unele 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 funcționalității asistenților de la distanță Git, astfel încât un nou strat de transport criptat să fie disponibil. Utilizatorii trebuie doar să configureze o nouă telecomandă criptată și să împingă codul push.

Citiți mai departe dacă sunteți în căutarea unei soluții mai fine, care vă permite să criptați fișierele individuale.

git-secrete

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

git-criptă

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 remarcat despre git-crypt este că este un script executabil binar și nu un script shell, așa cum este git-secret. A fi un executabil binar înseamnă că, pentru a-l utiliza, trebuie să-l compilați mai întâi sau trebuie să găsiți o distribuție binară pentru mașina dvs.

Dacă utilizați un Mac, aveți noroc, deoarece HomeBrew oferă un pachet git-crypt gata de instalare. Tot ce trebuie să faceți este să executați brew install git-crypt pe un terminal.

Cutie neagră

BlackBox este un instrument creat de Stack Overflow. Aceasta este compania din spatele comunităților Q&A populare, cum ar fi Stack Overflow în sine, Server Fault și Super User. BlackBox este un instrument robust deoarece funcționează cu Git, precum și cu alte sisteme de control de versiuni, cum ar fi Mercurial și Subversion.

De asemenea, acceptă criptarea șirurilor mici și nu numai a fișierelor întregi. Face acest lucru atunci când lucrezi cu Puppet și folosește Hiera de Puppet, un instrument de căutare a valorilor cheie pentru datele de configurare.

Având capacitatea de a cripta și decripta șiruri individuale face din BlackBox o soluție excelentă pentru securizarea cheilor și secretelor API.

Configurare Heroku și Vars Config

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

Aplicația dvs. poate apoi accesa 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 Git pentru stocarea cheilor API.

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

Secretele Docker-ului

La sfârșitul spectrului de soluții posibile se află 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 le face disponibile pentru anumite servicii în timpul rulării. Secretele sunt criptate atât în ​​timpul tranzitului, cât și în repaus.

Această abordare face ca secretele Docker să fie 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 pe depozitele Git publice și private.

Î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 vă 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 depozitele de cod în siguranță.

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