Implementatiebeveiligingen gebruiken om best practices af te dwingen in Azure Kubernetes Service (AKS) (preview)
In dit artikel leest u hoe u implementatiebeveiligingen gebruikt om best practices af te dwingen voor een AKS-cluster (Azure Kubernetes Service).
Overzicht
Tijdens de ontwikkelingslevenscyclus is het gebruikelijk dat er fouten, problemen en andere problemen optreden als de eerste implementatie van uw Kubernetes-resources onjuiste configuraties bevat. Om de belasting van Kubernetes-ontwikkeling te vereenvoudigen, biedt Azure Kubernetes Service (AKS) implementatiebeveiligingen (preview). Met implementatiebeveiligingen worden aanbevolen procedures voor Kubernetes in uw AKS-cluster afgedwongen via Azure Policy-besturingselementen.
Implementatiebeveiligingen bieden twee configuratieniveaus:
Warning
: Geeft waarschuwingsberichten weer in de codeterminal om u te waarschuwen voor eventuele niet-compatibele clusterconfiguraties, maar staat de aanvraag nog steeds toe.Enforcement
: Dwingt compatibele configuraties af door implementaties te weigeren en dempen als ze niet voldoen aan de aanbevolen procedures.
Nadat u de implementatiebeveiligingen voor 'Waarschuwing' of 'Afdwingen' hebt geconfigureerd, worden uw clusters programmatisch gecontroleerd tijdens het maken of bijwerken van uw clusters voor naleving. Implementatiebeveiligingen geven ook geaggregeerde nalevingsgegevens weer voor uw workloads op resourceniveau via het nalevingsdashboard van Azure Policy in Azure Portal of in uw CLI of terminal. Het uitvoeren van een niet-compatibele workload geeft aan dat uw cluster geen aanbevolen procedures volgt en dat workloads in uw cluster risico lopen op problemen die worden veroorzaakt door de clusterconfiguratie.
Belangrijk
AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals is' en 'als beschikbaar' en ze worden uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Daarom zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
Vereisten
U moet de Azure Policy-invoegtoepassing voor AKS inschakelen. Zie Azure Policy inschakelen in uw AKS-cluster voor meer informatie.
Als u de implementatiebeveiligingen wilt configureren, moet u versie
2.0.0b1
of hoger van deaks-preview
extensie hebben. Zie De CLI-extensie aks-preview installeren om de extensie te installeren. We raden u ook aan om de Azure CLI bij te werken om ervoor te zorgen dat u de nieuwste versie hebt geïnstalleerd.Als u de configuratie voor implementatiebeveiligingen wilt maken en wijzigen, hebt u een abonnement met de volgende machtigingen voor uw AKS-cluster nodig:
- Microsoft.Authorization/policyAssignments/write
- Microsoft.Authorization/policyAssignments/read
U moet de functievlag voor de implementatiebeveiliging registreren. Als u de functievlag wilt registreren, raadpleegt u De functievlag registreren voor de implementatiebeveiliging.
De CLI-extensie aks-preview installeren
Installeer de
aks-preview
CLI-extensie met behulp van deaz extension add
opdracht.az extension add --name aks-preview
Werk de extensie bij om ervoor te zorgen dat u de nieuwste versie hebt geïnstalleerd met behulp van de
az extension update
opdracht.az extension update --name aks-preview
De functievlag voor de implementatiebeveiliging registreren
Registreer de
SafeguardsPreview
functievlag met behulp van deaz feature register
opdracht.az feature register --namespace Microsoft.ContainerService --name SafeguardsPreview
Het duurt enkele minuten voordat de status Geregistreerd wordt weergegeven.
Controleer de registratiestatus met behulp van de
az feature show
opdracht.az feature show --namespace Microsoft.ContainerService --name SafeguardsPreview
Wanneer de status Geregistreerd weergeeft, vernieuwt u de registratie van de Microsoft.ContainerService-resourceprovider met behulp van de
az provider register
opdracht.az provider register --namespace Microsoft.ContainerService
Beveiligingsbeleid voor implementaties
Notitie
De ReadOnlyRootFilesystem
beleidsregels en RootfilesystemInitContainers
beleidsregels zijn momenteel alleen beschikbaar in Linux.
De volgende tabel bevat de beleidsregels die actief worden en de Kubernetes-resources waarop ze zijn gericht wanneer u implementatiebeveiligingen inschakelt. U kunt de momenteel beschikbare implementatiebeveiligingen in Azure Portal weergeven als een Azure Policy-definitie of in ingebouwde Azure Policy-definities voor Azure Kubernetes Service. De bedoeling achter deze verzameling is om een algemene en algemene lijst met aanbevolen procedures te maken die van toepassing zijn op de meeste gebruikers en gebruiksvoorbeelden.
Beveiligingsbeleid voor implementaties | Doel-Kubernetes-resource | Mutatieresultaat indien beschikbaar |
---|---|---|
[Preview]: Kan afzonderlijke knooppunten niet bewerken | Knooppunt | N.v.t. |
Cpu- en geheugenresourcelimieten voor Kubernetes-clustercontainers mogen niet groter zijn dan de opgegeven limieten | Pod | Stelt cpu-resourcelimieten in op 500 m als dit niet is ingesteld en stelt geheugenlimieten in op 500Mi als er geen pad aanwezig is |
[Preview]: er moeten antiaffiniteitsregels zijn ingesteld | Implementatie, StatefulSet, ReplicationController, ReplicaSet | N.v.t. |
[Preview]: geen specifieke AKS-labels | Implementatie, StatefulSet, Replicaset | N.v.t. |
Kubernetes-clustercontainers mogen alleen toegestane installatiekopieën gebruiken | Pod | N.v.t. |
[Preview]: Taints van gereserveerde systeemgroep | Knooppunt | Hiermee verwijdert u de CriticalAddonsOnly taint uit een gebruikersknooppuntgroep als deze niet is ingesteld. AKS gebruikt de CriticalAddonsOnly taint om klantpods weg te houden van de systeemgroep. Deze configuratie zorgt voor een duidelijke scheiding tussen AKS-onderdelen en klantpods en voorkomt verwijdering van klantpods die de CriticalAddonsOnly taint niet tolereren. |
Zorg ervoor dat clustercontainers gereedheids- of livenesstests hebben geconfigureerd | Pod | N.v.t. |
Kubernetes-clusters moeten gebruikmaken van het CSI-stuurprogramma StorageClass (Container Storage Interface) | StorageClass | N.v.t. |
[Preview]: Kubernetes-clustercontainers mogen alleen installatiekopieën ophalen wanneer er pull-geheimen voor installatiekopieën aanwezig zijn | Pod | N.v.t. |
[Preview]: Kubernetes-cluster moet nauwkeurige budgetten voor podonderbreking implementeren | Implementatie, ReplicaSet, StatefulSet | Stelt maxUnavailable in PodDisruptionBudget-resource in op 1. |
[Preview]: Kubernetes-clusterservices moeten gebruikmaken van unieke selectors | Service | N.v.t. |
[Preview]: ReadOnlyRootFilesystem in podspecificatie is ingesteld op waar |
Pod | Hiermee stelt u readOnlyRootFilesystem in de podspecificatie in op true als deze niet is ingesteld. Deze configuratie voorkomt dat containers naar het hoofdbestandssysteem schrijven. |
[Preview]: RootfilesystemInitContainers in podspecificatie is ingesteld op waar |
Pod | Hiermee stelt u rootFilesystemInitContainers in de podspecificatie in op true als deze niet is ingesteld. |
[Preview]: Containerinstallatiekopieën van Kubernetes-clusters mogen geen meest recente installatiekopieën tag bevatten | Implementatie, StatefulSet, ReplicationController, ReplicaSet | N.v.t. |
[Preview]: Kubernetes-clustercontainerinstallatiekopieën moeten de preStop-hook bevatten | Implementatie, StatefulSet, ReplicationController, ReplicaSet | N.v.t. |
Als u een idee of aanvraag voor implementatiebeveiliging wilt indienen, opent u een probleem in de GitHub-opslagplaats van AKS en voegt u dit toe [deployment safeguards request]
aan het begin van de titel.
Implementatiebeveiligingen inschakelen
Notitie
Als u Azure Policy voor het eerst hebt ingeschakeld voor het gebruik van implementatiebeveiligingen, moet u mogelijk maximaal 20 minuten wachten totdat Azure Policy van kracht wordt.
Als u het beveiligingsniveau van de implementatie Enforcement
gebruikt, betekent dit dat u zich aanmeldt voor implementaties die worden geblokkeerd en gemuteerd. Houd er rekening mee hoe dit beleid kan werken met uw AKS-cluster voordat u dit inschakelt Enforcement
.
Implementatiebeveiligingen inschakelen op een nieuw cluster
Schakel de implementatiebeveiligingen in op een nieuw cluster met behulp van de az aks create
opdracht met de --safeguards-level
en --safeguards-version
vlaggen.
Als u waarschuwingen voor niet-naleving wilt ontvangen, stelt u de --safeguards-level
optie in op Warning
. Als u alle niet-compatibele implementaties wilt weigeren of dempen, stelt u deze in op Enforcement
. Als u waarschuwingen wilt ontvangen, stelt u de knop --safeguards-level
'Waarschuwing' in. Als u alle implementaties wilt weigeren of dempen die niet voldoen aan de implementatiebeveiligingen, stelt u het in --safeguards-level
op 'Afdwingen'. Als u de versie van de implementatiebeveiliging wilt instellen, gebruikt u de --safeguards-version
vlag. Momenteel is V2.0.0 de nieuwste versie van de implementatiebeveiligingen.
az aks create \
--name myAKSCluster \
--resource-group myResourceGroup \
--enable-addons azure-policy \
--safeguards-level Warning \
--safeguards-version v2.0.0 \
--generate-ssh-keys
Implementatiebeveiligingen inschakelen op een bestaand cluster
Schakel de implementatiebeveiligingen in op een bestaand cluster waarvoor de Azure Policy-invoegtoepassing is ingeschakeld met behulp van de az aks update
opdracht en --safeguards-level
--safeguards-version
vlaggen. Als u waarschuwingen voor niet-naleving wilt ontvangen, stelt u de --safeguards-level
optie in op Warning
. Als u alle niet-compatibele implementaties wilt weigeren of dempen, stelt u deze in op Enforcement
.
az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Enforcement --safeguards-version v2.0.0
Als u het niveau van de implementatiebeveiliging van een bestaand cluster wilt bijwerken, gebruikt u de az aks update
opdracht waarbij de --safeguards-level
vlag is ingesteld op Warning
of Enforcement
.
az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Enforcement
Naamruimten uitsluiten
U kunt ook bepaalde naamruimten uitsluiten van implementatiebeveiligingen. Wanneer u een naamruimte uitsluit, wordt de activiteit in die naamruimte niet beïnvloed door implementatiewaarschuwingen of afdwingingswaarschuwingen.
Als u bijvoorbeeld de naamruimten wilt uitsluiten en ns2
een door komma's gescheiden lijst met naamruimten ns1
met de --safeguards-excluded-ns
vlag wilt gebruiken, zoals wordt weergegeven in het volgende voorbeeld:
az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Warning --safeguards-version v2.0.0 --safeguards-excluded-ns ns1,ns2
De beveiligingsversie van uw implementatie bijwerken
Notitie
v2.0.0 is de nieuwste versie van de implementatiebeveiligingen.
Werk de versie van uw implementatiebeveiliging bij met behulp van de az aks update
opdracht, waarbij de --safeguards-version
vlag is ingesteld op de nieuwe versie. In het volgende voorbeeld wordt een bestaand cluster bijgewerkt om versie 2.0.0 te gebruiken:
az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-version v2.0.0
Naleving tussen clusters controleren
Nadat u uw Kubernetes-manifest hebt geïmplementeerd, ziet u waarschuwingen of een mogelijk denial-bericht in uw CLI of terminal als het cluster niet voldoet aan de implementatiebeveiligingen, zoals wordt weergegeven in de volgende voorbeelden:
Waarschuwing
$ 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
Handhaving
Met implementatiebeveiligingsmutaties muteert het Enforcement
niveau uw Kubernetes-resources indien van toepassing. Uw Kubernetes-resources moeten echter nog steeds alle beveiligingsmaatregelen doorgeven om te kunnen worden geïmplementeerd. Als een beveiligingsbeleid mislukt, wordt uw resource geweigerd en wordt deze niet geïmplementeerd.
$ 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.
Als uw Kubernetes-resources voldoen aan de toepasselijke mutatiebeveiligingen en aan alle andere veiligheidsvereisten voldoen, worden ze geïmplementeerd, zoals wordt weergegeven in het volgende voorbeeld:
$ kubectl apply -f pod.yml
pod/my-pod created
Naleving controleren in clusters met behulp van het Azure Policy-dashboard
Als u wilt controleren of de implementatiebeveiligingen zijn toegepast en om de naleving van uw cluster te controleren, gaat u naar de azure-portalpagina voor uw cluster en selecteert u Beleid en gaat u vervolgens naar Azure Policy.
Selecteer in de lijst met beleidsregels en initiatieven het initiatief dat is gekoppeld aan de implementatiebeveiligingen. U ziet een dashboard met de nalevingsstatus in uw AKS-cluster.
Notitie
Als u de naleving in uw AKS-cluster goed wilt beoordelen, moet het Azure Policy-initiatief zijn afgestemd op de resourcegroep van uw cluster.
Implementatiebeveiligingen uitschakelen
Schakel de implementatiebeveiligingen op uw cluster uit met behulp van de az aks update
opdracht en stel de opdracht in --safeguards-level
op Off
.
az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Off
--
Veelgestelde vragen
Ik heb implementatiebeveiligingen ingeschakeld met Azure Policy voor de eerste keer. Waarom zie ik geen waarschuwingen? Waarom worden mijn pods niet geweigerd?
Het kan tot 35 minuten duren voordat Azure Policy is gesynchroniseerd met uw cluster nadat het voor het eerst is ingeschakeld.
Ik ben net overgeschakeld van Waarschuwing naar Afdwinging. Wordt dit onmiddellijk van kracht?
Wanneer u overschakelt naar beveiligingsniveaus voor implementaties, moet u mogelijk maximaal 15 minuten wachten totdat het nieuwe niveau van kracht wordt.
Kan ik mijn eigen mutaties creëren?
Nee Als u een idee hebt voor een beveiliging, opent u een probleem in de GitHub-opslagplaats van AKS en voegt u dit toe [deployment safeguards request]
aan het begin van de titel.
Kan ik kiezen en kiezen welke mutaties ik wil in Afdwinging?
Nee Implementatiebeveiligingen zijn alles of niets. Zodra u Waarschuwing of Afdwinging hebt ingeschakeld, zijn alle beveiligingsmaatregelen actief.
Waarom is mijn implementatieresource toegelaten, ook al heeft deze geen aanbevolen procedures gevolgd?
Implementatiebeveiligingen dwingen best practice-standaarden af via Azure Policy-besturingselementen en hebben beleidsregels die worden gevalideerd op basis van Kubernetes-resources. Azure Policy breidt Gatekeeper uit om clusteronderdelen te evalueren en af te dwingen. Gatekeeper-afdwinging werkt momenteel ook in een fail-open
model. Omdat er geen garantie is dat Gatekeeper op onze netwerkaanroep reageert, zorgen we ervoor dat in dat geval de validatie wordt overgeslagen, zodat de weigering uw implementaties niet blokkeert.
Zie workloadvalidatie in Gatekeeper voor meer informatie.
Volgende stappen
- Meer informatie over aanbevolen procedures voor het uitvoeren van een AKS-cluster.
Azure Kubernetes Service