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 má vývojář použít jednorázový odkaz?
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.
Kdy jednorázový odkaz nepoužívat
- 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í.
| Situace | Správný nástroj |
|---|---|
| První přihlašovací údaje nového inženýra | Jednorá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ázi | K8s 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řen | Jednorázový tajný odkaz |
| Důvěrný údaj potřebný v repozitáři git | Nikdy. 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:
- Onboardingový skript založí účty a vyzvedne jednorázové přihlašovací údaje.
- Skript vytvoří pro každý údaj tajný odkaz s platností 4 hodiny a společnou heslovou frází.
- Skript pošle e-mail se všemi odkazy a soukromou zprávu ve Slacku s heslovou frází.
- Inženýr otevře každý odkaz a zkopíruje údaj do svého správce hesel.
- 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:
- Vygenerujte nové heslo a nastavte ho ve zdrojovém systému (databáze, cloudová konzole, kdekoli je jeho platná verze).
- 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.
- Vytvořte pro novou hodnotu jednorázový odkaz: zničit po přečtení, platnost 1 hodina, heslová fráze.
- Odkaz a heslovou frázi doručte různými kanály.
- 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.
- 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í.
Omezení: co odkazy neřeší
- 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.
Související články
- Jak bezpečně sdílet klíče API
- Odkazy s omezenou platností: proč na krátkých lhůtách záleží
- Architektura zabezpečení LinkPilotu
Zdroje
- GitHub Docs, Using secrets in GitHub Actions.
- Kubernetes, Secrets.
- jq, Manual.
- curl, Manual page,
-d, --data.
