Sdílet prostřednictvím


Nastavení funkce filtrování plně kvalifikovaného názvu domény pro zabezpečení sítě kontejneru v pokročilých službách Container Networking Services

V tomto článku se dozvíte, jak v clusterech AKS nastavit službu Advanced Container Networking Services s funkcí Zabezpečení sítě kontejnerů.

Požadavky

  • Účet Azure s aktivním předplatným. Pokud ho nemáte, vytvořte si bezplatný účet před tím, než začnete.

Minimální verze Azure CLI vyžadovaná pro kroky v tomto článku je 2.56.0. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Instalace rozšíření Azure CLI aks-Preview

Nainstalujte nebo aktualizujte rozšíření Azure CLI ve verzi Preview pomocí az extension add příkazu nebo az extension update příkazu.

# 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

Povolení pokročilých síťových služeb kontejnerů

Abyste mohli pokračovat, musíte mít cluster AKS s povolenou službou Advanced Container Networking Services .

Příkaz az aks create s příznakem --enable-acnsAdvanced Container Networking Services vytvoří nový cluster AKS se všemi funkcemi Advanced Container Networking Services. Mezi tyto funkce patří:

  • Pozorovatelnost služby Container Network: Poskytuje přehled o síťovém provozu. Další informace najdete v tématu Pozorovatelnost služby Container Network.

  • Zabezpečení sítě kontejnerů: Nabízí funkce zabezpečení, jako je filtrování plně kvalifikovaných názvů domén. Další informace najdete v tématu Container Network Security.

Poznámka:

Clustery s rovinou dat Cilium podporují zabezpečení Container Network Observability a Container Network počínaje Kubernetes verze 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

Povolení pokročilých služeb Container Networking Services v existujícím clusteru

Příkaz az aks update s příznakem --enable-acnsAdvanced Container Networking Services aktualizuje existující cluster AKS se všemi funkcemi Advanced Container Networking Services, které zahrnují pozorovatelnost služby Container Network a funkci Zabezpečení sítě kontejnerů.

Poznámka:

Pouze clustery s rovinou dat Cilium podporují funkce zabezpečení kontejnerové sítě služby Advanced Container Networking Services.

az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --enable-acns

Získání přihlašovacích údajů clusteru

Pomocí příkazu získejte přihlašovací údaje ke clusteru az aks get-credentials .

az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP

Testování připojení pomocí zásad

Tato část ukazuje, jak sledovat zásady, které se vynucují prostřednictvím agenta Cilium. Požadavek DNS se provádí do povoleného plně kvalifikovaného názvu domény a jiného případu, kdy je zablokovaný.

Vytvořte soubor s názvem demo-policy.yaml a vložte následující manifest YAML:

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"

Zadejte název manifestu YAML a použijte ho pomocí příkazu [kubectl apply][kubectl-apply]:

kubectl apply –f demo-policy.yaml -n demo

Vytvoření ukázkového podu

Vytvořte pod se spuštěným client Bashem:

kubectl run -it client -n demo --image=k8s.gcr.io/e2e-test-images/agnhost:2.43 --labels="app=demo-container" --command -- bash

Prostředí s nástroji pro testování plně kvalifikovaného názvu domény by se mělo otevřít s následujícím výstupem:

If you don't see a command prompt, try pressing enter.
bash-5.0#

Spuštěním následujícího příkazu v samostatném okně získejte uzel spuštěného podu.

kubectl get po -n demo --sort-by="{spec.nodeName}" -o wide

Výstup by měl vypadat zhruba jako v tomto příkladu:

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>

Pod běží na uzlu s názvem aks-nodepool1-22058664-vmss000001. Získejte instanci agenta Cilium spuštěnou na tomto uzlu:

k get po -n kube-system -o wide --field-selector spec.nodeName="aks-nodepool1-22058664-vmss000001" | grep "cilium"

Očekávaný výsledek cilium-s4x24 by měl být ve výstupu.

cilium-s4x24                          1/1     Running   0          47m   10.224.0.4      aks-nodepool1-22058664-vmss000001   <none>           <none>

Kontrola agenta Cilium

Pomocí rozhraní příkazového cilium řádku můžete monitorovat blokovaný provoz.

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)
#

V tomto prostředí spusťte cilium monitor -t droppříkaz :

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

Ověření zásad

V prvním prostředí vytvořte požadavek na povolený plně kvalifikovaný název domény , *.bing.comjak je určeno zásadou. To by mělo být úspěšné a povolené agentem.

bash-5.0# ./agnhost connect www.bing.com:80

Pak vytvořte další požadavek na blokovaný plně kvalifikovaný název domény:

bash-5.0# ./agnhost connect www.example.com:80

Agent Cilium zablokoval požadavek výstupem:

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

Vyčištění prostředků

Pokud nemáte v plánu používat tuto aplikaci, pomocí příkazu odstraňte další prostředky, které jste vytvořili v tomto článku az group delete .

  az group delete --name $RESOURCE_GROUP

Další kroky

V tomto článku s postupy jste se dozvěděli, jak nainstalovat a povolit funkce zabezpečení pomocí Advanced Container Networking Services pro cluster AKS.