
U prošlosti sam vidio da mnogi ljudi koriste Git spremišta za pohranu osjetljivih podataka povezanih s njihovim projektima.
U posljednje vrijeme vidim kako neki ljudi najavljuju da API ključeve spremaju u svoja privatna GitHub spremišta. Pišem ovaj članak jer bi ljudi trebali razumjeti rizike spremanja API ključeva s vašim kodom.
Ovaj članak nije namijenjen trajnom rješenju problema koje biste mogli imati kod spremanja API ključeva. Umjesto toga, to je moja vlastita analiza problema i moji prijedlozi kako to riješiti.
Dakle, u čemu je točno problem s pohranjivanjem osjetljivih podataka u blizini vašeg koda na Git spremište?
Zašto ne biste smjeli pohranjivati API ključeve u Git spremišta
Pohranjivanje API ključeva ili bilo kojih drugih osjetljivih podataka na git
spremište treba izbjegavati pod svaku cijenu. Čak i ako je spremište privatno, ne biste ga trebali smatrati sigurnim mjestom za pohranu osjetljivih podataka.
Započnimo s proučavanjem zašto je loša ideja pohranjivati API ključeve u javnagit
spremišta.
Po prirodi javnom git
spremištu može pristupiti svatko.
Drugim riječima, svatko tko ima internetsku vezu može pristupiti sadržaju javnog git
spremišta. I ne samo to, oni također mogu pregledavati sav kod unutar spremišta i možda ga čak i pokrenuti. Ako API ključ pohranite u javno spremište, objavljujete na otvorenom tako da ga svatko može vidjeti.
Nedavna potraga za client_secret na GitHub-u otkrila je da postoji više od 30 000 obveza koje potencijalno izlažu API ključ i tajnu. U nekim slučajevima kôd kopirate i zalijepite samo da biste odmah pristupili API-ju.
Ovaj problem postaje toliko važan da neke tvrtke ulažu u resurse kako bi bile sigurne da nema procurjelih API ključeva i tajni.
Prošle je godine Slack počeo pretraživati izložene API tokene i proaktivno ih onesposobljavati. Ova radnja sprječava zlonamjerni pristup Slackovim računima, ali nikako ne može pronaći sve procurile tokene.
Dakle, ovo se događa na javnim Git repozitorijima. Što je s privatnim ? Zašto je to problem?
Privatna Git spremišta smještena na uslugama kao što su GitHub, GitLab i Bitbucket izložena su različitoj vrsti rizika. Kada integrirate program treće strane s jednom od spomenutih usluga, možda otvarate svoja privatna spremišta tim trećim stranama. Te će aplikacije moći pristupiti vašim privatnim spremištima i pročitati sadržane podatke.
Iako samo to ne stvara rizik, zamislite ako jedna od tih aplikacija postane osjetljiva na napadače. Dobivanjem neovlaštenog pristupa jednoj od tih aplikacija treće strane, napadači mogu dobiti pristup vašim osjetljivim podacima, uključujući API ključeve i tajne.
Pa, gdje treba pohraniti API ključeve?
Postoje mnoge alternative za sigurno spremanje API ključeva i tajni. Neki od njih omogućuju vam upotrebu vašeg Git spremišta i šifriranje osjetljivih podataka. Ostali su alati sofisticiraniji i dešifriraju osjetljive podatke kao dio tijeka rada za postavljanje. Pogledajmo neka od dostupnih rješenja.
git-remote-gcrypt
Prvo rješenje omogućuje vam šifriranje cijelog Git spremišta. git-remote-gcrypt to čini dodavanjem funkcionalnosti Git udaljenim pomagačima tako da novi šifrirani transportni sloj postane dostupan. Korisnici moraju samo postaviti novi šifrirani daljinski upravljač i u njega ugurati kôd.
Čitajte dalje ako tražite preciznije rješenje koje vam omogućuje šifriranje pojedinačnih datoteka.
git-secret
git-secret
je alat koji radi na vašem lokalnom stroju i šifrira određene datoteke prije nego što ih gurnete u svoje spremište. Iza kulisa git-secret
je skripta ljuske koja koristi GNU Privacy Guard (GPG) za šifriranje i dešifriranje datoteka koje mogu sadržavati osjetljive podatke.
git-crypt
Drugo rješenje je git-crypt
. Po svom načinu rada vrlo je sličan git-secret, ali ima nekoliko zanimljivih razlika.
Prvo što treba primijetiti git-crypt
je da je to binarna izvršna datoteka, a ne skripta ljuske, kao što je git-secret. Biti binarna izvršna datoteka znači da je trebate prvo upotrijebiti da biste je koristili ili morate pronaći binarnu distribuciju za svoj stroj.
Ako koristite Mac, imate sreće jer HomeBrew nudi git-crypt
paket spreman za instalaciju. Sve što morate učiniti je pokrenuti instalaciju piva git-crypt
na terminalu.
Crna kutija
BlackBox je alat koji je stvorio Stack Overflow. Ovo je tvrtka koja stoji iza popularnih zajednica pitanja i odgovora kao što su Stack Overflow, Server Fault i Super User. BlackBox je robustan alat jer radi s Gitom, kao i s drugim sustavima za kontrolu verzija poput Mercuriala i Subverzije.
Također podržava šifriranje malih nizova, a ne samo cijelih datoteka. To čini kada radi s Lutkom i koristi Lutkovu Hieru, alat za pretraživanje ključ-vrijednost za podatke o konfiguraciji.
Imajući mogućnost šifriranja i dešifriranja pojedinačnih nizova čini BlackBox izvrsnim rješenjem za zaštitu API ključeva i tajni.
Heroku konfiguracija i konfiguracija Vars
Ako radite s Herokuom, ne biste trebali pohranjivati nikakve osjetljive podatke poput API ključeva i tajni na svoja Git spremišta. Heroku nudi rješenje koje vam omogućuje postavljanje konfiguracijskih varijabli.
Tada vaša aplikacija može pristupiti sadržaju tih konfiguracijskih varijabli tijekom izvođenja pristupa odgovarajućim varijablama okoline. Iako vrijednosti nisu šifrirane, ovo rješenje omogućuje vam izbjegavanje upotrebe vašeg Git spremišta za pohranu API ključeva.
Dokku, rješenje otvorenog koda poput Herokua, nudi iste mogućnosti.
Docker tajne
Na kraju spektra mogućih rješenja nalaze se Dockerove tajne. Ovo rješenje Docker je predstavio u veljači 2017. Od tada je steklo popularnost.
Docker tajne omogućuju vam definiranje šifriranih varijabli i stavljaju ih na raspolaganje određenim službama tijekom izvođenja. Tajne su šifrirane i za vrijeme tranzita i za vrijeme mirovanja.
Ovaj pristup Docker tajne čini savršenim rješenjem za pohranu i upotrebu API ključeva i tajni na siguran i šifriran način.
Sažetak
Do sada biste trebali biti svjesni opasnosti od pohrane osjetljivih podataka, poput API ključeva i tajni, na javna i privatna Git spremišta.
Razumijevanje potencijalnih načina na koje bi vaša spremišta mogla biti izložena ključno je za procjenu i ublažavanje rizika povezanih s curenjem informacija.
Ovaj članak također predlaže nekoliko različitih rješenja koja vam omogućuju šifriranje API ključeva i tajni kako biste mogli sigurno koristiti svoja spremišta koda.
Siguran sam da postoji još rješenja koja vam mogu pomoći u postizanju istih rezultata.