Delen via


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

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-acnsu een nieuw AKS-cluster met alle functies van Advanced Container Networking Services. Deze functies omvatten:

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-acnseen 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.comzoals 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.