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
- Uma conta do Azure com uma subscrição ativa. Se não tiver uma, crie uma conta gratuita antes de começar.
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-acns
que 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.com
conforme 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.
- Para obter mais informações sobre os Serviços Avançados de Rede de Contêiner para o Serviço Kubernetes do Azure (AKS), consulte O que é Serviços Avançados de Rede de Contêiner para o Serviço Kubernetes do Azure (AKS)?.
Azure Kubernetes Service