Pojmy · 04

Bezpečnost


Tahle kapitola je nejdůležitější stránkou celého webu. Přečtěte si ji celou, i kdybyste ostatní jen prolistovali — chrání firemní systémy i vás osobně.

Nikdy nevkládejte hesla, tokeny, API klíče ani citlivé osobní údaje do chatu s Claudem — ani do promptu, ani jako soubor. Chat je součástí kontextu session — může se logovat a sdílet s kolegy nebo technickou podporou. Klíč, který jednou napíšete do chatu, se z něj nedá „vygumovat“. A klíč v cizích rukou neznamená přístup jen k jedné aplikaci, ale klidně k celému firemnímu systému, který hlídá.

Kam tedy s tajemstvími: .env

Hesla, klíče a podobná tajemství přece jen musí být někde uložená, jinak by se aplikace nepřipojila k databázi ani k žádné službě. Místo toho, aby byla natvrdo napsaná v kódu, žijí v samostatném souboru s názvem .env — funguje jako uzamčená zásuvka vedle kódu, ne jako součást samotného výkresu. Hodnotám uvnitř se říká environment proměnné: aplikace si je při spuštění sama přečte z prostředí, ve kterém běží, takže na vašem počítači může mít jiné heslo než na ostrém serveru — kód zůstává pořád stejný.

.env
API_KEY=tajny-klic-123 DATABASE_URL=heslo-k-databazi-456 MAIL_TOKEN=smyslena-hodnota-789

Hodnoty výše jsou jen ukázkové — v reálném .env souboru budou skutečná hesla a klíče konkrétní aplikace. Důležité je pravidlo: aplikace si hodnotu z .env přečte a použije, ale natvrdo napsaná přímo v kódu být nesmí — kód totiž běžně končí na GitHubu, .env tam nikdy.

.gitignore

Aby soubor .env omylem neskončil na GitHubu, hlídá ho soubor .gitignore — seznam souborů a složek, které Git do repozitáře nenahrává. Pozor: chrání jen soubory, které v repozitáři ještě nikdy nebyly. Pokud se .env už jednou commitnul, přidání do .gitignore ho zpětně neschová — soubor je potřeba z repozitáře odebrat a hodnoty v něm brát jako uniklé (viz Když tajemství unikne).

.gitignore
node_modules dist .env

Aby si ostatní na projektu věděli rady, jaké proměnné aplikace očekává, existuje vedle .env ještě soubor .env.example — stejné názvy proměnných, ale s prázdnými nebo vzorovými hodnotami. Ten se naopak commituje běžně.

.env — obsahuje skutečné hodnoty, nikdy se necommituje
- API_KEY=tajny-klic-123
- DATABASE_URL=heslo-k-databazi-456
.env.example — šablona s prázdnými hodnotami, commituje se
+ API_KEY=
+ DATABASE_URL=

Zapamatujte si tuhle dvojici: .env se nikdy necommituje, šablonou pro ostatní je vždy .env.example.

Agenti a .env.agent

Claude běžně čte soubory ve vašem projektu, aby vám mohl pomáhat — a to znamená, že by dokázal přečíst i ostrý soubor .env, kdybyste mu ho nezakryli. Proto mu ho nezpřístupňujte. Když agent (Claude Code) potřebuje sám někam přistupovat — do API, databáze nebo jiné služby — vytvoří se pro něj samostatný soubor .env.agent: obsahuje jen tokeny s omezenými právy, určené výhradně pro agenta, a stejně jako .env je i on v .gitignore.

.env.agent
AGENT_API_KEY=jen-pro-agenta-omezena-prava-000

Když chcete Claudovi říct, kde přístupy najde, do chatu patří jen název souboru — nikdy hodnota, kterou obsahuje:

Přístupové údaje máš v .env.agent, použij je.

Když tajemství unikne

Stalo se — co teď? Klíč nebo heslo okamžitě zneplatněte nebo otočte (vygenerujte nové) a napište Pavlovi na jelinek@smpl.cz. Smazání commitu ani zprávy v chatu nestačí — historie v Gitu i logy v chatu zůstávají uložené i po smazání a únik tím nezmizí.

Další železná pravidla

Pár dalších zásad, které platí bez výjimky: