Dela via


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

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:

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-acnsett 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.