Vault je open-source projekt společnosti HashiCorp, která se zabývá primárně systémy pro automatizaci při vývoji a nasazování softwaru (určitě znáte třeba Vagrant nebo Consul). Vzhledem k zaměření HashiCorpu je tak logické vytvořit nástroj, který umožní jednotný přístup k údajům, které by měly být „běžnému smrtelníkovi“ nedostupné.
Poznámka šéfredaktora: Pod názvem Vault najdete další dva softwary, konkrétně systém Vault pro správu verzí a systém správy dokumentů Autodesk Vault. S Vaultem od fimy HashiCorp nemají nic společného.
Vault nabízí přesně toto – jednotný přístup k citlivým údajům. Data jsou šifrována silnou šifrou už v paměti a na disk se dostávají až (a jedině v) zašifrované podobě. Navíc je možné data ukládat i na jiné druhy úložišť nebo třeba i do zmíněného Consulu. Vault ani nemusí data přimo ukládat, může sloužit jen jako prostředník pro šifrování a dešifrování dat v jiných úložištích, takže není potřeba programovat vlastní řešení. HashiCorp pak dále nabízí možnost používat Vault v cloudu na svých serverech.
Kdo využije Vault?
Na tuto otázku není možné snadno odpovědět, záleží na konkrétních požadavcích. Obecně se dá říci, že Vault se hodí všude, kde je potřeba ukládat bezpečně citlivá data a přístup k těmto datům řídit a sledovat.
Příklad z firemního prostředí – každý zaměstnanec má vlastní přihlašovací údaje do systému. Ty je možné ve Vaultu bezpečně ukládat nebo s jeho pomocí šifrovat a ukládat do databáze.
Instalace Vaultu
Instalace je velmi jednoduchá, stačí stáhnout patřičný soubor na webu vaultproject.io. Nejsou dostupné balíčky pro jednotlivé distribuce, pouze jeden společný ZIP archiv pro danou architekturu, přičemž podporovány jsou x86, x86_64 a ARM procesory.
Poznámka autora: Instalaci jsem prováděl na stroji s Ubuntu, ale stejně probíhá i na jiných distribucích. Uživatelé Windows, OS X a BSD budou postupovat lehce odlišně.
Archiv obsahuje binární soubor vault
. Tento soubor lze po extrakci spustit z terminálu, osobně ale doporučuji jej přesunout do adresáře /usr/sbin
(nebo spíše /usr/local/sbin
a ohlídat si nastavení proměnné PATH
– je to čistší řešení, konformní s FHS; pozn. šéfredaktora), aby byl příkaz vault
dostupný odkudkoli. Instalace je tímto dokončena.
Základní práce s Vaultem
Vault staví na klient-server architektuře, proto musíme server spustit. To provedeme pomocí příkazu vault server
v libovolném oknu terminálu. Pro testování na „pískovišti“ je doporučeno použít přepínač -dev
, kvůli výpisu do terminálu. Vault běží na popředí, takže terminál nebude možno využívat. To se ale hodí kvůli dalším nastavením.
Ve výpisu serveru se skrývá pro nás podstatná adresa
Pro práci s Vaultem si otevřeme druhé okno terminálu, ve kterém spustíme příkaz export VAULT_ADDR=adresa
, přičemž právě adresa je uvedena ve výpisu v prvním okně terminálu se zbytkem příkazu. Ve druhém okně dále spustíme příkaz vault status
, který nás informuje o stavu serveru. Z výpisu si pod exportem zkopírujme a uložme stranou unseal key
. Protože jen testujeme, není nutné řešit bezpečnost, postačí textový soubor na ploše nebo kdekoliv jinde.
Vše jsme provedli správně, server běží
Pokud vše funguje, budeme nadále pracovat jen s druhým oknem terminálu.
Ukrýváme tajemství
V tuto chvíli nebudeme řešit zabezpečení a zkusíme si jednoduše něco uložit do Vaultu. K tomu je určen příkaz vault write
, kterým je možno zapisovat i konfiguraci. Pro uložení libovolného tajemství použijeme příkaz:
vault write secret/nazev_klice value="Ultra tajná informace"
O našem malém úspěchu nás pak informuje hláška:
Success! Data written to: secret/nazev_klice
Můžeme uložit více informací na jednou. value
v příkazu je pouze název klíče, můžeme jich v příkazu zadat třeba deset různě pojmenovaných najednou.
vault write secret/profil jmeno=Jan prijmeni=Novak povolani=ucitel
Pomocí příkazů vault read
a vault delete
můžeme klíč s hodnotou vypsat, resp. vymazat z paměti.
Trezor potřebuje klíč
Teď si povíme něco o tokenech. To je základní (ale ne jediná) metoda, jak data zabezpečit. Jeden token jsme již získali od serveru (a uložili si jej do textového dokumentu). Vault nás autentifikoval již na začátku a my tak můžeme přistupovat k uloženým tajemstvím. Když ale zadáme příkaz vault auth
a nepředáme validní token, přístup ztratíme.
Zkusme nyní příkaz zadat znovu, ale tentokrát s tokenem, který máme od začátku.
Najednou můžeme provádět zase všechny operace. Tokeny je možno i generovat, nově generované získají práva rodiče (funguje zde princip dědičnosti). To je ale prozatím nad rámec.
Jako ochutnávka to stačí...
Dnes jsme si představili systém Vault a prošli opravdu ty maximální základy práce, na čemž byla krásně demonstrována jednoduchost ovládání – stačí znalost příkazové řádky. Bude-li ze strany čtenářů zájem, naváži pokračováním, kdy si vytvoříme nový server a projdeme podrobněji rozsáhlé možnosti, které nám Vault nabízí.