Použití bezpečnostních opatření nasazení k vynucení osvědčených postupů ve službě Azure Kubernetes Service (AKS) (Preview)
V tomto článku se dozvíte, jak pomocí bezpečnostních opatření nasazení vynutit osvědčené postupy v clusteru Azure Kubernetes Service (AKS).
Přehled
V průběhu životního cyklu vývoje dochází k chybám, problémům a dalším problémům, pokud počáteční nasazení prostředků Kubernetes zahrnuje chybné konfigurace. Kvůli usnadnění vývoje Kubernetes nabízí Služba Azure Kubernetes Service (AKS) ochranu nasazení (Preview). Ochrana nasazení vynucuje osvědčené postupy Kubernetes ve vašem clusteru AKS prostřednictvím ovládacích prvků Azure Policy.
Ochrana nasazení nabízí dvě úrovně konfigurace:
Warning
: Zobrazí v terminálu kódu upozornění, aby vás upozornily na všechny konfigurace clusteru nesplňující požadavky, ale přesto umožňuje požadavek projít.Enforcement
: Vynucuje kompatibilní konfigurace tím, že zamítá a ztlumí nasazení, pokud nedodržují osvědčené postupy.
Jakmile nakonfigurujete ochranu nasazení pro upozornění nebo vynucení, nasazení chrání programově vyhodnocuje clustery při vytváření nebo aktualizaci kvůli dodržování předpisů. Ochrana nasazení také zobrazuje agregované informace o dodržování předpisů napříč úlohami na úrovni jednotlivých prostředků prostřednictvím řídicího panelu dodržování předpisů služby Azure Policy na webu Azure Portal nebo v rozhraní příkazového řádku nebo terminálu. Spuštění nekompatibilní úlohy značí, že váš cluster nedodržuje osvědčené postupy a že úlohy v clusteru jsou ohrožené problémy způsobené konfigurací clusteru.
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi. Verze Preview jsou poskytovány "tak, jak jsou" a "dostupné", a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryty zákaznickou podporou na základě maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
Požadavky
Musíte povolit doplněk Azure Policy pro AKS. Další informace najdete v tématu Povolení služby Azure Policy v clusteru AKS.
Pokud chcete nakonfigurovat ochranu nasazení, musíte mít verzi
2.0.0b1
nebo novější rozšířeníaks-preview
. Pokud chcete rozšíření nainstalovat, přečtěte si téma Instalace rozšíření rozhraní příkazového řádku aks-preview. Doporučujeme také aktualizovat Azure CLI, abyste měli nainstalovanou nejnovější verzi.Pokud chcete vytvořit a upravit konfiguraci pro ochranu nasazení, potřebujete předplatné s následujícími oprávněními ke clusteru AKS:
- Microsoft.Authorization/policyAssignments/write
- Microsoft.Authorization/policyAssignments/read
Musíte zaregistrovat příznak funkce ochrany nasazení. Pokud chcete příznak funkce zaregistrovat, přečtěte si téma Registrace příznaku funkce pro ochranu nasazení.
Instalace rozšíření rozhraní příkazového řádku aks-preview
Nainstalujte rozšíření rozhraní příkazového
aks-preview
az extension add
řádku pomocí příkazu.az extension add --name aks-preview
Pomocí příkazu aktualizujte rozšíření, abyste měli nainstalovanou
az extension update
nejnovější verzi.az extension update --name aks-preview
Registrace příznaku funkce ochrany nasazení
SafeguardsPreview
Pomocí příkazu zaregistrujte příznakaz feature register
funkce.az feature register --namespace Microsoft.ContainerService --name SafeguardsPreview
Zobrazení stavu Zaregistrované trvá několik minut.
Pomocí příkazu ověřte stav
az feature show
registrace.az feature show --namespace Microsoft.ContainerService --name SafeguardsPreview
Jakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí
az provider register
příkazu.az provider register --namespace Microsoft.ContainerService
Zásady ochrany nasazení
Poznámka:
Tyto ReadOnlyRootFilesystem
zásady RootfilesystemInitContainers
jsou aktuálně dostupné jenom v Linuxu.
Následující tabulka uvádí zásady, které se stanou aktivními, a prostředky Kubernetes, na které cílí, když povolíte ochranu nasazení. Aktuálně dostupné záruky nasazení můžete zobrazit na webu Azure Portal jako definici služby Azure Policy nebo v předdefinovaných definicích služby Azure Kubernetes Service. Záměrem této kolekce je vytvořit společný a obecný seznam osvědčených postupů použitelných pro většinu uživatelů a případů použití.
Zásady ochrany nasazení | Cílový prostředek Kubernetes | Výsledek změny, pokud je k dispozici |
---|---|---|
[Preview]: Nejde upravit jednotlivé uzly | Uzel | – |
Omezení prostředků procesoru a paměti kontejnerů clusteru Kubernetes by neměla překročit zadaná omezení. | Pod | Nastaví omezení prostředků procesoru na 500 m, pokud není nastavená a nastaví limity paměti na 500Mi, pokud neexistuje žádná cesta. |
[Preview]: Musí mít nastavená pravidla proti spřažení. | Nasazení, StatefulSet, ReplicationController, ReplicaSet | – |
[Preview]: Žádné popisky specifické pro AKS | Nasazení, stavová sada, replika | – |
Kontejnery clusteru Kubernetes by měly používat jenom povolené image. | Pod | – |
[Preview]: Tainty vyhrazeného systémového fondu | Uzel | Odebere CriticalAddonsOnly taint z fondu uzlů uživatele, pokud není nastavený. AKS používá CriticalAddonsOnly taint k tomu, aby zákaznické pody zůstaly mimo systémový fond. Tato konfigurace zajišťuje jasné oddělení mezi komponentami AKS a pody zákazníků a zabraňuje vyřazení podů zákazníků, které netolerují CriticalAddonsOnly taint. |
Ujistěte se, že kontejnery clusteru mají nakonfigurované testy připravenosti nebo aktivity. | Pod | – |
Clustery Kubernetes by měly používat třídu StorageClass rozhraní úložiště kontejneru (CSI) | StorageClass | – |
[Preview]: Kontejnery clusteru Kubernetes by měly načítat image jenom v případě, že jsou k dispozici tajné kódy pro vyžádání image. | Pod | – |
[Preview]: Cluster Kubernetes by měl implementovat přesné rozpočty přerušení podů. | Nasazení, ReplikaSet, Stavová sada | Nastaví maxUnavailable v prostředku PodDisruptionBudget na 1. |
[Preview]: Clusterové služby Kubernetes by měly používat jedinečné selektory. | Služba | – |
[Preview]: ReadOnlyRootFilesystem Ve specifikaci podu je nastavená hodnota true |
Pod | Nastaví readOnlyRootFilesystem v specifikaci podu hodnotu true , pokud není nastavená. Tato konfigurace brání kontejnerům v zápisu do kořenového systému souborů. |
[Preview]: RootfilesystemInitContainers Ve specifikaci podu je nastavená hodnota true |
Pod | Nastaví rootFilesystemInitContainers v specifikaci podu hodnotu true , pokud není nastavená. |
[Preview]: Image kontejneru clusteru Kubernetes by neměly obsahovat nejnovější značku image. | Nasazení, StatefulSet, ReplicationController, ReplicaSet | – |
[Preview]: Image kontejneru clusteru Kubernetes musí obsahovat předpřipravený háček. | Nasazení, StatefulSet, ReplicationController, ReplicaSet | – |
Pokud chcete odeslat nápad nebo žádost o ochranu nasazení, otevřete problém v úložišti AKS na GitHubu a přidejte [deployment safeguards request]
ho na začátek názvu.
Povolení bezpečnostních opatření nasazení
Poznámka:
Pokud jste službu Azure Policy poprvé povolili k používání bezpečnostních opatření nasazení, možná budete muset počkat až 20 minut , než se azure Policy projeví.
Použití úrovně ochrany Enforcement
nasazení znamená, že se přihlašujete k blokování a ztlumení nasazení. Než povolíte, zvažte, jak tyto zásady můžou fungovat s clusterem Enforcement
AKS.
Povolení bezpečnostních opatření nasazení v novém clusteru
Povolte ochranu nasazení v novém clusteru pomocí az aks create
příkazu s příznaky --safeguards-level
a --safeguards-version
příznakem.
Pokud chcete dostávat upozornění na nedodržování předpisů, nastavte --safeguards-level
hodnotu Warning
. Pokud chcete zakázat nebo ztlumit všechna nevyhovující nasazení, nastavte ho na Enforcement
hodnotu . Chcete-li zobrazit upozornění, nastavte --safeguards-level
na hodnotu Upozornění. Pokud chcete zakázat nebo ztlumit všechna nasazení, která nedodržují bezpečnostní opatření nasazení, nastavte --safeguards-level
hodnotu Vynucení. Pokud chcete nastavit verzi ochrany nasazení, použijte příznak --safeguards-version
. V současné době je V2.0.0 nejnovější verzí bezpečnostních opatření pro nasazení.
az aks create \
--name myAKSCluster \
--resource-group myResourceGroup \
--enable-addons azure-policy \
--safeguards-level Warning \
--safeguards-version v2.0.0 \
--generate-ssh-keys
Povolení ochrany nasazení v existujícím clusteru
Povolte ochranu nasazení v existujícím clusteru s povoleným doplňkem Azure Policy pomocí az aks update
příkazu s příznakem --safeguards-level
a --safeguards-version
příznakem. Pokud chcete dostávat upozornění na nedodržování předpisů, nastavte --safeguards-level
hodnotu Warning
. Pokud chcete zakázat nebo ztlumit všechna nevyhovující nasazení, nastavte ho na Enforcement
hodnotu .
az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Enforcement --safeguards-version v2.0.0
Pokud chcete aktualizovat úroveň zabezpečení nasazení existujícího clusteru, použijte az aks update
příkaz s příznakem nastaveným --safeguards-level
na Warning
nebo Enforcement
.
az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Enforcement
Vyloučení oborů názvů
Z bezpečnostních opatření nasazení můžete také vyloučit určité obory názvů. Když vyloučíte obor názvů, aktivita v daném oboru názvů nemá vliv na upozornění nebo vynucení ochrany nasazení.
Pokud například chcete vyloučit obory ns1
názvů a ns2
použijte čárkami oddělený seznam oborů názvů s --safeguards-excluded-ns
příznakem, jak je znázorněno v následujícím příkladu:
az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Warning --safeguards-version v2.0.0 --safeguards-excluded-ns ns1,ns2
Aktualizace verze ochrany nasazení
Poznámka:
v2.0.0 je nejnovější verze bezpečnostních opatření nasazení.
Aktualizujte verzi ochrany nasazení pomocí az aks update
příkazu s --safeguards-version
příznakem nastaveným na novou verzi. Následující příklad aktualizuje existující cluster tak, aby používal verzi 2.0.0:
az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-version v2.0.0
Ověření dodržování předpisů napříč clustery
Po nasazení manifestu Kubernetes se v rozhraní příkazového řádku nebo terminálu zobrazí upozornění nebo potenciální zpráva o odepření, pokud cluster nedodržuje bezpečnostní opatření nasazení, jak je znázorněno v následujících příkladech:
Upozorňující
$ kubectl apply -f pod.yml
Warning: [azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <livenessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
Warning: [azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <readinessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
Warning: [azurepolicy-k8sazurev1restrictedlabels-67c4210cc58f28acdfdb] Label <{"kubernetes.azure.com"}> is reserved for AKS use only
Warning: [azurepolicy-k8sazurev3containerlimits-a8754961dbd4c1d8b49d] container <my-container> has no resource limits
Warning: [azurepolicy-k8sazurev1containerrestrictedi-bde07e1776cbcc9aa8b8] my-pod in default does not have imagePullSecrets. Unauthenticated image pulls are not recommended.
pod/my-pod created
Vynucení
Díky ochranným Enforcement
prostředkům nasazení ztlumí úroveň prostředků Kubernetes, pokud je to možné. Vaše prostředky Kubernetes ale stále potřebují předat všechna bezpečnostní opatření, aby se úspěšně nasadily. Pokud nějaké zásady ochrany selžou, váš prostředek se odepře a nebude nasazen.
$ kubectl apply -f pod.yml
Error from server (Forbidden): error when creating ".\pod.yml": admission webhook "validation.gatekeeper.sh" denied the request: [azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <livenessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
[azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <readinessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
[azurepolicy-k8sazurev2containerallowedimag-1ff6d14b2f8da22019d7] Container image my-image for container my-container has not been allowed.
[azurepolicy-k8sazurev1restrictedlabels-67c4210cc58f28acdfdb] Label <{"kubernetes.azure.com"}> is reserved for AKS use only
[azurepolicy-k8sazurev1containerrestrictedi-bde07e1776cbcc9aa8b8] my-pod in default does not have imagePullSecrets. Unauthenticated image pulls are not recommended.
Pokud vaše prostředky Kubernetes splňují příslušné bezpečnostní opatření pro mutaci a splňují všechny ostatní požadavky na ochranu, úspěšně se nasadí, jak je znázorněno v následujícím příkladu:
$ kubectl apply -f pod.yml
pod/my-pod created
Ověření dodržování předpisů napříč clustery pomocí řídicího panelu Azure Policy
Pokud chcete ověřit použití bezpečnostních opatření nasazení a zkontrolovat dodržování předpisů clusteru, přejděte na stránku webu Azure Portal pro váš cluster a vyberte Zásady a pak přejděte na Azure Policy.
V seznamu zásad a iniciativ vyberte iniciativu přidruženou k ochraně nasazení. Zobrazí se řídicí panel zobrazující stav dodržování předpisů v clusteru AKS.
Poznámka:
Aby bylo možné správně vyhodnotit dodržování předpisů v clusteru AKS, musí být iniciativa Azure Policy vymezená na skupinu prostředků vašeho clusteru.
Zakázání bezpečnostních opatření nasazení
Pomocí příkazu zakažte ochranu nasazení v clusteru az aks update
a nastavte na --safeguards-level
hodnotu Off
.
az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Off
--
Často kladené dotazy
Poprvé jsem povolil(a) ochranu nasazení se službou Azure Policy. Proč se mi nezobrazují žádná upozornění? Proč se moje pody neodmítají?
Synchronizace služby Azure Policy s clusterem může trvat až 35 minut, jakmile je poprvé povolená.
Právě jsem se přepnul z Upozornění na Vynucování. Projeví se to okamžitě?
Při přechodu na úroveň ochrany nasazení možná budete muset počkat až 15 minut, než se nová úroveň projeví.
Můžu si vytvořit vlastní mutaci?
Ne. Pokud máte nápad na ochranu, otevřete problém v úložišti AKS Na GitHubu a přidejte [deployment safeguards request]
ho na začátek názvu.
Můžu vybrat a zvolit, které muty chci v vynucení?
Ne. Ochrana nasazení je všechna nebo nic. Po zapnutí upozornění nebo vynucení budou všechna bezpečnostní opatření aktivní.
Proč byl prostředek nasazení přijat, i když neposlouchal osvědčené postupy?
Ochrana nasazení vynucuje standardy osvědčených postupů prostřednictvím ovládacích prvků Azure Policy a má zásady, které se ověřují proti prostředkům Kubernetes. K vyhodnocení a vynucování komponent clusteru azure Policy rozšiřuje Gatekeeper. Vynucování vrátného v současné době funguje také v fail-open
modelu. Protože neexistuje žádná záruka, že Gatekeeper bude reagovat na naše síťové volání, zajistíme, že v takovém případě se ověření přeskočí, aby odepření neblokoval vaše nasazení.
Další informace najdete v tématu Ověřování úloh v Gatekeeperu.
Další kroky
- Přečtěte si další informace o osvědčených postupech pro provoz clusteru AKS.
Azure Kubernetes Service