Principy Azure Policy pro clustery Kubernetes
Azure Policy rozšiřuje Gatekeeper v3, webhook kontroleru přístupu pro open policy agenta (OPA), aby na komponenty clusteru použil centralizovaným a konzistentním způsobem vynucení ve velkém měřítku a ochranu. Součástí clusteru jsou pody, kontejnery a obory názvů.
Azure Policy pro Kubernetes umožňuje na jednom místě spravovat a hlásit stav dodržování předpisů u součástí clusterů Kubernetes. Pomocí doplňku nebo rozšíření služby Azure Policy se řízení komponent clusteru vylepšuje funkcemi azure Policy, jako je možnost používat selektory a přepsání pro bezpečné zavedení a vrácení zásad zpět.
Azure Policy pro Kubernetes podporuje následující prostředí clusteru:
- Azure Kubernetes Service (AKS) prostřednictvím doplňku Azure Policy pro AKS
- Kubernetes s podporou Azure Arc prostřednictvím rozšíření azure Policy pro Arc
Důležité
Model Helm doplňku Azure Policy a doplněk pro modul AKS jsou zastaralé. Podle pokynů doplňky odeberte.
Přehled
Když na clustery Kubernetes nainstalujete doplněk nebo rozšíření služby Azure Policy, Azure Policy provede následující funkce:
- Kontroluje přiřazení zásad ke clusteru pomocí služby Azure Policy.
- Nasadí definice zásad do clusteru jako šablonu omezení a vlastní prostředky omezení nebo jako prostředek šablony pro předmětu (v závislosti na obsahu definice zásad).
- Vykazuje podrobnosti o auditování a dodržování předpisů zpět do služby Azure Policy.
Pokud chcete povolit a používat Azure Policy s clusterem Kubernetes, proveďte následující akce:
Nakonfigurujte cluster Kubernetes a nainstalujte doplněk Azure Kubernetes Service (AKS) nebo rozšíření Azure Policy pro clustery Kubernetes s podporou arc (v závislosti na typu clusteru).
Poznámka:
Běžné problémy s instalací najdete v tématu Řešení potíží – doplněk Azure Policy.
Vytvoření nebo použití ukázkové definice služby Azure Policy pro Kubernetes
Kontrola omezení a doporučení v oddílu Nejčastější dotazy
Instalace doplňku Azure Policy pro AKS
Doplněk Azure Policy pro AKS je součástí Kubernetes verze 1.27 s dlouhodobou podporou (LTS).
Požadavky
Zaregistrujte poskytovatele prostředků a funkce preview.
Azure Portal:
Zaregistrujte
Microsoft.PolicyInsights
poskytovatele prostředků. Postup najdete v tématu Poskytovatelé a typy prostředků.Azure CLI:
# Log in first with az login if you're not using Cloud Shell # Provider register: Register the Azure Policy provider az provider register --namespace Microsoft.PolicyInsights
Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI 2.12.0 nebo novější. Verzi najdete spuštěním
az --version
příkazu. Pokud potřebujete nainstalovat nebo upgradovat, přečtěte si, jak nainstalovat Azure CLI.Cluster AKS musí být podporovanou verzí Kubernetes ve službě Azure Kubernetes Service (AKS). K ověření verze clusteru AKS použijte následující skript:
# Log in first with az login if you're not using Cloud Shell # Look for the value in kubernetesVersion az aks list
Otevřete porty pro rozšíření Azure Policy. Rozšíření Azure Policy používá tyto domény a porty k načtení definic zásad a přiřazení a hlášení dodržování předpisů clusteru zpět do služby Azure Policy.
Doména Port data.policy.core.windows.net
443
store.policy.core.windows.net
443
login.windows.net
443
dc.services.visualstudio.com
443
Po dokončení požadavků nainstalujte doplněk Azure Policy do clusteru AKS, který chcete spravovat.
portál Azure
Spusťte službu AKS na webu Azure Portal tak, že vyberete Všechny služby a pak vyhledáte a vyberete služby Kubernetes.
Vyberte jeden z clusterů AKS.
Na levé straně stránky služby Kubernetes vyberte zásady .
Na hlavní stránce vyberte tlačítko Povolit doplněk .
Azure CLI
# Log in first with az login if you're not using Cloud Shell az aks enable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
Spuštěním následujícího příkazu ověřte, že instalace doplňku proběhla úspěšně a jestli jsou spuštěné pody azure-policy a gatekeeper :
# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system
# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system
Nakonec ověřte, že je nainstalovaný nejnovější doplněk, spuštěním tohoto příkazu Azure CLI a nahrazením <rg>
názvu vaší skupiny prostředků a <cluster-name>
názvem clusteru AKS: az aks show --query addonProfiles.azurepolicy -g <rg> -n <cluster-name>
Výsledek by měl vypadat podobně jako následující výstup pro clustery používající instanční objekty:
{
"config": null,
"enabled": true,
"identity": null
}
A následující výstup pro clustery používající spravovanou identitu:
{
"config": null,
"enabled": true,
"identity": {
"clientId": "########-####-####-####-############",
"objectId": "########-####-####-####-############",
"resourceId": "<resource-id>"
}
}
Instalace rozšíření Azure Policy pro Kubernetes s podporou Služby Azure Arc
Azure Policy pro Kubernetes umožňuje spravovat a hlásit stav dodržování předpisů clusterů Kubernetes z jednoho místa. S rozšířením Azure Policy pro clustery Kubernetes s podporou arc můžete řídit komponenty clusteru Kubernetes s podporou Arc, jako jsou pody a kontejnery.
Tento článek popisuje, jak vytvořit, zobrazit stav rozšíření a odstranit rozšíření Azure Policy pro Kubernetes.
Přehled platformy rozšíření najdete v tématu Rozšíření clusteru Azure Arc.
Požadavky
Pokud jste už nasadili Azure Policy pro Kubernetes v clusteru Azure Arc pomocí Helmu přímo bez rozšíření, odstraňte chart Helm podle pokynů. Po dokončení odstranění můžete pokračovat.
Ujistěte se, že váš cluster Kubernetes používá podporovanou distribuci.
Poznámka:
Rozšíření Azure Policy for Arc se podporuje v následujících distribucích Kubernetes.
Ujistěte se, že jste splnili všechny běžné požadavky na tady uvedená rozšíření Kubernetes, včetně připojení clusteru ke službě Azure Arc.
Poznámka:
Rozšíření Azure Policy se podporuje pro clustery Kubernetes s podporou Arc v těchto oblastech.
Otevřete porty pro rozšíření Azure Policy. Rozšíření Azure Policy používá tyto domény a porty k načtení definic zásad a přiřazení a hlášení dodržování předpisů clusteru zpět do služby Azure Policy.
Doména Port data.policy.core.windows.net
443
store.policy.core.windows.net
443
login.windows.net
443
dc.services.visualstudio.com
443
Než nainstalujete rozšíření Azure Policy nebo povolíte některou z funkcí služby, musí vaše předplatné povolit
Microsoft.PolicyInsights
poskytovatele prostředků.Poznámka:
Pokud chcete poskytovatele prostředků povolit, postupujte podle pokynů v poskytovatelích prostředků a typech nebo spusťte příkaz Azure CLI nebo Azure PowerShellu.
Azure CLI
# Log in first with az login if you're not using Cloud Shell # Provider register: Register the Azure Policy provider az provider register --namespace 'Microsoft.PolicyInsights'
Azure PowerShell
# Log in first with Connect-AzAccount if you're not using Cloud Shell # Provider register: Register the Azure Policy provider Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
Vytvoření rozšíření Azure Policy
Poznámka:
Pro vytvoření rozšíření Azure Policy si poznamenejte následující:
- Ve výchozím nastavení je povolený automatický upgrade, který aktualizuje podverzi rozšíření Azure Policy, pokud se nasadí nějaké nové změny.
- Všechny proměnné proxy serveru předané jako parametry
connectedk8s
se rozšíří do rozšíření Azure Policy, aby podporovalo odchozí proxy server.
Pokud chcete vytvořit instanci rozšíření, spusťte pro cluster s podporou Arc následující příkaz, který nahrazuje <>
vaše hodnoty:
az k8s-extension create --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --extension-type Microsoft.PolicyInsights --name <EXTENSION_INSTANCE_NAME>
Příklad:
az k8s-extension create --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --extension-type Microsoft.PolicyInsights --name azurepolicy
Příklad výstupu:
{
"aksAssignedIdentity": null,
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": {},
"configurationSettings": {},
"customLocationSettings": null,
"errorInfo": null,
"extensionType": "microsoft.policyinsights",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-test-rg/providers/Microsoft.Kubernetes/connectedClusters/my-test-cluster/providers/Microsoft.KubernetesConfiguration/extensions/azurepolicy",
"identity": {
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": null,
"type": "SystemAssigned"
},
"location": null,
"name": "azurepolicy",
"packageUri": null,
"provisioningState": "Succeeded",
"releaseTrain": "Stable",
"resourceGroup": "my-test-rg",
"scope": {
"cluster": {
"releaseNamespace": "kube-system"
},
"namespace": null
},
"statuses": [],
"systemData": {
"createdAt": "2021-10-27T01:20:06.834236+00:00",
"createdBy": null,
"createdByType": null,
"lastModifiedAt": "2021-10-27T01:20:06.834236+00:00",
"lastModifiedBy": null,
"lastModifiedByType": null
},
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "1.1.0"
}
Zobrazení rozšíření Azure Policy
Pokud chcete zkontrolovat úspěšné vytvoření instance rozšíření a zkontrolovat metadata rozšíření, spusťte následující příkaz, který nahrazuje <>
vaše hodnoty:
az k8s-extension show --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>
Příklad:
az k8s-extension show --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --name azurepolicy
Pokud chcete ověřit, že instalace rozšíření proběhla úspěšně a že jsou spuštěné pody azure-policy a gatekeeper, spusťte následující příkaz:
# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system
# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system
Odstranění rozšíření Azure Policy
Pokud chcete odstranit instanci rozšíření, spusťte následující příkaz, kterým nahraďte <>
hodnoty:
az k8s-extension delete --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>
Vytvoření definice zásady
Struktura jazyka Azure Policy pro správu Kubernetes se řídí stávajícími definicemi zásad. K dispozici jsou ukázkové definiční soubory, které můžete přiřadit v integrované knihovně zásad služby Azure Policy, která se dá použít k řízení komponent clusteru.
Azure Policy pro Kubernetes také podporuje vytváření vlastních definic na úrovni komponent pro clustery Azure Kubernetes Service i clustery Kubernetes s podporou Azure Arc. Ukázky šablony omezení a šablony pro protěžování šablon jsou k dispozici v knihovně komunity Gatekeeperu. Rozšíření editoru Visual Studio Code pro Azure Policy je možné použít k překladu existující šablony omezení nebo šablony pro šablonu s předělanou šablonou na vlastní definici zásad Azure Policy.
V režimu Microsoft.Kubernetes.Data
poskytovatele prostředků se k správě clusterů Kubernetes používají efekty auditu, zamítnutí, zakázání a ztlumení.
Audit a zamítnutí musí poskytovat details
vlastnosti specifické pro práci s architekturou omezení OPA a gatekeeperem v3.
V rámci vlastností details.templateInfo nebo details.constraintInfo v definici zásady předá Azure Policy identifikátor URI nebo Base64Encoded
hodnotu těchto customResourceDefinitions(CRD) doplňku. Rego je jazyk, který podporuje OPA a Gatekeeper k ověření požadavku na cluster Kubernetes. Díky podpoře stávajícího standardu pro správu Kubernetes umožňuje Azure Policy opakovaně používat stávající pravidla a spárovat je se službou Azure Policy pro jednotné prostředí generování sestav dodržování předpisů v cloudu. Další informace naleznete v tématu Co je Rego?.
Přiřazení definice zásady
Pokud chcete přiřadit definici zásad ke clusteru Kubernetes, musíte mít přiřazené odpovídající operace přiřazení zásad na základě role v Azure (Azure RBAC). Tyto operace mají předdefinované role Přispěvatel zásad prostředků Azure a vlastník . Další informace najdete v tématu Oprávnění Azure RBAC ve službě Azure Policy.
Následující kroky vám pomůžou najít předdefinované definice zásad pro správu clusteru pomocí webu Azure Portal. Pokud používáte vlastní definici zásad, vyhledejte ji podle názvu nebo kategorie, se kterou jste ji vytvořili.
Spusťte službu Azure Policy na webu Azure Portal. V levém podokně vyberte Všechny služby a vyhledejte a vyberte Zásady.
V levém podokně stránky Azure Policy vyberte Definice.
V rozevíracím seznamu Kategorie pomocí příkazu Vybrat vše zrušte zaškrtnutí filtru a pak vyberte Kubernetes.
Vyberte definici zásady a pak vyberte tlačítko Přiřadit .
Nastavte obor na skupinu pro správu, předplatné nebo skupinu prostředků clusteru Kubernetes, kde platí přiřazení zásad.
Poznámka:
Při přiřazování definice Azure Policy pro Kubernetes musí obor zahrnovat prostředek clusteru.
Přiřazovat zásady název a popis, které můžete použít k jeho snadné identifikaci.
Nastavte vynucení zásad na jednu z následujících hodnot:
Povoleno – Vynucujte zásadu v clusteru. Žádosti o přístup Kubernetes s porušením jsou odepřeny.
Zakázáno – Nevynucujte zásadu v clusteru. Požadavky na přístup Kubernetes s porušením nejsou odepřeny. Výsledky posouzení dodržování předpisů jsou stále k dispozici. Když pro spuštěné clustery zavedete nové definice zásad, je pro testování definice zásady užitečná možnost Zakázáno , protože požadavky na přístup s porušením nejsou odepřeny.
Vyberte Další.
Nastavení hodnot parametrů
- Pokud chcete vyloučit obory názvů Kubernetes z vyhodnocení zásad, zadejte seznam oborů názvů v vyloučeních oboru názvů parametrů. Doporučení je vyloučit: kube-system, gatekeeper-system a azure-arc.
Vyberte Zkontrolovat a vytvořit.
Případně pomocí rychlého startu Přiřadit zásadu – Portál vyhledejte a přiřaďte zásady Kubernetes. Místo ukázkových virtuálních počítačů auditu vyhledejte definici zásady Kubernetes.
Důležité
Integrované definice zásad jsou k dispozici pro clustery Kubernetes v kategorii Kubernetes. Seznam předdefinovaných definic zásad najdete v ukázkách Kubernetes.
Vyhodnocení zásad
Doplněk kontroluje změny přiřazení zásad ve službě Azure Policy každých 15 minut. Během tohoto cyklu aktualizace doplněk kontroluje změny. Tyto změny aktivují vytvoření, aktualizaci nebo odstranění šablon omezení a omezení.
Pokud má obor názvů v clusteru Kubernetes popisek odpovídající clusteru, požadavky na přístup s porušením nejsou odepřeny. Výsledky posouzení dodržování předpisů jsou stále k dispozici.
- Cluster Kubernetes s podporou Azure Arc:
admission.policy.azure.com/ignore
Poznámka:
I když správce clusteru může mít oprávnění k vytváření a aktualizaci šablon omezení a prostředků omezení nainstalovaných doplňkem Azure Policy, tyto scénáře se nepodporují, protože se přepisují ruční aktualizace. Gatekeeper dál vyhodnocuje zásady, které existovaly před instalací doplňku a přiřazením definic zásad Azure Policy.
Doplněk každých 15 minut volá úplnou kontrolu clusteru. Po shromáždění podrobností o úplné kontrole a případných vyhodnoceních pokusů o změny clusteru v reálném čase řešením Gatekeeper nahlásí doplněk výsledky zpět do služby Azure Policy, která je zahrne do podrobností o dodržování předpisů podobně jako jakékoli přiřazení Azure Policy. Během cyklu auditu se vrátí pouze výsledky týkající se aktivních přiřazení zásad. Výsledky auditu je také možné zobrazit jako porušení uvedená v poli stavu neúspěšného omezení. Podrobnosti o nekompatibilních prostředcích najdete v podrobnostech o komponentách pro režimy poskytovatele prostředků.
Poznámka:
Každá sestava dodržování předpisů ve službě Azure Policy pro clustery Kubernetes zahrnuje všechna porušení za posledních 45 minut. Časové razítko označuje, kdy došlo k narušení.
Další aspekty:
Pokud je předplatné clusteru zaregistrované v programu Microsoft Defender for Cloud, použijí se v clusteru automaticky zásady Microsoft Defenderu for Cloud Kubernetes.
Pokud se na clusteru s existujícími prostředky Kubernetes použije zásada zamítnutí, všechny existující prostředky, které nevyhovují novým zásadám, budou nadále spuštěné. Pokud se prostředek nedodržující předpisy přeplánuje na jiném uzlu, gatekeeper zablokuje vytvoření prostředku.
Pokud má cluster zásadu zamítnutí, která ověřuje prostředky, uživateli se při vytváření nasazení nezobrazí zpráva o zamítnutí. Představte si například nasazení Kubernetes, které obsahuje
replicasets
a pody. Když se uživatel spustíkubectl describe deployment $MY_DEPLOYMENT
, nevrátí zprávu o zamítnutí jako součást událostí.kubectl describe replicasets.apps $MY_DEPLOYMENT
Vrátí však události spojené se zamítnutím.
Poznámka:
Kontejnery inicializačních objektů můžou být zahrnuté během vyhodnocování zásad. Pokud chcete zjistit, jestli jsou zahrnuté kontejnery inicializačních objektů, projděte si CRD pro následující nebo podobnou deklaraci:
input_containers[c] {
c := input.review.object.spec.initContainers[_]
}
Konflikty šablon omezení
Pokud mají šablony omezení stejný název metadat prostředků, ale definice zásady odkazuje na zdroj v různých umístěních, definice zásad se považují za konfliktní. Příklad: Dvě definice zásad odkazují na stejný template.yaml
soubor uložený v různých zdrojových umístěních, jako je úložiště šablon Azure Policy (store.policy.core.windows.net
) a GitHub.
Pokud jsou definice zásad a jejich šablony omezení přiřazené, ale ještě nejsou nainstalované v clusteru a jsou v konfliktu, budou hlášeny jako konflikt a nebudou nainstalovány do clusteru, dokud se konflikt nevyřeší. Stejně tak všechny existující definice zásad a jejich šablony omezení, které jsou již v clusteru, které jsou v konfliktu s nově přiřazenými definicemi zásad, nadále fungují normálně. Pokud se aktualizuje existující přiřazení a dojde k selhání synchronizace šablony omezení, cluster se také označí jako konflikt. Všechny konfliktní zprávy najdete v důvodech dodržování předpisů v režimu poskytovatele prostředků AKS.
Protokolování
Jako kontroler/kontejner Kubernetes uchovává pody Azure-Policy i vrátného protokoly v clusteru Kubernetes. Obecně platí, že protokoly azure-policy je možné použít k řešení problémů s příjmem zásad do clusteru a generování sestav dodržování předpisů. Protokoly podů gatekeeper-controller-manager je možné použít k řešení potíží s odepřeným modulem runtime. Protokoly podu gatekeeper-audit je možné použít k řešení potíží s audity stávajících prostředků. Protokoly je možné zobrazit na stránce Přehledy clusteru Kubernetes. Další informace najdete v tématu Monitorování výkonu clusteru Kubernetes s využitím služby Azure Monitor pro kontejnery.
Pokud chcete zobrazit protokoly doplňku, použijte kubectl
:
# Get the azure-policy pod name installed in kube-system namespace
kubectl logs <azure-policy pod name> -n kube-system
# Get the gatekeeper pod name installed in gatekeeper-system namespace
kubectl logs <gatekeeper pod name> -n gatekeeper-system
Pokud se pokoušíte vyřešit konkrétní kód complianceReasonCode, který se zobrazuje ve výsledcích dodržování předpisů, můžete vyhledat protokoly podů azure-policy a zobrazit úplnou doprovodnou chybu.
Další informace najdete v části věnované ladění řešení Gatekeeper v dokumentaci k řešení Gatekeeper.
Zobrazení artefaktů Gatekeeperu
Jakmile doplněk stáhne přiřazení zásad a nainstaluje šablony omezení a omezení v clusteru, přidá do něj poznámky informace o službě Azure Policy, jako je ID přiřazení zásady a ID definice zásady. Ke konfiguraci klienta pro zobrazení artefaktů souvisejících s doplňky použijte následující kroky:
Nastavte
kubeconfig
cluster.V případě clusteru Azure Kubernetes Service použijte následující Azure CLI:
# Set context to the subscription az account set --subscription <YOUR-SUBSCRIPTION> # Save credentials for kubeconfig into .kube in your home folder az aks get-credentials --resource-group <RESOURCE-GROUP> --name <CLUSTER-NAME>
Otestujte připojení clusteru.
Spusťte příkaz
kubectl cluster-info
. Úspěšné spuštění má každou službu, která odpovídá adresou URL místa, kde je spuštěná.
Zobrazení šablon omezení doplňku
Pokud chcete zobrazit šablony omezení stažené doplňkem, spusťte kubectl get constrainttemplates
příkaz .
Šablony omezení, které začínají, k8sazure
jsou ty, které doplněk instaluje.
Zobrazení šablon doplňků pro natěchování
Chcete-li zobrazit šablony s příponou stažené doplňkem, spusťte kubectl get assign
, kubectl get assignmetadata
a kubectl get modifyset
.
Získání mapování Azure Policy
K identifikaci mapování mezi šablonou omezení staženou do clusteru a definicí zásad použijte kubectl get constrainttemplates <TEMPLATE> -o yaml
. Výsledky vypadají podobně jako v následujícím výstupu:
apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
annotations:
azure-policy-definition-id: /subscriptions/<SUBID>/providers/Microsoft.Authorization/policyDefinitions/<GUID>
constraint-template-installed-by: azure-policy-addon
constraint-template: <URL-OF-YAML>
creationTimestamp: "2021-09-01T13:20:55Z"
generation: 1
managedFields:
- apiVersion: templates.gatekeeper.sh/v1beta1
fieldsType: FieldsV1
...
<SUBID>
je ID předplatného a <GUID>
je ID mapované definice zásady.
<URL-OF-YAML>
je zdrojové umístění šablony omezení, kterou doplněk stáhl pro instalaci do clusteru.
Zobrazení omezení souvisejících se šablonou omezení
Jakmile budete mít názvy stažených šablon omezení doplňku, můžete ho použít k zobrazení souvisejících omezení. Slouží kubectl get <constraintTemplateName>
k získání seznamu.
Omezení nainstalovaná doplňkem začínají na azurepolicy-
.
Zobrazení podrobností omezení
Omezení obsahuje podrobnosti o porušeních a mapováních na definici a přiřazení zásady. Pokud chcete zobrazit podrobnosti, použijte kubectl get <CONSTRAINT-TEMPLATE> <CONSTRAINT> -o yaml
. Výsledky vypadají podobně jako v následujícím výstupu:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAzureContainerAllowedImages
metadata:
annotations:
azure-policy-assignment-id: /subscriptions/<SUB-ID>/resourceGroups/<RG-NAME>/providers/Microsoft.Authorization/policyAssignments/<ASSIGNMENT-GUID>
azure-policy-definition-id: /providers/Microsoft.Authorization/policyDefinitions/<DEFINITION-GUID>
azure-policy-definition-reference-id: ""
azure-policy-setdefinition-id: ""
constraint-installed-by: azure-policy-addon
constraint-url: <URL-OF-YAML>
creationTimestamp: "2021-09-01T13:20:55Z"
spec:
enforcementAction: deny
match:
excludedNamespaces:
- kube-system
- gatekeeper-system
- azure-arc
parameters:
imageRegex: ^.+azurecr.io/.+$
status:
auditTimestamp: "2021-09-01T13:48:16Z"
totalViolations: 32
violations:
- enforcementAction: deny
kind: Pod
message: Container image nginx for container hello-world has not been allowed.
name: hello-world-78f7bfd5b8-lmc5b
namespace: default
- enforcementAction: deny
kind: Pod
message: Container image nginx for container hello-world has not been allowed.
name: hellow-world-89f8bfd6b9-zkggg
Řešení potíží s doplňkem
Další informace o řešení potíží s doplňkem pro Kubernetes najdete v části Kubernetes v článku o řešení potíží se službou Azure Policy.
Informace o problémech souvisejících s rozšířením Azure Policy pro rozšíření Arc naleznete v těchto tématech:
V případě problémů souvisejících se službou Azure Policy přejděte na:
Doplněk Azure Policy pro protokol změn AKS
Doplněk azure Policy pro AKS má číslo verze, které označuje verzi doplňku image. Vzhledem k tomu, že podpora funkcí je nově zavedena v doplňku, zvýší se číslo verze.
Tato část vám pomůže určit, která verze doplňku je nainstalovaná v clusteru, a také sdílet historickou tabulku verze doplňku Azure Policy nainstalovanou pro cluster AKS.
Určení verze doplňku, která je nainstalovaná v clusteru
Doplněk Azure Policy používá standardní schéma sémantické správy verzí pro každou verzi. Pokud chcete identifikovat používanou verzi doplňku Azure Policy, můžete spustit následující příkaz: kubectl get pod azure-policy-<unique-pod-identifier> -n kube-system -o json | jq '.spec.containers[0].image'
Pokud chcete zjistit verzi Gatekeeperu, kterou váš doplněk Azure Policy používá, můžete spustit následující příkaz: kubectl get pod gatekeeper-controller-<unique-pod-identifier> -n gatekeeper-system -o json | jq '.spec.containers[0].image'
Nakonec pomocí propojených pokynů AKS identifikujte verzi clusteru AKS, kterou používáte.
Dostupné verze doplňků pro každou verzi clusteru AKS
1.7.1
Představujeme CEL a VAP. Common Expression Language (CEL) je jazyk nativního výrazu Kubernetes, který lze použít k deklaraci ověřovacích pravidel zásad. Funkce ověřování zásad přístupu (VAP) poskytuje vyhodnocení zásad ve stromové struktuře, snižuje latenci požadavků na přístup a zlepšuje spolehlivost a dostupnost. Mezi podporované ověřovací akce patří Odepření, Upozornění a Audit. Vlastní vytváření zásad pro CEL/VAP je povolené a stávající uživatelé nebudou muset převést rego na CEL, protože budou podporovány a budou použity k vynucení zásad. Pokud chcete používat CEL a VAP, musí se uživatelé zaregistrovat do příznaku AKS-AzurePolicyK8sNativeValidation
Microsoft.ContainerService
funkce v oboru názvů. Další informace najdete v dokumentaci gatekeeperu.
Vylepšení zabezpečení
- Vydáno zář 2024
- Kubernetes 1.27 nebo novější (generování VAP se podporuje jenom ve verzi 1.30+)
- Vrátný 3.17.1
1.7.0
Představujeme rozšíření, funkci posunu doleva, která vám umožní předem zjistit, jestli vaše prostředky úloh (nasazení, repliky, úlohy atd.) vytvoří přípustné pody. Rozšíření by nemělo měnit chování vašich zásad; Místo doby přijetí podu se přesune vyhodnocení zásad omezených na pody gatekeepera, aby se místo doby přijetí podů vyskytla v době přijetí úloh. K provedení tohoto vyhodnocení však musí vygenerovat a vyhodnotit pod citlivostní analýzy, který je založený na specifikaci podu definované v úloze, což může mít neúplná metadata. Například pod citlivostní citlivost nebude obsahovat správné odkazy na vlastníka. Kvůli tomuto malému riziku změny chování zásad zavádíme ve výchozím nastavení rozšíření jako zakázané. Chcete-li povolit rozšíření pro danou definici zásady, nastavte na All
hodnotu .policyRule.then.details.source
. Předdefinované iny budou brzy aktualizovány, aby bylo možné parametrizaci tohoto pole povolit. Pokud otestujete definici zásad a zjistíte, že pod citlivostní analýza generovaný pro účely vyhodnocení je neúplný, můžete také použít mutaci se zdrojem Generated
ke ztlumení podů citlivostní analýzy. Další informace o této možnosti najdete v dokumentaci Gatekeeper.
Vylepšení zabezpečení
- Vydáno v červenci 2024
- Kubernetes 1.27 nebo novější
- Vrátný 3.16.3
1.6.1
Vylepšení zabezpečení
- Vydáno v květnu 2024
- Vrátný 3.14.2
1.5.0
Vylepšení zabezpečení
- Vydáno v květnu 2024
- Kubernetes 1.27 nebo novější
- Vrátný 3.16.3
1.4.0
Povoluje ve výchozím nastavení mutaci a externí data. Další ztlumení webhooku a zvýšení limitu časového limitu webhooku může zvýšit latenci volání v nejhorším případě. Zavádí také podporu zobrazení definice zásad a nastavení verze definice ve výsledcích dodržování předpisů.
- Vydáno v květnu 2024
- Kubernetes 1.25 nebo novější
- Vrátný 3.14.0
1.3.0
Zavádí stav chyby pro zásady, které se chybují, a umožňuje je odlišit od zásad v nekompatibilních stavech. Přidá podporu pro šablony omezení verze 1 a použití parametru excludedNamespaces v zásadách s mutací. Přidá kontrolu stavu chyby u šablon omezení po instalaci.
- Vydáno v únoru 2024
- Kubernetes 1.25 nebo novější
- Vrátný 3.14.0
1.2.1
- Vydáno říjen 2023
- Kubernetes 1.25 nebo novější
- Vrátný 3.13.3
1.1.0
- Vydáno v červenci 2023
- Kubernetes 1.27 nebo novější
- Vrátný 3.11.1
1.0.1
- Vydáno v červnu 2023
- Kubernetes 1.24 nebo novější
- Vrátný 3.11.1
1.0.0
Azure Policy pro Kubernetes teď podporuje mutaci pro nápravu clusterů AKS ve velkém měřítku.
Odebrání doplňku
Odebrání doplňku z AKS
Pokud chcete doplněk Azure Policy z clusteru AKS odebrat, použijte Azure Portal nebo Azure CLI:
portál Azure
Spusťte službu AKS na webu Azure Portal tak, že vyberete Všechny služby a pak vyhledáte a vyberete služby Kubernetes.
Vyberte cluster AKS, ve kterém chcete doplněk Azure Policy zakázat.
Na levé straně stránky služby Kubernetes vyberte zásady .
Na hlavní stránce vyberte tlačítko Zakázat doplněk .
Azure CLI
# Log in first with az login if you're not using Cloud Shell az aks disable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
Odebrání doplňku z Kubernetes s podporou Služby Azure Arc
Poznámka:
Model Helm doplňku Azure Policy je teď zastaralý. Místo toho byste měli zvolit rozšíření Azure Policy pro Kubernetes s podporou Azure Arc.
Pokud chcete z clusteru Kubernetes s podporou Azure Arc odebrat doplněk Azure Policy a Gatekeeper, spusťte následující příkaz Helm:
helm uninstall azure-policy-addon
Odebrání doplňku z modulu AKS
Poznámka:
Produkt AKS Engine je teď pro zákazníky veřejného cloudu Azure zastaralý. Zvažte použití služby Azure Kubernetes Service (AKS) pro spravovaného poskytovatele rozhraní Kubernetes nebo poskytovatele rozhraní CLUSTER API v Azure pro samospravované Kubernetes. Nejsou naplánovány žádné nové funkce; tento projekt bude aktualizován pouze pro cve a podobné verze s Kubernetes 1.24 jako finální verzí pro příjem aktualizací.
Pokud chcete z clusteru modulu AKS odebrat doplněk Azure Policy a Gatekeeper, použijte metodu, která odpovídá způsobu instalace doplňku:
Pokud je nainstalovaná nastavením vlastnosti addons v definici clusteru pro modul AKS:
Po změně vlastnosti doplňků pro azure-policy na false znovu nasaďte definici clusteru do modulu AKS:
"addons": [ { "name": "azure-policy", "enabled": false } ]
Další informace najdete v tématu Modul AKS – Zakázání doplňku Azure Policy.
Pokud je nainstalovaná s Helm Charts, spusťte následující příkaz Helm:
helm uninstall azure-policy-addon
Omezení
- Obecné definice a limity přiřazení služby Azure Policy najdete v dokumentovaných limitech služby Azure Policy.
- Doplněk Azure Policy pro Kubernetes se dá nasadit jenom do fondů uzlů Linuxu.
- Maximální počet podů podporovaných doplňkem Azure Policy na cluster: 10 000
- Maximální počet nekompatibilních záznamů na jednu zásadu na cluster: 500
- Maximální počet záznamů nedodržovaných předpisů na předplatné: 1 milion
- Instalace Gatekeeperu mimo doplněk Azure Policy se nepodporují. Před povolením doplňku Azure Policy odinstalujte všechny komponenty nainstalované předchozí instalací Gatekeeperu.
- Důvody nedodržování předpisů nejsou k dispozici pro režim poskytovatele prostředků Microsoft.Kubernetes.Data. Použijte podrobnosti o komponentě.
- Výjimky na úrovni komponent nejsou podporovány pro režimy poskytovatele prostředků. Podpora parametrů je k dispozici v definicích služby Azure Policy pro vyloučení a zahrnutí konkrétních oborů názvů.
metadata.gatekeeper.sh/requires-sync-data
Použití poznámek v šabloně omezení ke konfiguraci replikace dat z clusteru do mezipaměti OPA je v současné době povoleno pouze pro předdefinované zásady. Důvodem je, že může výrazně zvýšit využití prostředků gatekeeperových podů, pokud se nepoužívá pečlivě.
Konfigurace konfigurace Gatekeeperu
Změna konfigurace Gatekeeperu není podporována, protože obsahuje důležitá nastavení zabezpečení. Úpravy konfigurace jsou odsouhlasené.
Použití data.inventory v šablonách omezení
V současné době využívá replikace dat několik předdefinovaných zásad, které uživatelům umožňují synchronizovat stávající prostředky v clusteru s mezipapa a odkazovat na ně během vyhodnocení AdmissionReview
žádosti. Zásady replikace dat se dají odlišit od přítomnosti data.inventory
v registru a přítomností metadata.gatekeeper.sh/requires-sync-data
poznámky, která informuje doplněk Azure Policy, které prostředky je potřeba ukládat do mezipaměti, aby vyhodnocení zásad fungovalo správně. Tento proces se liší od samostatného Gatekeepera, kde je tato poznámka popisná, nikoli popisná.
Replikace dat je aktuálně blokovaná pro použití v definicích vlastních zásad, protože replikace prostředků s vysokým počtem instancí může výrazně zvýšit využití prostředků podů Gatekeeper, pokud nejsou pečlivě používány. Při pokusu ConstraintTemplateInstallFailed
o vytvoření vlastní definice zásady obsahující šablonu omezení s touto poznámkou se zobrazí chyba.
Při odebrání poznámky se může zobrazit zmírnění zobrazené chyby, ale doplněk zásad nesynchronizuje žádné požadované prostředky pro tuto šablonu omezení do mezipaměti. Proto se vaše zásady vyhodnotí jako prázdné data.inventory
(za předpokladu, že není přiřazen žádný předdefinovaný, který replikuje požadované prostředky). To povede k zavádějícím výsledkům dodržování předpisů. Jak jsme si poznamenali dříve, ruční úprava konfigurace pro ukládání požadovaných prostředků do mezipaměti také není povolená.
Následující omezení platí jenom pro doplněk Azure Policy pro AKS:
- Zásady zabezpečení podů AKS a doplněk Azure Policy pro AKS nejde povolit. Další informace najdete v tématu Omezení zabezpečení podů AKS.
- Obory názvů automaticky vyloučené doplňkem Azure Policy pro vyhodnocení: kube-system a gatekeeper-system.
Nejčastější dotazy
Co nasadí doplněk Azure Policy nebo rozšíření Azure Policy v mém clusteru při instalaci?
Doplněk Azure Policy vyžaduje ke spuštění tři komponenty Gatekeeperu: jeden pod auditu a dvě repliky podu webhooku. Nainstaluje se také jeden pod Azure Policy a jeden pod webhooku Azure Policy.
Jakou spotřebu prostředků mám očekávat, že se doplněk Azure Policy nebo rozšíření použije v každém clusteru?
Komponenty Azure Policy pro Kubernetes, které běží v clusteru, spotřebovávají více prostředků, protože počet prostředků Kubernetes a přiřazení zásad se zvyšuje v clusteru, což vyžaduje operace auditu a vynucování.
Následující odhady vám pomůžou s plánováním:
- Pro méně než 500 podů v jednom clusteru s maximálním omezením 20: dva virtuální procesory a 350 MB paměti na součást.
- U více než 500 podů v jednom clusteru s maximálně 40 omezeními: tři vCPU a 600 MB paměti na součást.
Je možné na pody Windows použít definice Azure Policy pro Kubernetes?
Pody Windows nepodporují kontexty zabezpečení. Některé definice Azure Policy, jako je zákaz kořenových oprávnění, proto nejde v podech Windows eskalovat a platí jenom pro pody Linuxu.
Jaký typ diagnostických dat shromažďuje doplněk Azure Policy?
Doplněk Azure Policy pro Kubernetes shromažďuje omezená diagnostická data clusteru. Tato diagnostická data jsou důležitá technická data související se softwarem a výkonem. Data se používají následujícími způsoby:
- Udržujte doplněk Azure Policy v aktualizovaném stavu.
- Udržujte doplněk Azure Policy zabezpečený, spolehlivý a výkonný.
- Vylepšení doplňku Azure Policy – prostřednictvím agregované analýzy použití doplňku
Informace shromážděné doplňkem nejsou osobní údaje. Aktuálně jsou shromažďovány následující podrobnosti:
- Verze agenta doplňku Azure Policy
- Typ clusteru
- Oblast clusteru
- Skupina prostředků clusteru
- ID prostředku clusteru
- ID předplatného clusteru
- Operační systém clusteru (příklad: Linux)
- Město clusteru (příklad: Seattle)
- Clusterový stát nebo provincie (příklad: Washington)
- Země nebo oblast clusteru (příklad: USA)
- Výjimky nebo chyby, ke kterým došlo doplňkem Azure Policy během instalace agenta při vyhodnocování zásad
- Počet definic zásad Gatekeeperu, které doplněk Azure Policy nenainstaluje
Jaké jsou obecné osvědčené postupy, které je potřeba mít na paměti při instalaci doplňku Azure Policy?
- K naplánování podů Gatekeeper použijte fond systémových uzlů s
CriticalAddonsOnly
taintem. Další informace naleznete v tématu Použití fondů systémových uzlů. - Zabezpečte odchozí provoz z clusterů AKS. Další informace najdete v tématu Řízení výchozího přenosu dat pro uzly clusteru.
- Pokud je cluster
aad-pod-identity
povolený, pody NMI (Node Managed Identity) upraví uzly tak, aby zachytilyiptables
volání koncového bodu metadat služby Azure Instance. Tato konfigurace znamená, že služba NMI zachytí všechny požadavky na koncový bod metadat, i když pod nepoužíváaad-pod-identity
. AzurePodIdentityException
CRD je možné nakonfigurovat tak, aby informovalaaad-pod-identity
, že všechny požadavky na koncový bod metadat pocházející z podu, který odpovídá popiskům definovaným v CRD, by se měly přexiovat bez jakéhokoli zpracování v NMI. Systémové pody skubernetes.azure.com/managedby: aks
popiskem v oboru názvů kube-system by měly být vyloučenyaad-pod-identity
konfiguracíAzurePodIdentityException
CRD. Další informace najdete v tématu Zakázání identity aad-pod pro konkrétní pod nebo aplikaci. Pokud chcete nakonfigurovat výjimku, nainstalujte YAML s výjimkou mikrofonu.
Další kroky
- Projděte si příklady v ukázkách azure Policy.
- Projděte si strukturu definic zásad.
- Projděte si Vysvětlení efektů zásad.
- Seznamte se s programovým vytvářením zásad.
- Zjistěte, jak získat data dodržování předpisů.
- Zjistěte, jak napravit nevyhovující prostředky.
- Zkontrolujte, co je skupina pro správu pomocí uspořádání prostředků pomocí skupin pro správu Azure.