Najbolji primjeri za sigurno pohranjivanje API ključeva

Slika Jose Fontano

U prošlosti sam vidio kako mnogi ljudi koriste Git spremišta za pohranu osjetljivih podataka vezanih uz njihove projekte.

U posljednje vrijeme vidim kako neki ljudi najavljuju da pohranjuju API ključeve u svoja privatna GitHub skladišta. Ovaj članak pišem zato što bi ljudi trebali razumjeti rizike pohrane API ključeva s vašim kodom.

Ovaj članak nije namijenjen trajnom rješenju problema s pohranjivanjem API ključeva. Umjesto toga, moja je vlastita analiza problema i moji prijedlozi kako to riješiti.

Dakle, koji je točno problem sa pohranjivanjem osjetljivih podataka u blizini vašeg koda u Git skladištu?

Zašto ne biste trebali pohraniti API ključeve u Git spremišta

Spremanje tipki API-ja ili bilo kojih drugih osjetljivih podataka u git spremištu je nešto što treba izbjeći po svaku cijenu. Čak i ako je spremište privatno, ne biste ga trebali smatrati sigurnim mjestom za pohranjivanje osjetljivih podataka.

Za početak pogledajmo zašto je dobra ideja pohraniti API ključeve u javna git spremišta.

Javnom spremištu gita po prirodi može pristupiti bilo tko.

Drugim riječima, svatko s internetskom vezom može pristupiti sadržaju javnog git spremišta. I ne samo to, već mogu i pregledati sav kôd unutar spremišta te ga možda čak i pokrenuti. Ako API ključ pohranite u javno spremište, objavljujete ga na otvorenom kako bi ga mogao vidjeti bilo tko.

Nedavna potraga client_secret na GitHubu otkrila je da postoji više od 30.000 počinjenja koja potencijalno otkrivaju ključ i tajnu API-ja. U nekim slučajevima samo kopirate i zalijepite kôd da biste odmah pristupili API-ju.

Taj problem postaje toliko važan da neke tvrtke ulažu u resurse kako bi bili sigurni da nema propuštenih ključeva i tajni API-ja.

Prošle godine Slack je počeo tražiti izložene tokene API-ja i proaktivno ih poništiti. Ova radnja sprječava zlonamjerni pristup Slack računima, ali ne može pronaći sve propuštene tokene.

Dakle, ovo se događa na javnim Git spremištima. Što je s privatnim? Zašto je to problem?

Privatna Git-ova spremišta na uslugama kao što su GitHub, GitLab i Bitbucket izložena su drugačijoj vrsti rizika. Kada integrirate aplikaciju treće strane s jednom od spomenutih servisa, možda ćete otvoriti svoja privatna spremišta tim trećim stranama. Te će aplikacije moći pristupiti vašim privatnim spremištima i čitati podatke sadržane u njima.

Iako to samo po sebi ne predstavlja rizik, zamislite hoće li jedna od tih aplikacija postati ranjiva za napadače. Dobivši neovlašteni pristup nekoj od tih aplikacija drugih proizvođača, napadači mogu dobiti pristup vašim osjetljivim podacima, uključujući API ključeve i tajne.

Pa gdje treba pohraniti API ključeve?

Postoji mnogo alternativa za sigurno pohranjivanje ključeva i tajni API-ja. Neki od njih omogućuju vam korištenje vašeg Git spremišta i šifriranje osjetljivih podataka. Ostali alati su sofisticiraniji i dešifriraju osjetljive podatke kao dio radnog tijeka implementacije. Pogledajmo neka od dostupnih rješenja.

git-daljinsko gcrypt

Prvo rješenje omogućuje vam šifriranje čitavog Git spremišta. git-remote-gcrypt to čini dodavanjem funkcionalnosti Git daljinskim pomagalima kako bi novi šifrirani transportni sloj postao dostupan. Korisnici moraju samo postaviti novi kriptirani daljinac i gurnuti kôd u njega.

Pročitajte ako tražite preciznije rješenje kojim ćete moći kriptirati pojedinačne datoteke.

git-tajna

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 koja koristi GNU Privacy Guard (GPG) za šifriranje i dešifriranje datoteka koje mogu sadržavati osjetljive podatke.

git šifrira

Drugo rješenje je git-crypt. Vrlo je sličan git-secret u načinu rada, ali ima nekoliko zanimljivih razlika.

Prvo što treba primijetiti kod git-crypta jest da je to binarni izvršni zapis a ne skripta ljuske, kao što je git-secret. Biti binarna izvršna datoteka znači da prvo morate je sastaviti ili trebate pronaći binarnu distribuciju za vaš stroj.

Ako koristite Mac imate sreće, jer HomeBrew nudi paket za pripremu za git-kriptovalute. Sve što trebate je pokrenuti brew instalirati git-crypt na terminal.

Crna kutija

BlackBox je alat kreiran od strane Stack Overflow. Ovo je tvrtka koja stoji iza popularnih Q&A zajednica, poput samog preljeva snopa, pogreške na poslužitelju i super korisnika. BlackBox je robustan alat jer radi s Gitom kao i drugim sustavima za upravljanje verzijama poput Mercurial i Subversion.

Također podržava šifriranje malih niza i ne samo cijelih datoteka. To radi kada radite s Puppet i koristi Puppet-ovu Hieru, alat za pretraživanje ključa i vrijednosti za konfiguracijske podatke.

Zahvaljujući mogućnosti šifriranja i dešifriranja pojedinih nizova, BlackBox je izvrsno rješenje za osiguravanje API ključeva i tajni.

Konfiguracija Heroku i Konfiguriranje Vars

Ako radite s Herokuom, ne biste trebali pohraniti osjetljive podatke poput API ključeva i tajni u svoja Git spremišta. Heroku nudi rješenje koje vam omogućuje postavljanje konfiguracijskih varijabli.

Vaša aplikacija tada može pristupiti sadržaju tih konfiguracijskih varijabli tijekom vremena izvođenja pristupom odgovarajućim varijablama okruženja. Iako vrijednosti nisu šifrirane, ovo rješenje omogućuje vam da izbjegavate korištenje vašeg Git spremišta za pohranu API ključeva.

Dokku, Open Source rješenje poput Herokua, nudi iste mogućnosti.

Docker tajne

Na kraju spektra mogućih rješenja nalaze se Dockerove tajne. Ovo je rješenje uveo Docker u veljači 2017. Od tada je stekao popularnost.

Tajne doktora omogućuju vam definiranje šifriranih varijabli i stavlja ih na raspolaganje određenim servisima za vrijeme izvođenja. Tajne su šifrirane i tijekom prijevoza i u mirovanju.

Ovaj pristup čini Docker tajne savršenim rješenjem za pohranu i korištenje API ključeva i tajni na siguran i šifriran način.

Sažetak

Do sad biste trebali biti svjesni opasnosti od pohranjivanja osjetljivih informacija poput API ključeva i tajni na javnim i privatnim Git spremištima.

Razumijevanje potencijalnih načina na koji mogu biti izloženi vaši spremnici je ključno za procjenu i ublažavanje rizika povezanih s propuštanjem podataka.

Ovaj članak također predlaže nekoliko različitih rješenja koja vam omogućuju šifriranje ključeva i tajni API-ja kako biste mogli sigurno koristiti spremišta koda.

Sigurna sam da postoji više rješenja koja vam mogu pomoći da postignete iste rezultate.