Do týmu nastoupí nový vývojář nebo začne pracovat externista a první,
co potřebuje, je soubor .env, bez kterého projekt nespustí. Ten
soubor obvykle míchá neškodná nastavení s nejcitlivějšími hodnotami,
které tým má. Proto tak často skončí v soukromé zprávě nebo jako
příloha e-mailu s předmětem „config“.
Pokud chcete konfigurační soubor předat vývojáři bezpečně, berte ho jako dvě různé věci: nastavení, která mohou putovat kudykoli, a tajné hodnoty, které se pošlou jednou, a to kanálem, který si neponechává kopie. Tento návod popisuje, jak obě části oddělit, jak poslat tu tajnou a co vývojáři říct, aby soubor zůstal v bezpečí i poté, co k němu dorazí.
Čtěte soubor, jako by byl každý řádek veřejný
Otevřete soubor a každý řádek zařaďte do jedné ze dvou skupin.
- Nastavení: úrovně logování, porty, přepínače funkcí, adresy neprodukčních služeb, veřejná ID klientů. Patří do repozitáře jako vzorový soubor a můžete je poslat jakkoli.
- Tajné hodnoty: hesla k databázím, klíče API, podpisové klíče,
soukromé klíče, tajné klíče klientů OAuth, cokoli, co dává přístup.
Vyhledejte
PASSWORD,SECRET,TOKEN,KEYaPRIVATEa pak si přečtěte i zbytek, protože připojovací řetězec s vloženým heslem na sebe nijak neupozorní.
Pak si ujasněte, na čem bude vývojář pracovat. Lokální vývoj proti stagingu potřebuje hodnoty pro staging. Nepotřebuje produkční klíče a nepotřebuje ani ostrý klíč platební brány jen proto, že ho soubor náhodou obsahuje.
Tajné hodnoty do souboru v repozitáři nepatří
Soubor .env.example v repozitáři popisuje každou proměnnou se
zástupnou hodnotou. Skutečné hodnoty se dodávají za běhu z prostředí,
ze správce důvěrných údajů nebo z úložiště důvěrných údajů platformy.
Díky tomu předáváte jen tajné hodnoty a jediné místo, kde jsou
pohromadě, je lokální kopie vývojáře.
# .env.example (committed)
DATABASE_URL=postgres://app:CHANGE_ME@staging-db.internal:5432/app
STRIPE_SECRET_KEY=sk_test_CHANGE_ME
SESSION_SECRET=CHANGE_ME
LOG_LEVEL=debug
Přidejte .env do .gitignore dřív, než má kdokoli skutečný soubor,
a zvažte pre-commit hook, například gitleaks, aby omylem vytvořený
commit hned selhal.
Kde to jde, dejte vývojáři vlastní přihlašovací údaje
Předání je zároveň příležitost přestat údaje sdílet. Pokud databáze podporuje jednotlivé uživatele, vytvořte vývojáři vlastního uživatele s oprávněními, která jeho práce vyžaduje, a s datem vypršení platnosti. Pokud API nabízí klíče s omezeným oprávněním, vydejte jeden na jeho jméno. Tento postup popisuje návod k přístupu externisty do databáze. Přihlašovací údaje vytvořené pro jednoho člověka jde jednomu člověku také odebrat.
Jak tajné hodnoty předat
Fungují dvě cesty a obě se vyhnou tomu, aby soubor zůstal ve zprávě.
Vložte tajné řádky do jednorázového odkazu. Otevřete nástroj
pro tajné odkazy, vložte jen
řádky s tajnými hodnotami a vytvořte odkaz. Text se zašifruje ve
vašem prohlížeči ještě před uložením, uložená kopie se zničí při
prvním otevření odkazu, a pokud odkaz nikdo neotevře, jeho platnost
vyprší po hodině, po 24 hodinách nebo po sedmi dnech. Bez účtu se
vejde až 10 000 znaků, což na většinu souborů .env stačí několikrát.
Přiložte k tajnému odkazu celý soubor. Z přihlášeného účtu LinkPilot můžete k tajné zprávě přiložit až tři soubory po 9 MB. Každý soubor se zašifruje ve vašem prohlížeči klíčem odvozeným od klíče tajné zprávy, takže server nikdy nemá soubor v čitelné podobě, a příloha se po jediném stažení smaže. Tato cesta je lepší, když soubor musí dorazit bajt po bajtu, například soubor servisního účtu ve formátu JSON nebo úložiště klíčů (keystore).
V obou případech:
- Ověřte vývojáře přes kanál, kterým probíhal nábor nebo uzavření smlouvy, ne přes adresu, ze které o soubor požádal.
- Nastavte vypršení platnosti na dobu, kdy odkaz opravdu použije. Hodinu, pokud čeká, den, pokud je v jiném časovém pásmu.
- Nastavte limit zobrazení na jedno.
- S tarifem Pro přidejte heslovou frázi u produkčních hodnot a pošlete ji jiným kanálem.
- Pošlete odkaz s jednořádkovou poznámkou, co obsahuje a kam soubor patří. Netajná nastavení pošlete zvlášť, nebo odkažte na vzorový soubor v repozitáři.
Pozvánka do trezoru je lepší cesta, když jde o vývojáře ve stálém poměru a váš tým už používá správce důvěrných údajů s přístupem pro každého vývojáře zvlášť. Jednorázový odkaz použijte pro období, než se to nastaví, a pro každého, kdo přístup do trezoru nikdy mít nebude.
Řekněte vývojáři, kam soubor patří
I čisté předání může skončit špatně, pokud soubor skončí ve sdílené složce. Spolu s údaji pro připojení pošlete tyto pokyny:
- Uložte ho jako
.envdo kořene projektu a nikam jinam. Před prvním commitem zkontrolujte, zda ho pokrývá.gitignore. - Nevkládejte hodnoty do tiketů ani do chatu, abyste ověřili, jestli jsou správné. Chybějící nebo neplatnou proměnnou nahlaste jen názvem a odesílatel vydá novou hodnotu.
- Při odchodu se hodnoty mění. Až spolupráce skončí, hodnoty z toho souboru se vymění. Řekněte to předem, ať nikoho nepřekvapí.
Potvrzení a úklid
Požádejte vývojáře, aby potvrdil název souboru, prostředí a nějakou netajnou značku, například komentář s verzí na prvním řádku. Pokud jednorázový odkaz hlásí, že byl otevřen dřív, než se k němu dostal, považujte každou hodnotu v něm za vyzrazenou a vyměňte ji.
Po dokončení předání zneplatněte každý odkaz, který nikdo neotevřel, odstraňte všechny dočasné kopie, které jste si vytvořili, a zapište, kdo a kdy dostal hodnoty kterého prostředí. Tento záznam je auditní stopa. Samotný soubor by měl existovat jen na počítači, který ho potřebuje.
