Förstå Azure Policy för Kubernetes-kluster
Azure Policy utökar Gatekeeper v3, en webhook för antagningskontrollant för Open Policy Agent (OPA), för att tillämpa skalbara tillämpnings- och skyddsfunktioner på dina klusterkomponenter på ett centraliserat och konsekvent sätt. Klusterkomponenterna omfattar poddar, containrar och namnområden.
Med Azure Policy för Kubernetes kan du hantera och rapportera efterlevnadstillståndet för dina Kubernetes-kluster från en och samma plats. Genom att använda Azure Policys tillägg eller tillägg förbättras styrningen av dina klusterkomponenter med Azure Policy-funktioner, till exempel möjligheten att använda väljare och åsidosättningar för säker principdistribution och återställning.
Azure Policy för Kubernetes har stöd för följande klustermiljöer:
- Azure Kubernetes Service (AKS) via Azure Policys tillägg för AKS
- Azure Arc-aktiverade Kubernetes via Azure Policy-tillägget för Arc
Viktigt!
Azure Policy-tilläggets Helm-modell och tillägget för AKS Engine har blivit inaktuella. Följ anvisningarna för att ta bort tilläggen.
Översikt
Genom att installera Azure Policys add-ons eller tillägg på dina Kubernetes-kluster utför Azure Policy följande funktioner:
- Kontrollerar med Azure Policy-tjänsten om det finns principtilldelningar till klustret.
- Distribuerar principdefinitioner till klustret som villkorsmall och villkorsanpassade resurser eller som en mutationsmallresurs (beroende på innehållet i principdefinitionen).
- Rapporterar gransknings- och efterlevnadsinformation tillbaka till Azure Policy-tjänsten.
Utför följande åtgärder för att aktivera och använda Azure Policy med ditt Kubernetes-kluster:
Konfigurera kubernetes-klustret och installera Azure Kubernetes Service (AKS) add-ons eller Azure Policys tillägg för Arc-aktiverade Kubernetes-kluster (beroende på klustertyp).
Kommentar
Vanliga problem med installationen finns i Felsöka – Azure Policy-tillägg.
Skapa eller använda en Azure Policy-exempeldefinition för Kubernetes
Loggning och felsökning
Granska begränsningar och rekommendationer i avsnittet Vanliga frågor och svar
Installera Azure Policy-tillägg för AKS
Azure Policy-tillägget för AKS är en del av Kubernetes version 1.27 med långsiktigt stöd (LTS).
Förutsättningar
Registrera resursprovidrar och förhandsversionsfunktioner.
Azure Portal:
Registrera resursprovidrar
Microsoft.PolicyInsights
. Anvisningar finns i Resursprovidrar och typer.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
Du behöver Azure CLI version 2.12.0 eller senare installerad och konfigurerad. Kör kommandot för
az --version
att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.AKS-klustret måste vara en Kubernetes-version som stöds i Azure Kubernetes Service (AKS). Använd följande skript för att verifiera aks-klusterversionen:
# Log in first with az login if you're not using Cloud Shell # Look for the value in kubernetesVersion az aks list
Öppna portar för Azure Policy-tillägget. Azure Policy-tillägget använder dessa domäner och portar för att hämta principdefinitioner och tilldelningar och rapportera kompatibilitet för klustret tillbaka till Azure Policy.
Domain Port data.policy.core.windows.net
443
store.policy.core.windows.net
443
login.windows.net
443
dc.services.visualstudio.com
443
När förutsättningarna har slutförts installerar du Azure Policy-tillägget i det AKS-kluster som du vill hantera.
Azure Portal
Starta AKS-tjänsten i Azure-portalen genom att välja Alla tjänster och sedan söka efter och välja Kubernetes-tjänster.
Välj ett av dina AKS-kluster.
Välj Principer till vänster på kubernetes-tjänstsidan.
På huvudsidan väljer du knappen Aktivera tillägg .
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
Kör följande kommando för att verifiera att tilläggsinstallationen lyckades och att azure-policy - och gatekeeper-poddarna körs:
# 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
Slutligen kontrollerar du att det senaste tillägget har installerats genom att köra det här Azure CLI-kommandot, ersätta <rg>
med resursgruppens namn och <cluster-name>
med namnet på ditt AKS-kluster: az aks show --query addonProfiles.azurepolicy -g <rg> -n <cluster-name>
. Resultatet bör se ut ungefär som följande utdata för kluster med hjälp av tjänstens huvudnamn:
{
"config": null,
"enabled": true,
"identity": null
}
Och följande utdata för kluster med hanterad identitet:
{
"config": null,
"enabled": true,
"identity": {
"clientId": "########-####-####-####-############",
"objectId": "########-####-####-####-############",
"resourceId": "<resource-id>"
}
}
Installera Azure Policy Extension för Azure Arc-aktiverade Kubernetes
Azure Policy for Kubernetes gör det möjligt att hantera och rapportera om efterlevnadstillståndet för dina Kubernetes-kluster från en och samma plats. Med Azure Policy-tillägget för Arc-aktiverade Kubernetes-kluster kan du styra dina Arc-aktiverade Kubernetes-klusterkomponenter, till exempel poddar och containrar.
Den här artikeln beskriver hur du skapar, visar tilläggsstatus och tar bort Azure Policy for Kubernetes-tillägget.
En översikt över tilläggsplattformen finns i Azure Arc-klustertillägg.
Förutsättningar
Om du redan har distribuerat Azure Policy for Kubernetes i ett Azure Arc-kluster med Helm direkt utan tillägg följer du anvisningarna för att ta bort Helm-diagrammet. När borttagningen är klar kan du fortsätta.
Se till att Kubernetes-klustret är en distribution som stöds.
Kommentar
Azure Policy for Arc-tillägget stöds i följande Kubernetes-distributioner.
Se till att du uppfyller alla vanliga krav för Kubernetes-tillägg som anges här, inklusive att ansluta klustret till Azure Arc.
Kommentar
Azure Policy-tillägget stöds för Arc-aktiverade Kubernetes-kluster i dessa regioner.
Öppna portar för Azure Policy-tillägget. Azure Policy-tillägget använder dessa domäner och portar för att hämta principdefinitioner och tilldelningar och rapportera kompatibilitet för klustret tillbaka till Azure Policy.
Domain Port data.policy.core.windows.net
443
store.policy.core.windows.net
443
login.windows.net
443
dc.services.visualstudio.com
443
Innan du installerar Azure Policy-tillägget eller aktiverar någon av tjänstfunktionerna måste din prenumeration aktivera
Microsoft.PolicyInsights
resursprovidrar.Kommentar
Om du vill aktivera resursprovidern följer du stegen i Resursprovidrar och typer eller kör antingen Azure CLI- eller Azure PowerShell-kommandot.
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'
Skapa Azure Policy-tillägg
Kommentar
Observera följande för skapande av Azure Policy-tillägg:
- Automatisk uppgradering är aktiverat som standard, vilket uppdaterar delversionen av Azure Policy-tillägget om några nya ändringar distribueras.
- Alla proxyvariabler som skickas som parametrar till
connectedk8s
sprids till Azure Policy-tillägget för att stödja utgående proxy.
Om du vill skapa en tilläggsinstans kör du följande kommando för <>
det Arc-aktiverade klustret med dina värden:
az k8s-extension create --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --extension-type Microsoft.PolicyInsights --name <EXTENSION_INSTANCE_NAME>
Exempel:
az k8s-extension create --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --extension-type Microsoft.PolicyInsights --name azurepolicy
Exempel på utdata:
{
"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"
}
Visa Azure Policy-tillägget
Kontrollera att det gick att skapa tilläggsinstansen och granska tilläggsmetadata genom att <>
köra följande kommando som ersätter med dina värden:
az k8s-extension show --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>
Exempel:
az k8s-extension show --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --name azurepolicy
Kör följande kommando för att verifiera att tilläggsinstallationen lyckades och att azure-policy- och gatekeeper-poddarna körs:
# 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
Ta bort Azure Policy-tillägget
Om du vill ta bort tilläggsinstansen kör du följande kommando som ersätter <>
med dina värden:
az k8s-extension delete --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>
Skapa en principdefinition
Språkstrukturen i Azure Policy för att hantera Kubernetes följer den för befintliga principdefinitioner. Det finns exempeldefinitionsfiler som du kan tilldela i Azure Policys inbyggda principbibliotek som kan användas för att styra dina klusterkomponenter.
Azure Policy for Kubernetes stöder även skapande av anpassad definition på komponentnivå för både Azure Kubernetes Service-kluster och Azure Arc-aktiverade Kubernetes-kluster. Exempel på begränsningsmallar och mutationsmallar finns i Gatekeeper Community-biblioteket. Azure Policys Visual Studio Code-tillägg kan användas för att översätta en befintlig begränsningsmall eller mutationsmall till en anpassad principdefinition för Azure Policy.
Med läget Resursprovider Microsoft.Kubernetes.Data
används effektgranskning, neka, inaktiverad och mutera för att hantera dina Kubernetes-kluster.
Granskning och neka måste ange informationsegenskaper som är specifika för arbete med OPA Constraint Framework och Gatekeeper v3.
Som en del av egenskaperna details.templateInfo eller details.constraintInfo i principdefinitionen skickar Azure Policy URI:n eller Base64Encoded
värdet för dessa CustomResourceDefinitions(CRD) till tillägget. Rego är det språk som OPA och Gatekeeper stöder för att verifiera en begäran till Kubernetes-klustret. Genom att stödja en befintlig standard för Kubernetes-hantering gör Azure Policy det möjligt att återanvända befintliga regler och para ihop dem med Azure Policy för en enhetlig rapporteringsupplevelse för molnefterlevnad. Mer information finns i Vad är Rego?.
Tilldela en principdefinition
Om du vill tilldela en principdefinition till ditt Kubernetes-kluster måste du tilldelas lämpliga principtilldelningsåtgärder för Rollbaserad åtkomstkontroll i Azure (Azure RBAC). De inbyggda Azure-rollerna Resursprincipdeltagare och Ägare har dessa åtgärder. Mer information finns i Azure RBAC-behörigheter i Azure Policy.
Hitta de inbyggda principdefinitionerna för att hantera klustret med hjälp av Azure-portalen med följande steg. Om du använder en anpassad principdefinition söker du efter den efter namn eller den kategori som du skapade den med.
Starta Azure Policy-tjänsten i Azure-portalen. Välj Alla tjänster i det vänstra fönstret och sök sedan efter och välj Princip.
I den vänstra rutan på sidan Azure Policy väljer du Definitioner.
I listrutan Kategori använder du Välj alla för att rensa filtret och väljer sedan Kubernetes.
Välj principdefinitionen och välj sedan knappen Tilldela .
Ange omfånget till hanteringsgruppen, prenumerationen eller resursgruppen för Kubernetes-klustret där principtilldelningen gäller.
Kommentar
När du tilldelar Azure Policy for Kubernetes-definitionen måste omfånget innehålla klusterresursen.
Ge principtilldelningen ett namn och en beskrivning som du enkelt kan använda för att identifiera den.
Ange principtillämpningen till något av följande värden:
Aktiverad – Framtvinga principen i klustret. Kubernetes-antagningsbegäranden med överträdelser nekas.
Inaktiverad – Tillämpa inte principen på klustret. Kubernetes-antagningsbegäranden med överträdelser nekas inte. Resultat av efterlevnadsbedömning är fortfarande tillgängliga. När du distribuerar nya principdefinitioner till kluster som körs är alternativet Inaktiverat användbart för att testa principdefinitionen eftersom antagningsbegäranden med överträdelser inte nekas.
Välj Nästa.
Ange parametervärden
- Om du vill undanta Kubernetes-namnområden från principutvärderingen anger du listan över namnområden i parametern Namnområdesundantag. Rekommendationen är att undanta: kube-system, gatekeeper-system och azure-arc.
Välj Granska + skapa.
Alternativt kan du använda snabbstarten Tilldela en princip – portal för att hitta och tilldela en Kubernetes-princip. Sök efter en Kubernetes-principdefinition i stället för exempelgransknings-VM :erna.
Viktigt!
Inbyggda principdefinitioner är tillgängliga för Kubernetes-kluster i kategorin Kubernetes. En lista över inbyggda principdefinitioner finns i Kubernetes-exempel.
Principutvärdering
Var 15:e minut kontrollerar tillägget med Azure Policy-tjänsten om det har gjorts ändringar i principtilldelningarna. Under den här uppdateringscykeln söker tillägget efter ändringar. Dessa ändringar utlöser åtgärder för att skapa, uppdatera eller ta bort i begränsningsmallarna och begränsningarna.
Om ett namnområde har en klusteranpassad etikett i ett Kubernetes-kluster nekas inte antagningsbegäranden med överträdelser. Resultat av efterlevnadsbedömning är fortfarande tillgängliga.
- Azure Arc-aktiverat Kubernetes-kluster:
admission.policy.azure.com/ignore
Kommentar
En klusteradministratör kan ha behörighet att skapa och uppdatera villkorsmallar och villkorsresurser som installeras av Azure Policy-tillägget, men dessa scenarier stöds inte när manuella uppdateringar skrivs över. Gatekeeper fortsätter att utvärdera principer som fanns innan du installerar tillägget och tilldelar Principdefinitioner för Azure Policy.
Var 15:e minut gör tillägget en fullständig genomsökning av klustret. Efter att ha samlat in information om den fullständiga genomsökningen, och eventuella utvärderingar i realtid från Gatekeeper av försök till ändringar i klustret, rapporteras resultatet tillbaka till Azure Policy och tas med i efterlevnadsinformationen, precis som alla andra Azure Policy-tilldelningar. Endast resultat för aktiva principtilldelningar returneras under granskningscykeln. Granskningsresultat kan också visas som överträdelser i statusfältet för den begränsning som misslyckades. Mer information om icke-kompatibla resurser finns i Komponentinformation för resursproviderlägen.
Kommentar
Varje efterlevnadsrapport i Azure Policy för dina Kubernetes-kluster innehåller alla överträdelser under de senaste 45 minuterna. Tidsstämpeln anger när en överträdelse inträffade.
Några andra överväganden:
Om klusterprenumerationen registreras med Microsoft Defender för molnet tillämpas Microsoft Defender for Cloud Kubernetes-principer automatiskt på klustret.
När en neka-princip tillämpas på kluster med befintliga Kubernetes-resurser fortsätter alla befintliga resurser som inte är kompatibla med den nya principen att köras. När den icke-kompatibla resursen schemaläggs om på en annan nod blockerar Gatekeeper resursskapandet.
När ett kluster har en neka-princip som validerar resurser får användaren inget meddelande om avvisande när en distribution skapas. Tänk dig till exempel en Kubernetes-distribution som innehåller repliker och poddar. När en användare kör returnerar
kubectl describe deployment $MY_DEPLOYMENT
den inte ett avvisandemeddelande som en del av händelserna. Returnerar dockkubectl describe replicasets.apps $MY_DEPLOYMENT
de händelser som är associerade med avvisande.
Kommentar
Init-containrar kan ingå under principutvärderingen. Om du vill se om init-containrar ingår läser du CRD för följande eller en liknande deklaration:
input_containers[c] {
c := input.review.object.spec.initContainers[_]
}
Konflikter med villkorsmall
Om villkorsmallar har samma namn på resursmetadata, men principdefinitionen refererar till källan på olika platser, anses principdefinitionerna vara i konflikt. Exempel: Två principdefinitioner refererar till samma template.yaml
fil som lagras på olika källplatser som Azure Policy-mallarkivet (store.policy.core.windows.net
) och GitHub.
När principdefinitioner och deras villkorsmallar tilldelas men inte redan är installerade i klustret och är i konflikt rapporteras de som en konflikt och installeras inte i klustret förrän konflikten har lösts. På samma sätt fortsätter alla befintliga principdefinitioner och deras villkorsmallar som redan finns i klustret som står i konflikt med nyligen tilldelade principdefinitioner att fungera normalt. Om en befintlig tilldelning uppdateras och det inte går att synkronisera villkorsmallen markeras klustret också som en konflikt. Information om alla konfliktmeddelanden finns i kompatibilitetsskäl för AKS-resursproviderläge
Loggning
Som Kubernetes-kontrollant/container behåller både azure-policy - och gatekeeper-poddarna loggar i Kubernetes-klustret. I allmänhet kan azure-policyloggar användas för att felsöka problem med principinmatning till klustret och efterlevnadsrapportering. Poddloggarna gatekeeper-controller-manager kan användas för att felsöka körningsnekanden. Poddloggarna för gatekeeper-audit kan användas för att felsöka granskningar av befintliga resurser. Loggarna kan visas på sidan Insikter i Kubernetes-klustret. Mer information finns i Övervaka Kubernetes-klusterprestanda med Azure Monitor för containrar.
Om du vill visa tilläggsloggarna använder du 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
Om du försöker felsöka en viss ComplianceReasonCode som visas i dina efterlevnadsresultat kan du söka i poddloggarna för azure-policy för att se det fullständiga tillhörande felet.
Mer information finns i Debugging Gatekeeper (Felsöka Gatekeeper) i Gatekeeper-dokumentationen.
Visa Gatekeeper-artefakter
När tillägget har laddat ned principtilldelningarna och installerat villkorsmallarna och begränsningarna i klustret kommenteras både med Azure Policy-information som principtilldelnings-ID och principdefinitions-ID. Använd följande steg för att konfigurera klienten för att visa tilläggsrelaterade artefakter:
Konfigurera
kubeconfig
för klustret.För ett Azure Kubernetes Service-kluster använder du följande 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>
Testa klusteranslutningen.
Kör kommandot
kubectl cluster-info
. En lyckad körning gör att varje tjänst svarar med en URL där den körs.
Visa mallarna för tilläggsbegränsningar
Om du vill visa villkorsmallar som laddats ned av tillägget kör du kubectl get constrainttemplates
.
Villkorsmallar som börjar med k8sazure
är de som installeras av tillägget.
Visa mallarna för tilläggsmutation
Om du vill visa mutationsmallar som laddats ned av tillägget kör du kubectl get assign
, kubectl get assignmetadata
och kubectl get modifyset
.
Hämta Azure Policy-mappningar
Om du vill identifiera mappningen mellan en villkorsmall som laddats ned till klustret och principdefinitionen använder du kubectl get constrainttemplates <TEMPLATE> -o yaml
. Resultatet ser ut ungefär så här:
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>
är prenumerations-ID och <GUID>
är ID för den mappade principdefinitionen.
<URL-OF-YAML>
är källplatsen för villkorsmallen som tillägget laddades ned för att installeras i klustret.
Visa begränsningar relaterade till en villkorsmall
När du har namnen på de nedladdade villkorsmallarna för tillägg kan du använda namnet för att se de relaterade begränsningarna. Använd kubectl get <constraintTemplateName>
för att hämta listan.
Begränsningar som installeras av tillägget börjar med azurepolicy-
.
Visa villkorsinformation
Begränsningen innehåller information om överträdelser och mappningar till principdefinitionen och tilldelningen. Om du vill se informationen använder du kubectl get <CONSTRAINT-TEMPLATE> <CONSTRAINT> -o yaml
. Resultatet ser ut ungefär så här:
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
Felsöka tillägget
Mer information om hur du felsöker tillägget för Kubernetes finns i avsnittet Kubernetes i azure policy-felsökningsartikeln.
Om du har problem med Azure Policy-tillägget för Arc-tillägg går du till:
För Azure Policy-relaterade problem går du till:
Azure Policy-tillägg för AKS-ändringslogg
Azure Policys tillägg för AKS har ett versionsnummer som anger avbildningsversionen av tillägget. Eftersom funktionsstöd nyligen har introducerats i tillägget ökas versionsnumret.
Det här avsnittet hjälper dig att identifiera vilken tilläggsversion som är installerad i klustret och även dela en historisk tabell med Azure Policy-tilläggsversionen som är installerad per AKS-kluster.
Identifiera vilken tilläggsversion som är installerad i klustret
Azure Policy-tillägget använder standardschemat semantisk versionshantering för varje version. Om du vill identifiera den Azure Policy-tilläggsversion som används kan du köra följande kommando: kubectl get pod azure-policy-<unique-pod-identifier> -n kube-system -o json | jq '.spec.containers[0].image'
Om du vill identifiera den Gatekeeper-version som azure policytillägget använder kan du köra följande kommando: kubectl get pod gatekeeper-controller-<unique-pod-identifier> -n gatekeeper-system -o json | jq '.spec.containers[0].image'
För att slutligen identifiera den AKS-klusterversion som du använder följer du den länkade AKS-vägledningen.
Tilläggsversioner som är tillgängliga per varje AKS-klusterversion
1.7.0
Introduktion till expansion, en skift vänster-funktion som låter dig veta i förväg om dina arbetsbelastningsresurser (distributioner, repliker, jobb osv.) kommer att producera tillåtna poddar. Expansion bör inte ändra beteendet för dina principer. I stället skiftar den bara Gatekeepers utvärdering av poddomfattande principer så att de sker vid arbetsbelastningens antagningstid i stället för poddantagningstid. För att kunna utföra den här utvärderingen måste den dock generera och utvärdera en konsekvenspodd som baseras på poddspecifikationen som definierats i arbetsbelastningen, som kan ha ofullständiga metadata. Konsekvenspodden innehåller till exempel inte rätt ägarreferenser. På grund av den här lilla risken för att principbeteendet ändras introducerar vi expansion som inaktiverad som standard. Om du vill aktivera expansion för en viss principdefinition anger du .policyRule.then.details.source
till All
. Inbyggda objekt kommer snart att uppdateras för att aktivera parameterisering av det här fältet. Om du testar din principdefinition och upptäcker att konsekvensanalyspodden som genereras i utvärderingssyfte är ofullständig kan du också använda en mutation med källan Generated
för att mutera vad händer om-poddar. Mer information om det här alternativet finns i Gatekeeper-dokumentationen.
Säkerhetsförbättringar.
- Släpptes juli 2024
- Kubernetes 1.27+
- Gatekeeper 3.16.3
1.6.1
Säkerhetsförbättringar.
- Publicerad maj 2024
- Gatekeeper 3.14.2
1.5.0
Säkerhetsförbättringar.
- Publicerad maj 2024
- Kubernetes 1.27+
- Gatekeeper 3.16.3
1.4.0
Aktiverar mutation och externa data som standard. Den ytterligare muterande webhooken och den ökade tidsgränsen för validering av webhook kan lägga till svarstid för anrop i värsta fall. Introducerar även stöd för att visa principdefinitioner och ange definitionsversion i efterlevnadsresultat.
- Publicerad maj 2024
- Kubernetes 1.25+
- Gatekeeper 3.14.0
1.3.0
Introducerar feltillstånd för felprinciper, vilket gör att de kan skiljas från principer i inkompatibla tillstånd. Lägger till stöd för v1-villkorsmallar och användning av parametern excludedNamespaces i mutationsprinciper. Lägger till en felstatuskontroll för villkorsmallar efter installationen.
- Släpptes februari 2024
- Kubernetes 1.25+
- Gatekeeper 3.14.0
1.2.1
- Släpptes oktober 2023
- Kubernetes 1.25+
- Gatekeeper 3.13.3
1.1.0
- Släpptes juli 2023
- Kubernetes 1.27+
- Gatekeeper 3.11.1
1.0.1
- Släpptes juni 2023
- Kubernetes 1.24+
- Gatekeeper 3.11.1
1.0.0
Azure Policy for Kubernetes stöder nu mutationer för att åtgärda AKS-kluster i stor skala!
Ta bort tillägget
Ta bort tillägget från AKS
Om du vill ta bort Azure Policy-tillägget från ditt AKS-kluster använder du antingen Azure-portalen eller Azure CLI:
Azure Portal
Starta AKS-tjänsten i Azure-portalen genom att välja Alla tjänster och sedan söka efter och välja Kubernetes-tjänster.
Välj det AKS-kluster där du vill inaktivera Azure Policy-tillägget.
Välj Principer till vänster på kubernetes-tjänstsidan.
På huvudsidan väljer du knappen Inaktivera tillägg .
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
Ta bort tillägget från Azure Arc-aktiverade Kubernetes
Kommentar
Helm-modellen för Azure Policy-tillägget är nu inaktuell. Du bör välja Azure Policy Extension för Azure Arc-aktiverade Kubernetes i stället.
Kör följande Helm-kommando för att ta bort Azure Policy-tillägget och Gatekeeper från ditt Azure Arc-aktiverade Kubernetes-kluster:
helm uninstall azure-policy-addon
Ta bort tillägget från AKS-motorn
Kommentar
AKS Engine-produkten är nu inaktuell för Azures offentliga molnkunder. Överväg att använda Azure Kubernetes Service (AKS) för hanterade Kubernetes- eller Kluster-API-providern Azure för självhanterade Kubernetes. Det finns inga nya funktioner planerade. det här projektet uppdateras endast för CVEs och liknande, med Kubernetes 1.24 som den slutliga versionen för att ta emot uppdateringar.
Om du vill ta bort Azure Policy-tillägget och Gatekeeper från AKS Engine-klustret använder du den metod som överensstämmer med hur tillägget installerades:
Om det installeras genom att ange egenskapen addons i klusterdefinitionen för AKS Engine:
Distribuera om klusterdefinitionen till AKS Engine när du har ändrat egenskapen addons för azure-policy till false:
"addons": [{ "name": "azure-policy", "enabled": false }]
Mer information finns i AKS Engine – Inaktivera Azure Policy-tillägg.
Kör följande Helm-kommando om det är installerat med Helm-diagram:
helm uninstall azure-policy-addon
Begränsningar
- Allmänna Azure Policy-definitioner och tilldelningsgränser finns i Azure Policys dokumenterade gränser
- Azure Policy-tillägg för Kubernetes kan bara distribueras till Linux-nodpooler.
- Maximalt antal poddar som stöds av Azure Policy-tillägget per kluster: 10 000
- Maximalt antal poster som inte är kompatibla per princip per kluster: 500
- Maximalt antal poster som inte uppfyller kraven per prenumeration: 1 miljon
- Installationer av Gatekeeper utanför Azure Policy-tillägget stöds inte. Avinstallera alla komponenter som installerades av en tidigare Gatekeeper-installation innan du aktiverar Azure Policy-tillägget.
- Orsaker till bristande efterlevnad är inte tillgängliga för läget Microsoft.Kubernetes.Data Resource Provider. Använd komponentinformation.
- Undantag på komponentnivå stöds inte för resursproviderlägen. Stöd för parametrar är tillgängligt i Azure Policy-definitioner för att exkludera och inkludera specifika namnområden.
- Att använda anteckningen
metadata.gatekeeper.sh/requires-sync-data
i en villkorsmall för att konfigurera replikering av data från klustret till OPA-cachen är för närvarande endast tillåtet för inbyggda principer. Anledningen är att den kan öka resursanvändningen för Gatekeeper-poddar dramatiskt om den inte används noggrant.
Följande begränsningar gäller endast för Azure Policy-tillägget för AKS:
- AKS Pod-säkerhetsprincipen och Azure Policy-tillägget för AKS kan inte båda aktiveras. Mer information finns i säkerhetsbegränsningar för AKS-poddar.
- Namnområden som automatiskt undantas av Azure Policy-tillägget för utvärdering: kube-system och gatekeeper-system.
Vanliga frågor och svar
Vad distribuerar Azure Policy-tillägget/Azure Policy-tillägget i mitt kluster vid installationen?
Azure Policy-tillägget kräver tre Gatekeeper-komponenter som ska köras: En granskningspodd och två webhook-poddrepliker. En Azure Policy-podd och en Azure Policy webhook-podd installeras också.
Hur mycket resursförbrukning ska jag förvänta mig att Azure Policy-tillägget/tillägget ska användas för varje kluster?
Azure Policy for Kubernetes-komponenter som körs i klustret förbrukar fler resurser när antalet Kubernetes-resurser och principtilldelningar ökar i klustret, vilket kräver gransknings- och tvingande åtgärder. Följande är uppskattningar som hjälper dig att planera:
- För färre än 500 poddar i ett enda kluster med högst 20 begränsningar: två vCPU:er och 350 MB minne per komponent.
- För mer än 500 poddar i ett enda kluster med högst 40 begränsningar: tre virtuella processorer och 600 MB minne per komponent.
Kan Azure Policy for Kubernetes-definitioner tillämpas på Windows-poddar?
Windows-poddar stöder inte säkerhetskontexter. Därför kan vissa Av Azure Policy-definitionerna, som att inte tillåta rotprivilegier, eskaleras i Windows-poddar och gäller endast för Linux-poddar.
Vilken typ av diagnostikdata samlas in av Azure Policy-tillägget?
Azure Policy-tillägget för Kubernetes samlar in begränsade klusterdiagnostikdata. Dessa diagnostikdata är viktiga tekniska data som rör programvara och prestanda. Data används på följande sätt:
- Håll Azure Policy-tillägget uppdaterat.
- Håll Azure Policy-tillägget säkert, tillförlitligt och högpresterande.
- Förbättra Azure Policy-tillägget – genom aggregerad analys av användningen av tillägget.
Informationen som samlas in av tillägget är inte personliga data. Följande information samlas in för närvarande:
- Azure Policy-tilläggsagentversion
- Klustertyp
- Klusterregion
- Klusterresursgrupp
- Klusterresurs-ID
- Klusterprenumerations-ID
- Klusteroperativsystem (exempel: Linux)
- Klusterstad (exempel: Seattle)
- Klusterstat eller provins (exempel: Washington)
- Klusterland eller region (exempel: USA)
- Undantag/fel som påträffas av Azure Policy-tillägg under agentinstallation vid principutvärdering
- Antal Gatekeeper-principdefinitioner som inte har installerats av Azure Policy-tillägget
Vad är allmänna metodtips att tänka på när du installerar Azure Policy-tillägget?
- Använd systemnodpoolen med
CriticalAddonsOnly
taint för att schemalägga Gatekeeper-poddar. Mer information finns i Använda systemnodpooler. - Skydda utgående trafik från dina AKS-kluster. Mer information finns i Kontrollera utgående trafik för klusternoder.
- Om klustret har
aad-pod-identity
aktiverats ändrar NMI-poddar (Node Managed Identity) nodernas iptables för att fånga upp anrop till Slutpunkten för Azure Instance Metadata. Den här konfigurationen innebär att alla begäranden som görs till metadataslutpunkten fångas upp av NMI även om podden inte använderaad-pod-identity
. - AzurePodIdentityException CRD kan konfigureras för att informera om
aad-pod-identity
att alla begäranden till metadataslutpunkten som kommer från en podd som matchar etiketter som definierats i CRD bör utökas utan någon bearbetning i NMI. Systempoddar med kubernetes.azure.com/managedby: aks-etiketten i kube-system-namnområdet bör undantas genomaad-pod-identity
att konfigurera AzurePodIdentityException CRD. Mer information finns i Inaktivera aad-pod-identity för en specifik podd eller ett visst program. Om du vill konfigurera ett undantag installerar du YAML med mikrofonfel.
Nästa steg
- Granska exempel i Azure Policy-exempel.
- Granska Policy-definitionsstrukturen.
- Granska Förstå policy-effekter.
- Förstå hur du programmatiskt skapar principer.
- Lär dig hur du hämtar efterlevnadsdata.
- Lär dig hur du åtgärdar icke-kompatibla resurser.
- Granska vad en hanteringsgrupp är med Organisera dina resurser med Azure-hanteringsgrupper.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för