Konfigurera FQDN-filtreringsfunktion för Container Network Security i Advanced Container Networking Services
Den här artikeln visar hur du konfigurerar avancerade containernätverkstjänster med funktionen Container Network Security i AKS-kluster.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Om du inte har ett konto kan du skapa ett kostnadsfritt konto innan du börjar.
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Den lägsta versionen av Azure CLI som krävs för stegen i den här artikeln är 2.56.0. Kör az --version
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
Installera Azure CLI-tillägget aks-preview
Installera eller uppdatera azure CLI-förhandsgranskningstillägget az extension add
med hjälp av kommandot eller az extension update
.
# 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
Aktivera avancerade containernätverkstjänster
För att kunna fortsätta måste du ha ett AKS-kluster med Advanced Container Networking Services aktiverat.
Kommandot az aks create
med flaggan Advanced Container Networking Services, --enable-acns
, skapar ett nytt AKS-kluster med alla funktioner i Advanced Container Networking Services. Dessa funktioner omfattar:
Observerbarhet för containernätverk: Ger insikter om din nätverkstrafik. Mer information finns i Container Network Observability (Observerbarhet för containernätverk).
Säkerhet för containernätverk: Erbjuder säkerhetsfunktioner som FQDN-filtrering. Mer information finns i Container Network Security.
Kommentar
Kluster med Cilium-dataplanet stöder containernätverksobservabilitet och containernätverkssäkerhet från och med Kubernetes version 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
Aktivera Advanced Container Networking Services i ett befintligt kluster
Kommandot az aks update
med flaggan Advanced Container Networking Services uppdaterar --enable-acns
ett befintligt AKS-kluster med alla avancerade funktioner för containernätverkstjänster som innehåller containernätverksobservabilitet och funktionen Container Network Security .
Kommentar
Endast kluster med Cilium-dataplanet stöder funktioner för containernätverkssäkerhet i Advanced Container Networking Services.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns
Hämta klusterautentiseringsuppgifter
Hämta dina autentiseringsuppgifter för klustret med hjälp av az aks get-credentials
kommandot .
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Testa anslutningen med en princip
Det här avsnittet visar hur du observerar en princip som tillämpas via Cilium-agenten. En DNS-begäran görs till ett tillåtet FQDN och ett annat fall där den blockeras.
Skapa en fil med namnet demo-policy.yaml
och klistra in följande 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"
Ange namnet på YAML-manifestet och tillämpa det med hjälp av [kubectl apply][kubectl-apply]:
kubectl apply –f demo-policy.yaml -n demo
Skapa en demopodd
Skapa en client
podd som kör Bash:
kubectl run -it client -n demo --image=k8s.gcr.io/e2e-test-images/agnhost:2.43 --labels="app=demo-container" --command -- bash
Ett gränssnitt med verktyg för att testa FQDN bör öppnas med följande utdata:
If you don't see a command prompt, try pressing enter.
bash-5.0#
I ett separat fönster kör du följande kommando för att hämta noden för den podd som körs.
kubectl get po -n demo --sort-by="{spec.nodeName}" -o wide
Utdata bör se ut ungefär som följande exempel:
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>
Podden körs på en nod med namnet aks-nodepool1-22058664-vmss000001
. Hämta Cilium Agent-instansen som körs på den noden:
k get po -n kube-system -o wide --field-selector spec.nodeName="aks-nodepool1-22058664-vmss000001" | grep "cilium"
Det förväntade cilium-s4x24
bör finnas i utdata.
cilium-s4x24 1/1 Running 0 47m 10.224.0.4 aks-nodepool1-22058664-vmss000001 <none> <none>
Inspektera en Cilium-agent
cilium
Använd CLI för att övervaka trafik som blockeras.
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)
#
I det här gränssnittet kör du 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
Verifiera princip
Från det första gränssnittet skapar du en begäran till det tillåtna FQDN, *.bing.com
, som anges av principen. Detta bör lyckas och tillåtas av agenten.
bash-5.0# ./agnhost connect www.bing.com:80
Skapa sedan en annan begäran till ett FQDN som förväntas blockeras:
bash-5.0# ./agnhost connect www.example.com:80
Cilium Agent blockerade begäran med utdata:
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
Rensa resurser
Om du inte planerar att använda det här programmet tar du bort de andra resurser som du skapade i den här artikeln med hjälp av az group delete
kommandot .
az group delete --name $RESOURCE_GROUP
Nästa steg
I den här artikeln har du lärt dig hur du installerar och aktiverar säkerhetsfunktioner med Advanced Container Networking Services för ditt AKS-kluster.
- Mer information om Advanced Container Networking Services för Azure Kubernetes Service (AKS) finns i Vad är Advanced Container Networking Services för Azure Kubernetes Service (AKS)?.
Azure Kubernetes Service