FQDN-filterfunctie instellen voor Container Network Security in Advanced Container Networking Services
In dit artikel leest u hoe u Advanced Container Networking Services instelt met de functie Container Network Security in AKS-clusters.
Vereisten
- Een Azure-account met een actief abonnement. Als u nog geen abonnement hebt, maakt u een gratis account voordat u begint.
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
De minimale versie van Azure CLI die is vereist voor de stappen in dit artikel is 2.56.0. Voer az --version
uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
De Azure CLI-extensie aks-preview installeren
Installeer of werk de Preview-extensie van Azure CLI bij met behulp van de az extension add
of az extension update
opdracht.
# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview
Geavanceerde containernetwerkservices inschakelen
Als u wilt doorgaan, moet u een AKS-cluster hebben waarvoor Advanced Container Networking Services is ingeschakeld.
Met az aks create
de opdracht met de vlag Advanced Container Networking Services maakt --enable-acns
u een nieuw AKS-cluster met alle functies van Advanced Container Networking Services. Deze functies omvatten:
Waarneembaarheid van containernetwerk: biedt inzicht in uw netwerkverkeer. Ga naar Container Network Observability voor meer informatie.
Containernetwerkbeveiliging: biedt beveiligingsfuncties zoals FQDN-filtering. Ga naar Container Network Security voor meer informatie.
Notitie
Clusters met het Cilium-gegevensvlak ondersteunen Container Network Observability en Container Network Security vanaf Kubernetes versie 1.29.
# Set an environment variable for the AKS cluster name. Make sure to replace the placeholder with your own value.
export CLUSTER_NAME="<aks-cluster-name>"
# Create an AKS cluster
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--generate-ssh-keys \
--location eastus \
--max-pods 250 \
--network-plugin azure \
--network-plugin-mode overlay \
--network-dataplane cilium \
--node-count 2 \
--pod-cidr 192.168.0.0/16 \
--kubernetes-version 1.29 \
--enable-acns
Advanced Container Networking Services inschakelen op een bestaand cluster
Met az aks update
de opdracht met de vlag Advanced Container Networking Services wordt --enable-acns
een bestaand AKS-cluster bijgewerkt met alle functies van Advanced Container Networking Services, waaronder Waarneembaarheid van containernetwerk en de functie Container Network Security .
Notitie
Alleen clusters met het Cilium-gegevensvlak ondersteunen containernetwerkbeveiligingsfuncties van Advanced Container Networking Services.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns
Clusterreferenties ophalen
Haal uw clusterreferenties op met behulp van de az aks get-credentials
opdracht.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Connectiviteit testen met een beleid
In deze sectie ziet u hoe u een beleid bekijkt dat wordt afgedwongen via de Cilium-agent. Er wordt een DNS-aanvraag ingediend bij een toegestane FQDN en een ander geval waarin deze wordt geblokkeerd.
Maak een bestand met de naam demo-policy.yaml
en plak het volgende YAML-manifest:
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "allow-bing-fqdn"
spec:
endpointSelector:
matchLabels:
app: demo-container
egress:
- toEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": kube-system
"k8s:k8s-app": kube-dns
toPorts:
- ports:
- port: "53"
protocol: ANY
rules:
dns:
- matchPattern: "*.bing.com"
- toFQDNs:
- matchPattern: "*.bing.com"
Geef de naam van uw YAML-manifest op en pas dit toe met behulp van [kubectl apply][kubectl-apply]:
kubectl apply –f demo-policy.yaml -n demo
Een demopod maken
Maak een client
pod met Bash:
kubectl run -it client -n demo --image=k8s.gcr.io/e2e-test-images/agnhost:2.43 --labels="app=demo-container" --command -- bash
Een shell met hulpprogramma's voor het testen van FQDN moet worden geopend met de volgende uitvoer:
If you don't see a command prompt, try pressing enter.
bash-5.0#
Voer in een afzonderlijk venster de volgende opdracht uit om het knooppunt van de actieve pod op te halen.
kubectl get po -n demo --sort-by="{spec.nodeName}" -o wide
De uitvoer moet er als in het volgende voorbeeld uitzien:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
client 1/1 Running 0 5m50s 192.168.0.139 aks-nodepool1-22058664-vmss000001 <none> <none>
De pod wordt uitgevoerd op een knooppunt met de naam aks-nodepool1-22058664-vmss000001
. Haal het Cilium Agent-exemplaar op dat knooppunt op:
k get po -n kube-system -o wide --field-selector spec.nodeName="aks-nodepool1-22058664-vmss000001" | grep "cilium"
De verwachte cilium-s4x24
moet in de uitvoer staan.
cilium-s4x24 1/1 Running 0 47m 10.224.0.4 aks-nodepool1-22058664-vmss000001 <none> <none>
Een Cilium-agent inspecteren
Gebruik de cilium
CLI om te controleren of verkeer wordt geblokkeerd.
kubectl exec -it -n kube-system cilium-s4x24 -- sh
Defaulted container "cilium-agent" out of: cilium-agent, install-cni-binaries (init), mount-cgroup (init), apply-sysctl-overwrites (init), mount-bpf-fs (init), clean-cilium-state (init), block-wireserver (init)
#
Voer in deze shell het volgende uit cilium monitor -t drop
:
Listening for events on 2 CPUs with 64x4096 of shared memory
Press Ctrl-C to quit
time="2024-10-08T17:48:27Z" level=info msg="Initializing dissection cache..." subsys=monitor
Beleid controleren
Maak vanuit de eerste shell een aanvraag naar de toegestane FQDN, *.bing.com
zoals opgegeven door het beleid. Dit moet slagen en worden toegestaan door de agent.
bash-5.0# ./agnhost connect www.bing.com:80
Maak vervolgens een andere aanvraag voor een FQDN die naar verwachting wordt geblokkeerd:
bash-5.0# ./agnhost connect www.example.com:80
De Cilium-agent heeft de aanvraag geblokkeerd met de uitvoer:
xx drop (Policy denied) flow 0xfddd76f6 to endpoint 0, ifindex 29, file bpf_lxc.c:1274, , identity 48447->world: 192.168.0.149:45830 -> 93.184.215.14:80 tcp SYN
Resources opschonen
Als u van plan bent om deze toepassing te gebruiken, verwijdert u de andere resources die u in dit artikel hebt gemaakt met behulp van de az group delete
opdracht.
az group delete --name $RESOURCE_GROUP
Volgende stappen
In dit artikel hebt u geleerd hoe u beveiligingsfuncties installeert en inschakelt met Advanced Container Networking Services voor uw AKS-cluster.
- Zie Wat is Advanced Container Networking Services (AKS) voor Azure Kubernetes Service (AKS) voor meer informatie over Advanced Container Networking Services (AKS)?
Azure Kubernetes Service