Bezpečnost

    Bezpečné sdílení odkazů pro vývojáře

    Praktický průvodce pro vývojářské týmy: kdy použít jednorázové odkazy, jak je vytvářet skriptem a jak je zapojit do nástupu nových lidí a do CI.

    W. Miller · Aktualizováno · O LinkPilotu

    Vývojáři se se sdílením důvěrných údajů obvykle setkají na třech místech: při nástupu nových lidí, při předávání dodavatelům a při řešení incidentů. Tento článek ukazuje z pohledu vývojáře, kdy sáhnout po jednorázovém odkazu, kdy ho vynechat a jak ho vytvořit skriptem, aniž by důvěrný údaj cestou skončil v historii shellu. Pokud si mechanismus chcete nejdřív vyzkoušet, bezplatný generátor jednorázových tajných odkazů funguje bez účtu.

    Když je alespoň na jedné straně předání člověk a hodnota potom nemá nikde zůstat. Obvyklé případy:

    • Nástup nového inženýra s jeho první sadou přihlašovacích údajů.
    • Sdílení dočasného hesla správce během incidentu.
    • Doručení tokenu pro dodavatele nebo externistu, který nemá zůstat ve vašem trezoru.
    • Rotace přihlašovacího údaje, kdy má stará hodnota rychle přestat platit.
    • Odeslání klíče API, který jste pro zákazníka vytvořili.
    • Důvěrné údaje mezi stroji. Tam jsou správným nástrojem proměnné prostředí v CI (například GitHub Actions secrets), Kubernetes Secrets a dynamické přihlašovací údaje ve Vaultu. Odkaz slouží k tomu, aby člověk údaj do těchto systémů předal.
    • Dlouhodobé týmové přihlašovací údaje. Ty patří do správce hesel.
    • Veřejná konfigurace. Konfiguraci, která není tajná, nevydávejte za důvěrný údaj. Použijte běžný odkaz.

    Hranice vede tudy: pokud jsou na obou koncích přenosu stroje, použijte úložiště důvěrných údajů své platformy. Pokud je alespoň na jednom konci člověk, je jednorázový odkaz obvykle nejčistší řešení.

    SituaceSprávný nástroj
    První přihlašovací údaje nového inženýraJednorázový tajný odkaz
    Pipeline CI potřebuje za běhu token pro nasazeníÚložiště důvěrných údajů CI / proměnné prostředí
    Pod potřebuje heslo k databáziK8s secret / external secrets operator
    Týmové přihlášení, které denně používá pět lidíSprávce hesel (sdílený trezor)
    Zákazník potřebuje klíč API, který pro něj byl vytvořenJednorázový tajný odkaz
    Důvěrný údaj potřebný v repozitáři gitNikdy. Odkažte na úložiště důvěrných údajů a přidejte do CI skenování

    Skriptování

    LinkPilot má REST API (ve všech tarifech včetně Free). Vytvoření tajné zprávy ze skriptu vypadá takto:

    LP_KEY=lp_live_...
    
    URL=$(curl -sS https://api.uselinkpilot.com/v1/secrets \
      -H "Authorization: Bearer $LP_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "payload": "'"$NEW_DB_PASSWORD"'",
        "expires_in": 3600,
        "burn_after_read": true,
        "passphrase": "'"$ONBOARDING_PASSPHRASE"'"
      }' | jq -r '.url')
    
    echo "Secret link: $URL"
    

    Adresu URL pak předejte do kanálu, kterým už doručujete: soukromá zpráva ve Slacku, e-mail nebo webhook vašeho onboardingového nástroje.

    Jak udržet obsah mimo seznam procesů

    Ukázka výše má klasickou chybu: když obsah vložíte do -d, ocitne se na příkazovém řádku curl, kde ho kterýkoli místní uživatel přečte přes ps, dokud požadavek běží. Místo toho sestavte JSON pomocí jq a předejte ho přes stdin přepínačem -d @- v curl:

    set -euo pipefail
    
    jq -n --arg payload "$NEW_DB_PASSWORD" \
          --arg pass "$ONBOARDING_PASSPHRASE" \
          '{payload: $payload, expires_in: 3600,
            burn_after_read: true, passphrase: $pass}' |
    curl -sS https://api.uselinkpilot.com/v1/secrets \
      -H "Authorization: Bearer $LP_KEY" \
      -H "Content-Type: application/json" \
      -d @- | jq -r '.url'
    

    Tři návyky, které by se měly stát samozřejmostí:

    • Hodnoty přicházejí z proměnných prostředí nebo z CLI správce důvěrných údajů. Nikdy je nepište do interaktivního shellu, kde skončí v historii.
    • Skript vypisuje odkaz, nikdy obsah.
    • set -euo pipefail, aby neúspěšné volání API nemohlo potichu předat prázdnou adresu URL dalšímu kroku.

    Šablona pro nástup nových lidí

    Postup, který se u nových inženýrů první den osvědčil:

    1. Onboardingový skript založí účty a vyzvedne jednorázové přihlašovací údaje.
    2. Skript vytvoří pro každý údaj tajný odkaz s platností 4 hodiny a společnou heslovou frází.
    3. Skript pošle e-mail se všemi odkazy a soukromou zprávu ve Slacku s heslovou frází.
    4. Inženýr otevře každý odkaz a zkopíruje údaj do svého správce hesel.
    5. Vše, co do konce dne zůstane nepřečtené, se zneplatní a vystaví znovu, až to bude inženýrovi vyhovovat.

    Proč právě tyto parametry: 4hodinová platnost pokryje běžné první dopoledne, aniž by přihlašovací údaje zůstaly platné přes noc. Heslová fráze putuje druhým kanálem, takže přeposlaný nebo špatně doručený e-mail nic nezpůsobí. A protože se odkazy po přečtení zničí, zůstanou inženýrovi na konci dne v e-mailové schránce jen nefunkční adresy URL.

    Novému kolegovi to výslovně řekněte: „Každý odkaz funguje jen jednou. Než zavřete kartu, uložte si hodnotu do správce hesel.“ Nejčastější chyba při nástupu: příjemce si tajnou zprávu přečte, zavře kartu a počítá s tím, že se k ní může později vrátit.

    Postup rotace

    Rotace sdíleného hesla k databázi, když je na straně příjemce externista nebo kolega:

    1. Vygenerujte nové heslo a nastavte ho ve zdrojovém systému (databáze, cloudová konzole, kdekoli je jeho platná verze).
    2. Nejdřív aktualizujte vlastní systémy, které heslo používají (trezor CI, K8s secret, konfiguraci aplikace), aby se během předání člověku nic nerozbilo.
    3. Vytvořte pro novou hodnotu jednorázový odkaz: zničit po přečtení, platnost 1 hodina, heslová fráze.
    4. Odkaz a heslovou frázi doručte různými kanály.
    5. Ověřte událost zobrazení v časové ose auditu. Nikdo odkaz před vypršením platnosti neotevřel? Zneplatněte ho a vystavte nový. Stejný odkaz nikdy neposílejte znovu.
    6. Ověřte, že starý přihlašovací údaj je ve zdrojovém systému vypnutý.

    Každá rotace dostane vlastní odkaz. Odkazy jsou záměrně na sobě nezávislé. Pro doručení je to výhoda, pro správu přístupů nedostatek, a proto plán rotací patří do správce hesel nebo provozní příručky, ne do nástroje pro odkazy.

    Řešení incidentů

    Během incidentu často potřebujete změnit přihlašovací údaj a rychle rozdat nový několika lidem, kteří incident řeší. Nevkládejte ho do kanálu incidentu. Ten se zaznamenává pro postmortem a důvěrný údaj skončí v exportu, v dokumentu z retrospektivy a v každém archivačním systému, který na ně navazuje.

    • Změňte přihlašovací údaj ve zdrojovém systému.
    • Vytvořte tajný odkaz s platností 30 minut.
    • Odkaz vložte do kanálu, heslovou frázi pošlete soukromou zprávou.
    • Po incidentu ověřte, že je odkaz zničený nebo zneplatněný.

    V postmortemu pak zůstane nefunkční adresa URL místo platného hesla správce. Auditní záznam dá tomu, kdo časovou osu prochází, přesný záznam „údaj znovu vystaven ve 14:32, přečten ve 14:33“ bez práce navíc.

    Jedna poznámka k náhledům odkazů: chatovací aplikace vložené adresy URL stahují, aby zobrazily náhled. Dobře navržený tajný odkaz to vydrží, protože stažení náhledu je požadavek GET a zobrazení obsahu výslovný POST. Celý mechanismus popisuje článek skenery odkazů a jednorázové tajné zprávy. Pokud nástroj vybíráte, vyzkoušejte to před incidentem, ne během něj.

    Co vám řekne auditní záznam?

    Zda byla tajná zpráva přečtena, kdy a přibližně odkud, a zda někdo zkoušel špatnou heslovou frázi. Každá tajná zpráva v LinkPilotu má časovou osu událostí: created, viewed, failed_passphrase, burned, expired, revoked. Zobrazení se zaznamenávají s časovým razítkem, přibližnou geolokací (pokud je k dispozici), identifikací prohlížeče (user agent) a hashovanou IP adresou (SHA-256 se solí, která se denně mění; samotná IP adresa se nikdy neukládá). V praxi z toho dostanete tři odpovědi, na které se skripty a provozní příručky mohou spolehnout:

    • Potvrzení doručení: událost viewed znamená, že předání proběhlo.
    • Odhalení anomálií: série událostí failed_passphrase nebo zobrazení, které nepoznáváte, je signál k okamžité rotaci.
    • Čistý záznam pro kontroly: věta „doručeno jednou, přečteno jednou, zničeno“ se auditorům líbí.
    • Nejsou trezorem. Jednorázový odkaz nijak nespravuje průběžný přístup, plány rotací ani přehled o tom, kdo co má.
    • Odkaz je klíč. LinkPilot šifruje textový obsah ve vašem prohlížeči a klíč nikdy nedostane. Ten ale cestuje v části odkazu za znakem #, takže kdo získá celý odkaz, tajnou zprávu přečte, a ztracený odkaz znamená, že tajnou zprávu už nejde obnovit. Přiložené soubory se šifrují stejně, jejich názvy a velikosti ale ne. Krátká platnost a zničení po přečtení jsou proto pořád důležité. Aktualizace z 29. září 2026: tento bod dříve zněl „nejsou koncově šifrované“, což do tohoto data platilo. Podrobnosti najdete na stránce architektura zabezpečení.
    • Neřeší důvěrné údaje rozeseté po kódu. Klíče natvrdo zapsané v repozitářích potřebují skenování a rotaci, ne lepší způsob doručení.
    • Neochrání druhý konec. Jakmile si člověk hodnotu přečte, počítejte s tím, že je všude, kam ji uložil.

    Vyzkoušejte zdarma, bez registrace

    Generátor jednorázových tajných odkazů

    Pošlete heslo nebo poznámku odkazem, který se otevře jen jednou.

    Otevřít nástroj

    Zdroje

    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