Delen via


Toegangscontrollers valideren

Dit artikel maakt deel uit van een serie. Begin met het overzicht.

Toegangscontrollers veroorzaken zelden problemen, maar het is van cruciaal belang om hun juiste functionaliteit te garanderen. In dit artikel wordt beschreven hoe toegangscontrollers van invloed kunnen zijn op andere onderdelen wanneer ze niet goed werken. Ook worden opdrachten beschreven die u kunt gebruiken om de prestaties van de toegangscontroller te valideren.

Toegangscontroller

Een toegangscontroller is een stukje code waarmee aanvragen worden onderschept naar een Kubernetes API-server vóór de persistentie van een object, maar nadat een aanvraag is geverifieerd en geautoriseerd.

Toegangscontrollers kunnen valideren, dempen of een combinatie van beide. Het dempen van controllers kan gerelateerde objecten wijzigen voordat een aanvraag wordt toegegeven. Het valideren van controllers zorgt er alleen voor dat aanvragen voldoen aan specifieke vooraf gedefinieerde criteria.

Een van de primaire functies van toegangscontrollers is het reguleren van aanvragen voor het maken, verwijderen en wijzigen van objecten. Daarnaast kunnen toegangscontrollers aangepaste werkwoorden beperken, zoals het aanvragen van een verbinding met een pod via een API-serverproxy. Toegangscontrollers kunnen echter geen aanvragen blokkeren voor het lezen van objecten, waaronder bewerkingen zoals get, watchof list.

Sommige onderdelen kunnen van invloed zijn op toegangscontrollers, zoals het dempen en valideren van webhooks. Wanneer u webhooks in uw Kubernetes-cluster dempt en valideert, is het noodzakelijk om hoge beschikbaarheid te garanderen. Beschadigde knooppunten mogen API-serveraanvragen niet blokkeren. Het is essentieel om de pijplijn voor toegangsbeheer te bewaken, zodat aanvragen voor de API-server niet worden geblokkeerd. Beschadigde toegangscontrollers kunnen van invloed zijn op het dempen en valideren van webhooks. Toegangscontrollers op basis van webhook die u moet bewaken, zijn:

  • De Azure Policy-invoegtoepassing voor AKS-clusters (Azure Kubernetes Service), die Gatekeeper uitbreidt. Gatekeeper is een toegangscontrollerwebhook voor Open Policy Agent.

  • Kyverno, dat wordt uitgevoerd als een dynamische toegangscontroller in een Kubernetes-cluster. Kyverno ontvangt valideren en dempen van http-callbacks van de Webhook-webhook van de Kubernetes-API-server en past overeenkomende beleidsregels toe om resultaten te retourneren die toegangsbeleid afdwingen of aanvragen weigeren. Raadpleeg de documentatie voor het oplossen van problemen (zoals APIServer mislukte webhook-aanroepen).

Toegangscontrollers die niet goed werken, kunnen ook van invloed zijn op verschillende onderdelen, zoals service-meshes. Service-meshes, zoals Istio en Linkerd, gebruiken toegangscontrollers om de injectie van sidecarcontainers binnen een pod te automatiseren, onder andere functies. Het is belangrijk om te evalueren en te controleren of toegangscontrollers goed functioneren om de naadloze werking van een service-mesh te garanderen.

Controleer de status van de Azure Policy-invoegtoepassing voor AKS-clusters

Als u de Azure Policy-invoegtoepassing voor AKS installeert, kunt u de volgende kubectl-opdrachten gebruiken om de installatie en functionaliteit van Azure Policy-toegangscontrollers in uw cluster te valideren:

# Verify that Azure Policy pods are running.
kubectl get pod -n gatekeeper-system

# Sample output
...
NAME                                     READY   STATUS    RESTARTS   AGE
gatekeeper-audit-65844778cb-rkflg        1/1     Running   0          163m
gatekeeper-controller-78797d4687-4pf6w   1/1     Running   0          163m
gatekeeper-controller-78797d4687-splzh   1/1     Running   0          163m
...

Voer de vorige opdracht uit om de beschikbaarheid van Azure Policy-agentpods in de gatekeeper-system-naamruimte te controleren. Als de uitvoer niet is wat u verwacht, kan dit duiden op een probleem met een toegangscontroller, API-service of aangepaste resourcedefinitie (CRD).

