Koncepty zabezpečení pro aplikace a clustery ve službě Azure Kubernetes (AKS)
Zabezpečení kontejneru chrání celý kompletní kanál před sestavením a úlohami aplikací spuštěnými ve službě Azure Kubernetes Service (AKS).
Zabezpečený dodavatelský řetězec zahrnuje prostředí sestavení a registr.
Kubernetes zahrnuje součásti zabezpečení, jako jsou standardy zabezpečení podů a tajné kódy. Azure zahrnuje komponenty, jako jsou Active Directory, Microsoft Defender for Containers, Azure Policy, Azure Key Vault, skupiny zabezpečení sítě a orchestrované upgrady clusteru. AKS kombinuje tyto součásti zabezpečení do:
- Zadejte úplný ověřovací a autorizační scénář.
- Použití AKS předdefinované služby Azure Policy k zabezpečení aplikací
- Ucelený přehled od sestavení prostřednictvím vaší aplikace pomocí Microsoft Defenderu pro kontejnery
- Udržujte cluster AKS v provozu s nejnovějšími aktualizacemi zabezpečení operačního systému a verzemi Kubernetes.
- Zajistěte zabezpečený provoz podů a přístup k citlivým přihlašovacím údajům.
Tento článek představuje základní koncepty, které zajišťují zabezpečení aplikací v AKS.
Zabezpečení sestavení
Jako vstupní bod dodavatelského řetězce je důležité před povýšením kanálu provést statickou analýzu sestavení imagí. To zahrnuje posouzení ohrožení zabezpečení a dodržování předpisů. Nejde o selhání sestavení, protože má chybu zabezpečení, protože tím dojde k narušení vývoje. Jde o pohled na stav dodavatele, který se má segmentovat na základě ohrožení zabezpečení, která mohou vývojové týmy provádět. Pomocí období odkladu také můžete vývojářům umožnit čas na nápravu zjištěných problémů.
Zabezpečení registru
Posouzení stavu ohrožení zabezpečení image v registru detekuje posun a také zachytává image, které nepocházejí z vašeho prostředí sestavení. Pomocí notáře V2 připojte podpisy k imagím, abyste zajistili, že nasazení pocházejí z důvěryhodného umístění.
Zabezpečení clusteru
Hlavní komponenty Kubernetes v AKS jsou součástí spravované služby poskytované, spravované a spravované Microsoftem. Každý cluster AKS má vlastní jednoklientské vyhrazené hlavní server Kubernetes pro poskytování serveru API, plánovače atd. Další informace najdete v tématu Správa ohrožení zabezpečení pro službu Azure Kubernetes Service.
Ve výchozím nastavení používá server rozhraní API Kubernetes veřejnou IP adresu a plně kvalifikovaný název domény (FQDN). Přístup ke koncovému bodu serveru ROZHRANÍ API můžete omezit pomocí autorizovaných rozsahů IP adres. Můžete také vytvořit plně privátní cluster , který omezí přístup k vašemu virtuální síti pomocí serveru API.
Přístup k serveru rozhraní API můžete řídit pomocí řízení přístupu na základě role Kubernetes (Kubernetes RBAC) a Azure RBAC. Další informace najdete v tématu Integrace Microsoft Entra s AKS.
Zabezpečení uzlů
Uzly AKS jsou virtuální počítače Azure, které spravujete a spravujete.
- Uzly Linuxu spouštějí optimalizované verze Ubuntu nebo Azure Linuxu.
- Uzly Windows Serveru spouštějí optimalizovanou verzi Windows Serveru 2022 pomocí modulu runtime kontejneru
containerd
.
Při vytvoření nebo vertikálním navýšení kapacity clusteru AKS se uzly automaticky nasadí s nejnovějšími aktualizacemi a konfiguracemi zabezpečení operačního systému.
Poznámka:
Clustery AKS spuštěné:
- Kubernetes verze 1.19 a vyšší – fondy uzlů Linuxu se používají
containerd
jako modul runtime kontejneru. Fondy uzlů Windows Serveru 2019 a Windows Serveru 2022 se používajícontainerd
jako modul runtime kontejneru. Další informace naleznete v tématu Přidání fondu uzlů Systému Windows Server scontainerd
. - Kubernetes verze 1.19 a starší – fondy uzlů Linuxu používají Jako modul runtime kontejneru Docker.
Další informace o procesu upgradu zabezpečení pro pracovní uzly Linux a Windows naleznete v tématu Opravy zabezpečení uzlů.
Clustery AKS se spuštěnými virtuálními počítači Azure Generation 2 zahrnují podporu důvěryhodného spuštění, která chrání před pokročilými a trvalými technikami útoku kombinací technologií, které je možné nezávisle povolit, jako je zabezpečené spouštění a virtualizovaná verze důvěryhodného modulu platformy (vTPM). Správci můžou nasadit pracovní uzly AKS s ověřenými a podepsanými spouštěcími zavaděči, jádry operačního systému a ovladači, aby zajistili integritu celého řetězce spouštění základního virtuálního počítače.
Autorizace uzlu
Autorizace uzlu je režim autorizace pro zvláštní účely, který konkrétně autorizuje požadavky rozhraní KUBelet API na ochranu před útoky east-west. Ve výchozím nastavení je autorizace uzlu povolená v clusterech AKS 1.24 a více.
Nasazení uzlů
Uzly se nasazují do podsítě privátní virtuální sítě bez přiřazených veřejných IP adres. Pro účely řešení potíží a správy je SSH ve výchozím nastavení povolená a přístupná pouze pomocí interní IP adresy. Zakázání SSH během vytváření clusteru a fondu uzlů nebo pro existující cluster nebo fond uzlů je ve verzi Preview. Další informace najdete v tématu Správa přístupu SSH.
Úložiště uzlů
K zajištění úložiště používají uzly Azure Spravované disky. U většiny velikostí uzlů virtuálních počítačů jsou azure Spravované disky disky Premium založené na vysoce výkonných discích SSD. Data uložená na spravovaných discích se automaticky šifrují v klidovém stavu v rámci platformy Azure. Aby se zlepšila redundance, azure Spravované disky se bezpečně replikují v datacentru Azure.
Nepřátelská víceklientská úloha
Prostředí Kubernetes v současné době nejsou bezpečná pro nepřátelské použití s více tenanty. Dodatečné funkce zabezpečení, jako jsou zásady zabezpečení podů nebo RBAC Kubernetes pro uzly, efektivně blokují zneužití. Pro skutečné zabezpečení při spouštění nepřátelských víceklientských úloh důvěřujte pouze hypervisoru. Doména zabezpečení pro Kubernetes se stává celým clusterem, nikoli z jednotlivých uzlů.
U těchto typů nepřátelských víceklientských úloh byste měli používat fyzicky izolované clustery. Další informace o způsobech izolace úloh najdete v tématu Osvědčené postupy pro izolaci clusteru v AKS.
Izolace výpočetních prostředků
Vzhledem k požadavkům na dodržování předpisů nebo zákonným požadavkům mohou určité úlohy vyžadovat vysokou míru izolace od jiných zákaznických úloh. Pro tyto úlohy Poskytuje Azure:
- Izolované kontejnery jádra, které se mají použít jako uzly agentů v clusteru AKS. Tyto kontejnery jsou zcela izolované od konkrétního typu hardwaru a jsou izolované od prostředků infrastruktury hostitele Azure, hostitelského operačního systému a hypervisoru. Jsou vyhrazené pro jednoho zákazníka. Při vytváření clusteru AKS nebo přidání fondu uzlů vyberte jednu z velikostí izolovaných virtuálních počítačů jako velikost uzlu.
- Důvěrné kontejnery (Preview) také založené na kontejnerech Kata Confidential Containers šifruje paměť kontejneru a zabraňuje datům v paměti při výpočtu v prostém textu, čitelném formátu a manipulaci. Pomáhá izolovat kontejnery od jiných skupin kontejnerů nebo podů a také jádra operačního systému uzlu virtuálního počítače. Důvěrné kontejnery (Preview) používají hardwarové šifrování paměti (SEV-SNP).
- Sandboxing podů (Preview) poskytuje hranici izolace mezi aplikací kontejneru a sdíleným jádrem a výpočetními prostředky (procesor, paměť a síť) hostitele kontejneru.
Zabezpečení sítě
Pro připojení a zabezpečení místních sítí můžete cluster AKS nasadit do existujících podsítí virtuální sítě Azure. Tyto virtuální sítě se připojují zpět k místní síti pomocí sítě VPN typu Site-to-Site nebo ExpressRoute. Definujte kontrolery příchozího přenosu dat Kubernetes s privátními interními IP adresami, abyste omezili přístup služeb k internímu síťovému připojení.
Skupiny zabezpečení sítě Azure
K filtrování toku provozu virtuální sítě používá Azure pravidla skupin zabezpečení sítě. Tato pravidla definují rozsahy zdrojových a cílových IP adres, porty a protokoly, které mají povolený nebo zakázaný přístup k prostředkům. Vytvoří se výchozí pravidla, která povolí provoz protokolu TLS na server rozhraní API Kubernetes. Vytváříte služby s nástroji pro vyrovnávání zatížení, mapováním portů nebo trasami příchozího přenosu dat. Služba AKS automaticky upraví skupinu zabezpečení sítě pro tok provozu.
Pokud pro cluster AKS zadáte vlastní podsíť (bez ohledu na to, jestli používáte Azure CNI nebo Kubenet), neupravujte skupinu zabezpečení sítě na úrovni síťové karty spravovanou službou AKS. Místo toho vytvořte další skupiny zabezpečení sítě na úrovni podsítě a upravte tok provozu. Ujistěte se, že neruší potřebný provoz, který spravuje cluster, například přístup k nástroji pro vyrovnávání zatížení, komunikaci s řídicí rovinou nebo výchozí přenos dat.
Zásady sítě Kubernetes
Pro omezení síťového provozu mezi pody ve vašem clusteru nabízí AKS podporu pro zásady sítě Kubernetes. Pomocí zásad sítě můžete povolit nebo odepřít konkrétní síťové cesty v rámci clusteru na základě oborů názvů a selektorů popisků.
Application Security
Pokud chcete chránit pody spuštěné v AKS, zvažte Microsoft Defender for Containers , abyste zjistili a omezili kybernetické útoky proti vašim aplikacím běžícím ve vašich podech. Spusťte nepřetržité prohledávání, abyste zjistili odchylku ve stavu ohrožení zabezpečení vaší aplikace a implementovali proces "blue/green/canary", který opraví a nahradí ohrožené obrázky.
Zabezpečení přístupu ke kontejnerům k prostředkům
Stejně jako byste uživatelům nebo skupinám měli udělit minimální požadovaná oprávnění, měli byste také omezit kontejnery jenom na nezbytné akce a procesy. Abyste minimalizovali riziko útoku, vyhněte se konfiguraci aplikací a kontejnerů, které vyžadují eskalovaná oprávnění nebo kořenový přístup. Předdefinované funkce zabezpečení Linuxu, jako je AppArmor a seccomp , se doporučují jako osvědčené postupy pro [zabezpečení přístupu ke kontejnerům k prostředkům][secure-container-access].
Tajné klíče Kubernetes
S tajným kódem Kubernetes vložíte citlivá data do podů, jako jsou přihlašovací údaje pro přístup nebo klíče.
- Vytvořte tajný klíč pomocí rozhraní Kubernetes API.
- Definujte pod nebo nasazení a požádejte o konkrétní tajný klíč.
- Tajné kódy se poskytují jenom uzlům s naplánovaným podem, který je vyžaduje.
- Tajný kód je uložen v tmpfs, není zapsán na disk.
- Když odstraníte poslední pod na uzlu vyžadujícím tajný klíč, tajný klíč se odstraní z tmpfs uzlu.
- Tajné kódy jsou uložené v daném oboru názvů a jsou přístupné jenom z podů ve stejném oboru názvů.
Použití tajných kódů snižuje citlivé informace definované v manifestu YAML podu nebo služby. Místo toho si vyžádáte tajný kód uložený na serveru rozhraní API Kubernetes jako součást manifestu YAML. Tento přístup poskytuje přístup pouze ke konkrétnímu podu tajnému kódu.
Poznámka:
Nezpracované soubory manifestu tajného kódu obsahují tajná data ve formátu base64. Další informace najdete v oficiální dokumentaci. S těmito soubory zachází jako s citlivými informacemi a nikdy je neověříte do správy zdrojového kódu.
Tajné kódy Kubernetes jsou uložené v atd., distribuovaném úložišti klíč-hodnota. AKS plně spravuje úložiště etcd a neaktivní uložená data se šifrují v rámci platformy Azure.
Další kroky
Pokud chcete začít se zabezpečením clusterů AKS, přečtěte si téma Upgrade clusteru AKS.
Přidružené osvědčené postupy najdete v tématu Osvědčené postupy pro zabezpečení a upgrady clusteru v AKS a osvědčené postupy pro zabezpečení podů v AKS.
Další informace o základních konceptech Kubernetes a AKS najdete tady:
Azure Kubernetes Service