Bezpečnost

    Jak bezpečně předat konfigurační soubor vývojáři

    Oddělte nastavení od tajných hodnot, ty pošlete jednorázovým odkazem nebo přílohou, která se po jednom stažení zničí, a soubor .env nedávejte do gitu.

    LinkPilot Team · Lidé, kteří vyvíjejí a provozují LinkPilot ve společnosti TetraCore, LLC · O LinkPilotu

    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, KEY a PRIVATE a 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:

    1. 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.
    2. Nastavte vypršení platnosti na dobu, kdy odkaz opravdu použije. Hodinu, pokud čeká, den, pokud je v jiném časovém pásmu.
    3. Nastavte limit zobrazení na jedno.
    4. S tarifem Pro přidejte heslovou frázi u produkčních hodnot a pošlete ji jiným kanálem.
    5. 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 .env do 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.

    Nástroje k tomuto článku

    Časté dotazy

    LinkPilot pošle tajný odkaz, který po otevření zmizí.

    Zašifruje se ve vašem prohlížeči, zobrazí se jednou a pak se zničí. Bez účtu.

    Vytvořit tajný odkaz

    Čtěte dál