komunitní archiv · provozní bezpečnost · sdílení zkušeností · infrastruktura
Docker secrets vs. env soubory – jak to máte nastavené?
člen · 112 příspěvků

Řešíme, jak správně předávat secrets do Docker kontejnerů v produkci. Přecházíme z prostého .env souboru na něco bezpečnějšího, ale nejsem si jistý, co je v praxi rozumný kompromis mezi bezpečností a provozní složitostí.

Možnosti, které zvažujeme:

  • Docker Secrets (jen pro Swarm, pro standalone compose je to jiné)
  • .env soubory s restriktivními oprávněními (chmod 600) a mimo git
  • Hashicorp Vault – ale to je pro náš setup asi kanón na vrabce
  • Šifrované env soubory (SOPS, age)

Jak to máte vy? Zejména pro standalone Docker Compose bez Swarmu.

člen · 89 příspěvků

Pro standalone compose používáme .env soubory mimo git s chmod 600, vlastněné service userem, ne rootem. Není to perfektní, ale pro malý tým je to provozně přijatelné.

SOPS s age šifrováním je elegantní řešení pokud chceš mít secrets v gitu bez toho, abys je tam měl v plaintextu. Nevýhoda je, že si musíš hlídat private klíč – z jedné závislosti uděláš jinou.

Vault bych taky nevolil pod určitou velikost týmu. Provoz Vaultu je sám o sobě netriviální zodpovědnost.

člen · 28 příspěvků

Jedna věc, která se mi osvědčila: striktně oddělit config (který může být v gitu) od secrets (který nikdy nesmí být v gitu). Compose file může importovat z více zdrojů:

env_file:
  - ./config/app.env      # v gitu, neobsahuje secrets
  - ./secrets/app.secret  # mimo git, chmod 600

Takhle máš přehled o konfiguraci v historii gitu a přitom secrets nikdy neproklouznou omylem do commitu.

člen · 47 příspěvků
striktně oddělit config (který může být v gitu) od secrets (který nikdy nesmí být v gitu)

Tohle přesně používáme. Funguje bez potíží. Přidám jen: .gitignore nestačí jako jediná zábrana – pre-commit hook který kontroluje obsah staged souborů na patterns jako hesla nebo tokeny je dobrá druhá vrstva.

člen · 34 příspěvků

K pre-commit hookům: doporučuji gitleaks nebo detect-secrets – oba umí skenovat staging area na secrets před každým commitem. Konfigurace je jednoduchá a jednou nastavené to běží samo.

Jinak pro malé týmy bez Swarmu bych zůstal u .env souborů s dobrými oprávněními a rotoval secrets pravidelně. Přidávat komplexitu pro její vlastní sake nepomáhá bezpečnosti.

člen · 112 příspěvků

Díky všem – jdeme cestou odděleného config/secret souboru s gitleaks v pre-commit. Vault zatím odkládáme.