Klíč API nevkládejte do chatu ani do e-mailu. Pošlete ho jako jednorázový tajný odkaz: klíč se zašifruje ve vašem prohlížeči, dešifrovací klíč zůstane v části odkazu za znakem # a uložená kopie se po jednom otevření zničí. Každý klíč, který už byl vložen jako prostý text, pak vyměňte.
Zbytek návodu jde do podrobností: proč selhávají běžné kanály, jak přesně předání provést, co dělat, když klíč přesto unikne, a kdy je jednorázový odkaz špatná volba.
Proč není bezpečné poslat klíč API ve Slacku nebo e-mailem?
Protože obojí zprávu uchová tak dlouho, dokud ji cokoli drží, a cestou ji zkopíruje do každého zařízení a každého exportu.
- Obojí lze prohledávat navždy. Klíč sdílený v roce 2023 je klíč,
ze kterého vznikne váš příští incident. Útočníci, kteří proniknou do
firemního chatu nebo e-mailové schránky, v nich běžně hledají právě
řetězce, jak vypadají klíče API:
sk_live,AKIA,ghp_,Bearer. - Obojí se synchronizuje všude. Do telefonů, soukromých notebooků a tabletů, tedy do zařízení, na která vaše bezpečnostní opatření nedosáhnou a která vzdáleně nevymažete.
- Obojí se exportuje. Kontroly souladu s předpisy, soudní řízení i exporty pracovního prostoru vytvářejí kopie historie. Každý export je další místo, kde klíč žije.
- Obojí přežije odchod lidí. Spolupráce s externistou skončí, vlákno přímých zpráv s vaším klíčem Stripe ale zůstane.
Kdo vloží důvěrný údaj do kteréhokoli z těchto nástrojů, musí počítat s tím, že údaj bude žít všude, kam se zpráva dostane, a tak dlouho, dokud ji cokoli uchovává. Ani jeden systém nebyl navržen, aby zapomínal.
Než klíč pošlete, zmenšete ho
Nejlepší je předání, při kterém na předávaném klíči skoro nezáleží. Ještě než cokoli vygenerujete, uplatněte princip nejnižších oprávnění přímo u zdroje:
- Omezte rozsah. Omezené klíče Stripe, jemně nastavitelné osobní přístupové tokeny GitHub nebo zásady AWS IAM omezené na konkrétní akce a prostředky: většina seriózních poskytovatelů umožňuje vytvořit klíč, který umí jen tu jednu věc, kterou příjemce potřebuje.
- Dejte přednost přístupu jen pro čtení, pokud zápis opravdu není nutný.
- Nastavte platnost u poskytovatele, pokud to platforma podporuje (jemně nastavitelné tokeny PAT na GitHubu, dočasné přihlašovací údaje AWS přes STS). I uniklý klíč pak má omezenou životnost bez ohledu na to, co se stane dál.
- Pojmenujte klíč po příjemci (
vendor-x-readonly), aby jeho zneplatnění za šest měsíců bylo rozhodnutí na jeden pohled, a ne archeologický výzkum.
Klíč s omezeným rozsahem, omezenou platností a přístupem jen pro čtení promění nejhorší možný únik z incidentu v pouhou nepříjemnost.
Postup předání
- Vygenerujte klíč ve zdrojovém systému (AWS, Stripe, vaše vlastní API) s minimálním rozsahem, jak je popsáno výše.
- Vložte ho do jednorázového tajného odkazu se zapnutou volbou Zničit po přečtení a s nejkratší platností, která stačí: nejkratší předvolba je 1 hodina, dále 24 hodin a 7 dní, v tarifu Pro i vlastní datum a čas. Jen tak dlouho, kolik předání skutečně trvá, ne déle.
- Přidejte heslovou frázi a pošlete ji jiným kanálem: odkaz e-mailem, heslovou frázi v SMS nebo přímou zprávou ve Slacku. V LinkPilotu jsou heslová fráze, vlastní platnost a časová osa auditu funkce tarifu Pro za 29 $/měs. Pokud unikne jeden z kanálů, útočník má stále jen polovinu skládačky. (LinkPilot heslovou frázi před odesláním zahashuje v prohlížeči algoritmem SHA-256; původní heslová fráze se nikdy nedostane do databáze ani logů serveru a počet pokusů je omezen na 5 za minutu z jedné IP adresy.)
- Pošlete odkaz.
- Jiným kanálem si ověřte, že ho příjemce převzal, a zkontrolujte časovou osu auditu: jedno zobrazení, očekávaný čas, očekávané místo. To je vaše potvrzení o převzetí.
Pokud odkaz do vypršení platnosti nikdo neotevře, zneplatněte ho a pošlete nový. Platnost neprodlužujte a odkaz znovu nepoužívejte.
Příklad: předání omezeného klíče Stripe
# generate a restricted key with the minimum needed scopes
stripe api_keys create \
--restricted \
--display-name "vendor-x-readonly"
# pipe the resulting key into a LinkPilot secret
curl -X POST https://api.uselinkpilot.com/v1/secrets \
-H "Authorization: Bearer $LP_KEY" \
-d 'payload=sk_restricted_…' \
-d 'expires_in=3600' \
-d 'burn_after_read=true'
Co uvidí příjemce: po otevření odkazu se zobrazí stránka s tlačítkem
pro zobrazení, ne samotný klíč. Nástroje pro náhledy odkazů a skenery
e-mailů, které adresu načtou předem, dostanou jen metadata, protože
zobrazení se zaznamená výhradně při výslovném kliknutí na zobrazení,
nikdy při požadavku GET. Když příjemce klikne na „Zobrazit“ (a zadá
heslovou frázi, pokud je nastavena), uvidí klíč přesně jednou. Potom
se uložený obsah přepíše a odkaz vrací HTTP 410. I kdyby se e-mail
rozšířil po celé firmě, klíč mohl přečíst jen ten, kdo odkaz otevřel první,
a auditní stopa vám ukáže, kdo to byl.
Jaký kanál pro jaké předání
| Situace | Doporučený postup | Poznámky |
|---|---|---|
| Kolega ve stejné místnosti nebo na hovoru | Jednorázový odkaz s platností 1 hodina (nejkratší předvolba) | Heslová fráze volitelná, převzetí můžete potvrdit hned |
| Kolega na dálku | Jednorázový odkaz + heslová fráze druhým kanálem | Platnost 1 hodina |
| Externista nebo agentura | Klíč s omezeným rozsahem + jednorázový odkaz + heslová fráze | Pojmenujte klíč po nich; zneplatnění si naplánujte v kalendáři na konec spolupráce |
| Zákazník, který dostává vlastní klíč | Jednorázový odkaz z vaší aplikace nebo z procesu podpory | Platnost 24 hodin; požádejte ho, ať si klíč hned uloží |
| Pipeline CI/CD nebo služba | Úložiště důvěrných údajů platformy (Actions secrets, Vault, ASM) | Nikdy odkaz, stroje si nic nepředávají |
| Celý tým, trvalý přístup | Trezor ve správci hesel | Tady jde o úložiště a řízení přístupu, ne o předání |
Co dělat, když klíč API unikne?
Považujte ho za vyzrazený a vyměňte ho u poskytovatele; smazání zprávy nic neřeší. Platí to pro každý klíč, který se ocitl ve zprávě v chatu, v těle e-mailu, na snímku obrazovky, v commitu v gitu nebo ve veřejném vložení. Postupujte v tomto pořadí:
- Nejdřív vydejte náhradní klíč, pokud poskytovatel dovoluje dva aktivní klíče současně. Oprávnění uživatelé tak nepřijdou o přístup.
- Uniklý klíč zneplatněte u poskytovatele. Jen tento krok skutečně ukončí vyzrazení; smazání zprávy ve Slacku ne.
- Nový klíč předejte správně: jednorázový odkaz, heslová fráze, krátká platnost, podle postupu výše.
- Projděte logy využití u poskytovatele za dobu mezi vyzrazením a zneplatněním. Neočekávaná volání znamenají, že už nejde o úklid, ale o incident.
- Odstraňte příčinu vložení: přesuňte důvěrný údaj do nástrojů pro
proměnné prostředí, které jsou v
.gitignore, zapněte skenování důvěrných údajů u hostingu repozitáře nebo upravte provozní postup, podle kterého ho někdo poslal přímou zprávou.
Celý cyklus má zabrat minuty. Pokud se lidé výměně klíče vyhýbají, protože se jí bojí, skutečnou zranitelností je právě tahle křehkost. Opravte nejdřív ji.
Čemu se vyhnout
- Opakovanému posílání stejného důvěrného údaje. Klíč raději vyměňte. Opětovné poslání smaže auditní záznam o „právě jednom vyzrazení“, kvůli kterému se jednorázový odkaz vyplatil.
- Dlouhé platnosti. Výchozí volbou má být krátká. Většina předání proběhne během minut; 8hodinové okno je jen delší únik.
- Vynechání heslové fráze. Nestojí skoro nic a chrání před nechtěným únikem adresy: přeposlanými e-maily, sdílením obrazovky nebo někým, kdo se dívá přes rameno na sdílený monitor.
- Snímkům obrazovky s klíči. Skončí v galerii fotoaparátu, v cloudové synchronizaci fotek a ve vyhledávání v obrázcích. Snímek obrazovky je stejně trvalý jako vložení do chatu, jen vy v něm hledáte hůř, zatímco OCR ho přečte bez potíží.
- Používání nástroje pro odkazy jako úložiště. Odkaz je kurýr, ne trezor. Příjemce má klíč uložit do správce hesel nebo nástroje pro proměnné prostředí hned, jak ho dostane.
Kdy je jednorázový odkaz špatná volba
Upřímně, tento postup má své hranice:
- Přihlašovací údaje pro komunikaci mezi stroji patří do správce důvěrných údajů nebo do nativního úložiště platformy a vkládají se při nasazení nebo za běhu. Člověk, který kliká na odkaz, není krok nasazení.
- Dlouhodobě sdílené přihlašovací údaje patří do správce hesel se skutečným řízením přístupu a se zneplatněním pro každého člověka zvlášť.
- Častá rotace (klíče, které se mění každou hodinu) má být celá automatizovaná; lidé a odkazy v tom cyklu nemají co dělat.
- Důvěrné údaje, kterých se nesmí dotknout vůbec žádná třetí strana: předání přesuňte mimo internet. Aktualizace z 29. září 2026: tento bod původně uváděl, že LinkPilot nedeklaruje E2EE, a doporučoval místo něj nástroj s koncovým šifrováním. LinkPilot dnes textový obsah šifruje v prohlížeči, takže ukládá vždy jen šifrový text, a stejně tak i přiložené soubory. Stránka Bezpečnostní architektura přesně popisuje, co je chráněno a co ne.
Pro běžný případ, kdy jeden člověk jednou předává jeden přihlašovací údaj jinému člověku, je jednorázový odkaz s heslovou frází a krátkou platností nejsilnější jednoduchý postup, který je k dispozici.
Související články
- Proč adresy URL prozrazují citlivé údaje
- Bezpečné sdílení hesel: srovnání 5 způsobů
- Bezpečnostní architektura LinkPilotu
- Srovnání API zkracovačů odkazů
- Bezplatný generátor tajných odkazů
Zdroje
- Stripe Docs, API keys: limit access with restricted keys.
- GitHub Docs, Managing your personal access tokens.
- AWS IAM User Guide, Temporary security credentials in IAM.
