Configurar o recurso de filtragem de FQDN para a segurança de rede de contêineres nos Serviços Avançados de Rede de Contêineres
Este artigo mostra como configurar os Serviços Avançados de Rede de Contêineres com o recurso de segurança de rede de contêineres em clusters do AKS.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Se você 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, confira Início Rápido para Bash no Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
A versão mínima da CLI do Azure necessária para as etapas neste artigo é 2.56.0. Execute az --version
para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
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 comando az extension add
ou 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 os Serviços Avançados de Rede de Contêineres
Para continuar, você deve ter um cluster do AKS com os Serviços Avançados de Rede de Contêineres habilitados.
O comando az aks create
com o sinalizador dos Serviços Avançados de Rede de Contêiner, --enable-acns
, cria um cluster do AKS com todos os recursos dos Serviços Avançados de Rede de Contêiner. Esses recursos incluem:
Observabilidade de Rede de Contêiner: Fornece insights sobre o tráfego de rede. Para saber mais, visite Observabilidade de Rede de Contêiner.
Segurança de Rede de Contêiner: Oferece recursos de segurança como filtragem de FQDN. Para saber mais, visite Segurança de Rede de Contêiner.
Observação
Clusters com o plano de dados Cilium dão suporte à Observabilidade de Rede de Contêiner e a segurança de rede de contêiner 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êineres em um cluster existente
O comando az aks update
com o sinalizador dos Serviços Avançados de Rede de Contêiner, --enable-acns
, atualiza um cluster do AKS existente com todos os recursos dos Serviços Avançados de Rede de Contêiner, que inclui Observabilidade de Rede de Contêiner e o recurso Segurança de Rede de Contêiner.
Observação
Somente clusters com o plano de dados Cilium dão suporte para 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 do cluster
Obtenha suas credenciais de cluster usando o comando az aks get-credentials
.
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 que está sendo imposta por meio do agente do Cilium. Uma solicitação DNS é feita para um FQDN permitido e outro caso onde é bloqueada.
Crie um arquivo chamado demo-policy.yaml
e cole o manifesto YAML a seguir:
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 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 pod client
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 FQDN deve ser aberto 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 comando a seguir para obter o nó do pod em execução.
kubectl get po -n demo --sort-by="{spec.nodeName}" -o wide
O resultado deverá ser 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á em execução em um nó chamado aks-nodepool1-22058664-vmss000001
. Obtenha a instância do agente do Cilium em execução nesse nó:
k get po -n kube-system -o wide --field-selector spec.nodeName="aks-nodepool1-22058664-vmss000001" | grep "cilium"
O cilium-s4x24
esperado deve estar na saída.
cilium-s4x24 1/1 Running 0 47m 10.224.0.4 aks-nodepool1-22058664-vmss000001 <none> <none>
Inspecionar um agente do Cilium
Use a CLI cilium
para monitorar o tráfego 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 desse 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 a política
No 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 se espera ser bloqueado:
bash-5.0# ./agnhost connect www.example.com:80
O agente do Cilium 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
Limpar os recursos
Se você não planeja usar esse aplicativo, exclua os outros recursos criados neste artigo usando o comando az group delete
.
az group delete --name $RESOURCE_GROUP
Próximas etapas
Neste artigo de instruções, você aprendeu a instalar e habilitar recursos de segurança com os Serviços Avançados de Rede de Contêineres para seu cluster do AKS.
- Para obter mais informações sobre os Serviços Avançados de Rede de Contêineres para o AKS (Serviço de Kubernetes do Azure), consulte O que são serviços avançados de rede de contêineres para o AKS (Serviço de Kubernetes do Azure)?.
Azure Kubernetes Service