Linter pro Kubernetes Manifesty
Provádějte lintování Kubernetes YAML manifestů podle osvědčených postupů pro zabezpečení clusteru, zcela offline ve vašem prohlížeči.
🔒 Zpracováno výhradně ve vašem prohlížeči – nic, co zde zadáte, se nikdy nenahraje.
Výsledek
Kubernetes manifesty se obvykle kontrolují v pull requestech pouhým okem, což znamená, že stále stejné bezpečnostní chyby pronikají do produkce: Deployment bez limitu paměti, který nakonec skončí OOM-kill a vezme s sebou node, kontejner, který spokojeně běží jako root, protože nikdo nenastavil runAsNonRoot, nebo Pod připnutý na značku obrazu `:latest`, která se potichu změní uprostřed nasazení. Tento linter odhalí tuto skupinu problémů hned, jakmile vložíte manifest, a to bez potřeby běžícího clusteru, kontextu kubectl nebo jakýchkoli přihlašovacích údajů.
Pod kapotou obsahuje malý ručně psaný YAML parser napsaný speciálně pro realistickou podmnožinu YAML, kterou Kubernetes manifesty skutečně používají: dokumenty oddělené `---`, vnořování založené na odsazení, mapování `key: value` a vnořené bloky, položky sekvencí `- ` včetně seznamů map, skaláry v uvozovkách a bez nich, komentáře a blokové skaláry `|`/`>` pro věci jako víceřádkové hodnoty ConfigMap nebo anotace. Není zapojena žádná externí YAML knihovna – parser i modul pravidel jsou součástí nástroje a běží zcela ve vašem prohlížeči.
Tabulka pravidel je vytvořena podle známých doporučení pro zabezpečení clusterů – CIS Kubernetes Benchmark, kube-score a profilu Pod Security Standards „Restricted“ – a kontroluje u každého kontejneru chybějící požadavky/limity prostředků, kontejnery, které mohou běžet jako root nebo v privilegovaném režimu, chybějící sondy liveness a readiness u dlouho běžících úloh (Deployments, StatefulSets, DaemonSets), připojení svazků hostPath, která vystavují souborový systém hostitele, použití hostNetwork a nereprodukovatelné značky obrazů `:latest` nebo neoznačené obrazy. Nálezy jsou seskupeny podle dokumentu a kontejneru s jasným určením závažnosti chyba/varování u každého z nich, takže poznáte, co je skutečně riskantní a co je jen upozornění na osvědčený postup.
Funguje na jednotlivých manifestech i celých vícedokumentových souborech vložených přímo z výstupu Helm template renderu nebo `kustomize build` a rozumí prostředkům Pod, Deployment, StatefulSet, DaemonSet, Job, ReplicaSet a CronJob. Protože vše běží lokálně, je bezpečné vkládat manifesty, které obsahují interní názvy služeb, skutečné velikosti prostředků nebo cokoli jiného, co byste nechtěli posílat do API třetí strany – užitečné pro rychlou kontrolu před commitem, jako pomůcka při revizi kódu nebo jen pro naučení, jak „zabezpečený“ manifest vlastně vypadá v praxi.