Partilhar via


Configurar o recurso de filtragem FQDN para Segurança de Rede de Contêiner em Serviços Avançados de Rede de Contêiner

Este artigo mostra como configurar os Serviços Avançados de Rede de Contêiner com o recurso Segurança de Rede de Contêiner em clusters AKS.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

A versão mínima da CLI do Azure necessária para as etapas neste artigo é 2.56.0. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Instalar a extensão aks-preview da CLI do Azure

Instale ou atualize a extensão de visualização da CLI do Azure usando o az extension add comando or 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

Habilitar Serviços Avançados de Rede de Contêiner

Para continuar, você deve ter um cluster AKS com Advanced Container Networking Services habilitado.

O az aks create comando com o sinalizador Advanced Container Networking Services, --enable-acns, cria um novo cluster AKS com todos os recursos Advanced Container Networking Services. Estas características abrangem:

  • Observabilidade da rede de contêineres: fornece informações sobre o tráfego da rede. Para saber mais, visite Observabilidade da rede de contêineres.

  • Segurança de rede de contêiner: Oferece recursos de segurança como filtragem FQDN. Para saber mais, visite Segurança de rede de contêiner.

Nota

Os clusters com o plano de dados Cilium suportam a Observabilidade da Rede de Contêineres e a segurança da Rede de Contêineres a partir da versão 1.29 do Kubernetes.

# 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

Habilitar Serviços Avançados de Rede de Contêiner em um cluster existente

O az aks update comando com o sinalizador Advanced Container Networking Services, , atualiza um cluster AKS existente com todos os recursos Advanced Container Networking Services, --enable-acnsque incluem Observabilidade de Rede de Contêiner e o recurso Segurança de Rede de Contêiner.

Nota

Somente clusters com o plano de dados Cilium suportam os recursos de Segurança de Rede de Contêiner dos Serviços Avançados de Rede de Contêiner.

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

Obter credenciais de cluster

Obtenha suas credenciais de cluster usando o az aks get-credentials comando.

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

Testar a conectividade com uma política

Esta seção demonstra como observar uma política sendo aplicada por meio do Agente Cilium. Uma solicitação de DNS é feita para um FQDN permitido e outro caso em que ele é bloqueado.

Crie um arquivo chamado demo-policy.yaml e cole o seguinte manifesto 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"

Especifique o nome do seu manifesto YAML e aplique-o usando [kubectl apply][kubectl-apply]:

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

Criar um pod de demonstração

Crie um client pod executando o Bash:

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

Um shell com utilitários para testar o FQDN deve abrir com a seguinte saída:

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

Em uma janela separada, execute o seguinte comando para obter o nó do pod em execução.

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

O resultado deverá ter um aspeto semelhante ao seguinte exemplo:

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>

O pod está sendo executado em um nó chamado aks-nodepool1-22058664-vmss000001. Obtenha a instância do Cilium Agent em execução nesse nó:

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

O esperado cilium-s4x24 deve estar na saída.

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

Inspecione um agente Cilium

Use a CLI para monitorar o cilium tráfego que está sendo bloqueado.

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

Dentro deste shell, execute 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

Verificar política

A partir do primeiro shell, crie uma solicitação para o FQDN permitido, *.bing.comconforme especificado pela política. Isso deve ser bem-sucedido e permitido pelo agente.

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

Em seguida, crie outra solicitação para um FQDN que deve ser bloqueado:

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

O Cilium Agent bloqueou a solicitação com a saída:

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

Clean up resources (Limpar recursos)

Se você não planeja usar este aplicativo, exclua os outros recursos criados neste artigo usando o az group delete comando.

  az group delete --name $RESOURCE_GROUP

Próximos passos

Neste artigo de instruções, você aprendeu como instalar e habilitar recursos de segurança com os Serviços Avançados de Rede de Contêiner para seu cluster AKS.