Osvedčené postupy na bezpečné ukladanie kľúčov API

Obrázok Jose Fontano

V minulosti som videl veľa ľudí používať úložiská Git na ukladanie citlivých informácií týkajúcich sa ich projektov.

V poslednej dobe som videl, ako niektorí ľudia oznamujú, že ukladajú kľúče API do svojich súkromných úložísk GitHub. Píšem tento článok, pretože ľudia by mali pochopiť riziká ukladania kľúčov API spolu s vaším kódom.

Tento článok nie je určený na trvalé riešenie problémov, ktoré sa môžu vyskytnúť pri ukladaní kľúčov API. Namiesto toho je to moja vlastná analýza problému a moje návrhy na jeho vyriešenie.

Aký je teda problém s ukladaním citlivých informácií v blízkosti vášho kódu do úložiska Git?

Prečo by ste nemali ukladať kľúče API do úložísk Git

Ukladanie kľúčov API alebo akýchkoľvek iných citlivých informácií do úložiska git sa musí za každú cenu vyhnúť. Aj keď je úložisko súkromné, nemali by ste ho považovať za bezpečné miesto na ukladanie citlivých informácií.

Začnime tým, prečo nie je dobré ukladať kľúče API do verejných úložísk git.

K verejnému archívu gitov môže mať prirodzene prístup ktokoľvek.

Inými slovami, ktokoľvek s internetovým pripojením má prístup k obsahu verejného úložiska git. Nielen to, ale môžu tiež prehľadávať celý kód v úložisku a prípadne ho dokonca spúšťať. Ak uložíte kľúč API vo verejnom úložisku, publikujete ho otvorene, aby ho mohol vidieť každý.

Nedávne vyhľadávanie client_secret na GitHub odhalilo, že existuje viac ako jeden 30 000 potvrdení, ktoré potenciálne môžu odhaliť kľúč a tajomstvo API. V niektorých prípadoch skopírujete a prilepíte kód a okamžite získate prístup k API.

Tento problém sa stáva tak dôležitým, že niektoré spoločnosti investujú do zdrojov, aby sa ubezpečili, že nedochádza k úniku kľúčov a tajomstiev rozhrania API.

V minulom roku Slack začal vyhľadávať odhalené tokeny rozhrania API a aktívne ich znehodnocovať. Táto akcia bráni škodlivému prístupu k účtom Slack, ale nemôže nájsť všetky únikové tokeny.

To sa deje na verejných úložiskách Git. A čo súkromné? Prečo je to problém?

Súkromné ​​archívy Git hostované na službách, ako sú GitHub, GitLab a Bitbucket, sú vystavené rôznemu druhu rizika. Keď integrujete aplikáciu tretej strany s jednou z uvedených služieb, môžete otvoriť svoje súkromné ​​archívy týmto tretím stranám. Tieto aplikácie budú mať prístup k vašim súkromným úložiskám a budú si môcť prečítať informácie obsiahnuté v nich.

Aj keď to samo osebe nepredstavuje riziko, predstavte si, že jedna z týchto aplikácií sa stane zraniteľnou voči útočníkom. Útočníci môžu získať neoprávnený prístup k niektorej z týchto aplikácií tretích strán a získať tak prístup k vašim citlivým údajom vrátane kľúčov API a tajomstiev API.

Kde by sa teda mali ukladať kľúče API?

Existuje veľa alternatív na bezpečné ukladanie kľúčov API a tajomstiev. Niektoré z nich vám umožňujú používať úložisko Git a šifrovať citlivé údaje. Ostatné nástroje sú sofistikovanejšie a dešifrujú citlivé informácie ako súčasť pracovného postupu nasadenia. Pozrime sa na niektoré z dostupných riešení.

git-remote-gcrypt

Prvé riešenie umožňuje šifrovať celé úložisko Git. git-remote-gcrypt to robí pridaním funkcií do vzdialených pomocníkov Git, aby bola dostupná nová šifrovaná transportná vrstva. Používatelia musia iba nastaviť nový šifrovaný diaľkový ovládač a do neho vložiť kód.