# Check that all API resources are working correctly. Use the following command to list all API resources.
kubectl api-resources

# Sample output
...
NAME                                     SHORTNAMES    APIGROUP                       NAMESPACED   KIND
bindings                                                                              true         Binding
componentstatuses                        cs                                           false        ComponentStatus
configmaps                               cm                                           true         ConfigMap
...

Met de vorige opdracht kunt u controleren of alle API-resources correct werken. Zorg ervoor dat de uitvoer de verwachte resources bevat zonder fouten of ontbrekende onderdelen. Gebruik de kubectl get pod en kubectl api-resources opdrachten om de status van de Azure Policy-invoegtoepassing voor AKS te controleren en de functionaliteit van toegangscontrollers in uw Kubernetes-cluster te valideren. Bewaak regelmatig toegangscontrollers om ervoor te zorgen dat ze goed functioneren, zodat u de algehele status en stabiliteit van uw cluster kunt behouden.

Gebruik de volgende kubectl get opdracht om te bevestigen dat beleidstoewijzingen worden toegepast op uw cluster:

kubectl get constrainttemplates

De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld:

NAME                                     AGE
k8sazureallowedcapabilities              23m
k8sazureallowedusersgroups               23m
k8sazureblockhostnamespace               23m
k8sazurecontainerallowedimages           23m
k8sazurecontainerallowedports            23m
k8sazurecontainerlimits                  23m
k8sazurecontainernoprivilege             23m
k8sazurecontainernoprivilegeescalation   23m
k8sazureenforceapparmor                  23m
k8sazurehostfilesystem                   23m
k8sazurehostnetworkingports              23m
k8sazurereadonlyrootfilesystem           23m
k8sazureserviceallowedports              23m

Voor meer informatie raadpleegt u de volgende bronnen:

Webhooks valideren

Volg deze stappen om ervoor te zorgen dat het valideren en dempen van webhooks werkt zoals verwacht in uw Kubernetes-cluster.

  1. Voer de volgende opdracht uit om de validerende webhooks in het cluster weer te geven:

    kubectl get ValidatingWebhookConfiguration -o wide
    

    De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld:

    NAME                         WEBHOOKS   AGE
    aks-node-validating-webhook   1          249d
    azure-policy-validating-webhook-configuration   1          249d
    gatekeeper-validating-webhook-configuration     1          249d
    

    Controleer de uitvoer om te controleren of de validerende webhooks aanwezig zijn en de configuraties ervan zijn zoals verwacht. De uitvoer bevat de naam van elke validatiewebhook, het aantal webhooks en de leeftijd van elke webhook.

  2. Voer de volgende opdracht uit om de muterende webhooks in het cluster weer te geven:

    kubectl get MutatingWebhookConfiguration -o wide
    

    De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld:

    NAME                         WEBHOOKS   AGE
    aks-node-mutating-webhook    1          249d
    azure-policy-mutating-webhook-configuration    1          249d
    gatekeeper-mutating-webhook-configuration      1          249d
    

    Controleer de uitvoer om ervoor te zorgen dat de mutatiewebhooks correct worden weergegeven en de configuraties naar wens zijn. De uitvoer bevat de naam van elke mutatiewebhook, het aantal webhooks en de leeftijd van elke webhook.

  3. Voer de volgende opdracht uit om specifieke details voor een bepaalde toegangscontroller op te halen:

    kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yaml
    

    Vervang <mutating-webhook-name> door de naam van de mutatiewebhook waarvoor u details wilt ophalen. In de uitvoer van deze opdracht wordt de YAML-weergave van de opgegeven webhookconfiguratie voor mutatie weergegeven.

Voer de opdrachten in deze sectie uit en controleer de uitvoer zodat u kunt controleren of de webhooks in het Kubernetes-cluster aanwezig en geconfigureerd zijn zoals verwacht. Deze validatie is essentieel om een goede werking te garanderen. Het is ook belangrijk om ervoor te zorgen dat de webhooks voldoen aan het beleid voor het valideren en wijzigen van resources in het cluster.

Medewerkers

Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.

Belangrijkste auteurs:

Andere Inzenders:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.