Konfigurowanie funkcji filtrowania nazw FQDN dla zabezpieczeń sieci kontenerów w usłudze Advanced Container Networking Services
W tym artykule pokazano, jak skonfigurować usługę Advanced Container Networking Services za pomocą funkcji zabezpieczeń sieci kontenerów w klastrach usługi AKS.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz subskrypcji, przed rozpoczęciem utwórz bezpłatne konto.
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Minimalna wersja interfejsu wiersza polecenia platformy Azure wymagana do wykonania kroków w tym artykule to 2.56.0. Uruchom polecenie az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Instalowanie rozszerzenia interfejsu wiersza polecenia platformy Azure w wersji zapoznawczej usługi aks
Zainstaluj lub zaktualizuj rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji zapoznawczej przy użyciu az extension add
polecenia lub 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
Włączanie zaawansowanych usług sieciowych kontenerów
Aby kontynuować, musisz mieć klaster usługi AKS z włączoną usługą Advanced Container Networking Services .
Polecenie az aks create
z flagą --enable-acns
Advanced Container Networking Services tworzy nowy klaster AKS ze wszystkimi funkcjami advanced Container Networking Services. Obejmują one następujące funkcje:
Obserwowanie sieci kontenerów: zapewnia wgląd w ruch sieciowy. Aby dowiedzieć się więcej, odwiedź stronę Obserwacja sieci kontenerów.
Zabezpieczenia sieci kontenerów: oferuje funkcje zabezpieczeń, takie jak filtrowanie nazw FQDN. Aby dowiedzieć się więcej, odwiedź stronę Zabezpieczenia sieci kontenerów.
Uwaga
Klastry z płaszczyzną danych Cilium obsługują zabezpieczenia sieci kontenerów i sieci kontenerów, począwszy od platformy Kubernetes w wersji 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
Włączanie usług Advanced Container Networking Services w istniejącym klastrze
Polecenie az aks update
z flagą --enable-acns
Advanced Container Networking Services , aktualizuje istniejący klaster AKS ze wszystkimi funkcjami Advanced Container Networking Services, które obejmują możliwość obserwowania sieci kontenerów i funkcję zabezpieczeń sieci kontenerów.
Uwaga
Tylko klastry z płaszczyzną danych Cilium obsługują funkcje zabezpieczeń sieci kontenerów usługi Advanced Container Networking Services.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns
Pobieranie poświadczeń klastra
Pobierz poświadczenia klastra az aks get-credentials
przy użyciu polecenia .
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Testowanie łączności przy użyciu zasad
W tej sekcji pokazano, jak obserwować wymuszanie zasad za pośrednictwem agenta Cilium. Żądanie DNS jest wykonywane do dozwolonej nazwy FQDN i innego przypadku, w którym jest blokowany.
Utwórz plik o nazwie demo-policy.yaml
i wklej następujący 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"
Określ nazwę manifestu YAML i zastosuj go przy użyciu polecenia [kubectl apply][kubectl-apply]:
kubectl apply –f demo-policy.yaml -n demo
Tworzenie zasobnika demonstracyjnego
Utwórz zasobnik z uruchomioną powłoką client
Bash:
kubectl run -it client -n demo --image=k8s.gcr.io/e2e-test-images/agnhost:2.43 --labels="app=demo-container" --command -- bash
Powłoka z narzędziami do testowania nazwy FQDN powinna zostać otwarta z następującymi danymi wyjściowymi:
If you don't see a command prompt, try pressing enter.
bash-5.0#
W osobnym oknie uruchom następujące polecenie, aby pobrać węzeł uruchomionego zasobnika.
kubectl get po -n demo --sort-by="{spec.nodeName}" -o wide
Dane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:
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>
Zasobnik jest uruchomiony w węźle o nazwie aks-nodepool1-22058664-vmss000001
. Uzyskaj wystąpienie agenta Cilium uruchomione w tym węźle:
k get po -n kube-system -o wide --field-selector spec.nodeName="aks-nodepool1-22058664-vmss000001" | grep "cilium"
cilium-s4x24
Oczekiwana wartość powinna znajdować się w danych wyjściowych.
cilium-s4x24 1/1 Running 0 47m 10.224.0.4 aks-nodepool1-22058664-vmss000001 <none> <none>
Sprawdzanie agenta cilium
Użyj interfejsu cilium
wiersza polecenia, aby monitorować zablokowany ruch.
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)
#
W tej powłoce uruchom polecenie 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
Weryfikowanie zasad
W pierwszej powłoce utwórz żądanie do dozwolonej nazwy FQDN, *.bing.com
zgodnie z zasadami. Powinno to zakończyć się pomyślnie i dozwolone przez agenta.
bash-5.0# ./agnhost connect www.bing.com:80
Następnie utwórz kolejne żądanie do nazwy FQDN, które ma zostać zablokowane:
bash-5.0# ./agnhost connect www.example.com:80
Agent Cilium zablokował żądanie przy użyciu danych wyjściowych:
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
Czyszczenie zasobów
Jeśli nie planujesz korzystania z tej aplikacji, usuń inne zasoby utworzone w tym artykule przy użyciu az group delete
polecenia .
az group delete --name $RESOURCE_GROUP
Następne kroki
W tym artykule z instrukcjami przedstawiono sposób instalowania i włączania funkcji zabezpieczeń za pomocą usług Advanced Container Networking Services dla klastra usługi AKS.
- Aby uzyskać więcej informacji na temat usług Advanced Container Networking Services dla usługi Azure Kubernetes Service (AKS), zobacz Co to jest usługa Advanced Container Networking Services dla usługi Azure Kubernetes Service (AKS)?.
Azure Kubernetes Service