Čítajte ďalej, ak hľadáte jemnejšie riešenie, ktoré vám umožní šifrovať jednotlivé súbory.

git-tajomstvo

git-secret je nástroj, ktorý funguje na vašom lokálnom počítači a šifruje konkrétne súbory skôr, ako ich vložíte do úložiska. V zákulisí je git-secret skript shellu, ktorý používa šifrovanie GNU Privacy Guard (GPG) na šifrovanie a dešifrovanie súborov, ktoré môžu obsahovať citlivé informácie.

git-crypt

Ďalším riešením je git-krypta. Spôsob, akým funguje, je veľmi podobný git-secret, má však niekoľko zaujímavých rozdielov.

Prvá vec, ktorú si treba všimnúť o git-krypte, je to, že ide o binárny spustiteľný súbor a nie o shell skript, pretože je to git-secret. Byť binárny spustiteľný súbor znamená, že ak ho chcete používať, musíte ho najprv skompilovať, alebo musíte nájsť binárnu distribúciu pre svoj počítač.

Ak používate počítač Mac, máte šťastie, pretože systém HomeBrew ponúka balík pripravený na inštaláciu s git-kryptami. Všetko, čo musíte urobiť, je spustiť inštaláciu git-krypty varením na termináli.

Čierna krabica

BlackBox je nástroj vytvorený Stack Overflow. Toto je spoločnosť, ktorá stojí za populárnymi komunitami s otázkami a odpoveďami, ako je napríklad Stack Overflow, Server Fault a Super User. BlackBox je robustný nástroj, ktorý spolupracuje s Git, ako aj s inými systémami na správu verzií, ako sú Mercurial a Subversion.

Podporuje tiež šifrovanie malých reťazcov a nielen celých súborov. Robí to pri práci s Puppet a používa Puppet's Hiera, vyhľadávací nástroj s kľúčovou hodnotou pre konfiguračné údaje.

Vďaka schopnosti šifrovať a dešifrovať jednotlivé reťazce je BlackBox vynikajúcim riešením pre zabezpečenie kľúčov API a tajomstiev.

Heroku Configuration and Config Vars

Ak pracujete s Heroku, nemali by ste do úložísk Git ukladať žiadne citlivé informácie, ako sú kľúče API a tajomstvá. Heroku ponúka riešenie, ktoré vám umožní nastaviť konfiguračné premenné.

Vaša aplikácia potom môže počas vykonávania prístupu k obsahu týchto konfiguračných premenných získať prístup k zodpovedajúcim premenným prostredia. Aj keď hodnoty nie sú šifrované, toto riešenie vám umožňuje vyhnúť sa použitiu úložiska Git na ukladanie kľúčov API.

Dokku, open source riešenie ako Heroku, ponúka rovnaké možnosti.

Dockerove tajomstvá

Na konci spektra možných riešení sú Dockerove tajomstvá. Toto riešenie predstavila spoločnosť Docker vo februári 2017. Od tej doby si získava na popularite.

Tajomstvá doku vám umožňujú definovať šifrované premenné a sprístupniť ich konkrétnym službám počas behu programu. Tajomstvá sú šifrované počas prepravy aj v pokoji.

Tento prístup robí z Dockerovho tajomstva perfektné riešenie na bezpečné a šifrované šifrovanie a používanie kľúčov a tajomstiev API.

zhrnutie

Dovtedy by ste si mali byť vedomí nebezpečenstva ukladania citlivých informácií, ako sú kľúče API a tajomstvá, na verejných a súkromných úložiskách Git.

Pochopenie potenciálnych spôsobov, ktorým môžu byť vaše úložiská vystavené, je kľúčové pre posúdenie a zmiernenie rizík spojených s únikom informácií.

Tento článok tiež navrhuje niekoľko rôznych riešení, ktoré vám umožňujú šifrovať kľúče a tajomstvá API, aby ste mohli bezpečne používať úložiská kódov.

Určite existuje viac riešení, ktoré vám môžu pomôcť dosiahnuť rovnaké výsledky.