Bagikan melalui


Menyiapkan fitur pemfilteran FQDN untuk Keamanan Jaringan Kontainer di Layanan Jaringan Kontainer Tingkat Lanjut

Artikel ini memperlihatkan kepada Anda cara menyiapkan Layanan Jaringan Kontainer Tingkat Lanjut dengan fitur Keamanan Jaringan Kontainer di kluster AKS.

Prasyarat

  • Akun Azure dengan langganan aktif. Jika Anda tidak memilikinya, buat akun gratis sebelum memulai.

Versi minimum Azure CLI yang diperlukan untuk langkah-langkah dalam artikel ini adalah 2.56.0. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

Menginstal ekstensi Azure CLI pratinjau aks

Instal atau perbarui ekstensi pratinjau Azure CLI menggunakan az extension add perintah atau 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

Aktifkan Layanan Jaringan Kontainer Tingkat Lanjut

Untuk melanjutkan, Anda harus mengaktifkan kluster AKS dengan Advanced Container Networking Services .

az aks create Perintah dengan bendera Layanan Jaringan Kontainer Tingkat Lanjut, --enable-acns, membuat kluster AKS baru dengan semua fitur Layanan Jaringan Kontainer Tingkat Lanjut. Fitur-fitur ini mencakup:

  • Observabilitas Jaringan Kontainer: Memberikan wawasan tentang lalu lintas jaringan Anda. Untuk mempelajari lebih lanjut, kunjungi Observabilitas Jaringan Kontainer.

  • Keamanan Jaringan Kontainer: Menawarkan fitur keamanan seperti pemfilteran FQDN. Untuk mempelajari lebih lanjut, kunjungi Keamanan Jaringan Kontainer.

Catatan

Kluster dengan sarana data Cilium mendukung Container Network Observability dan keamanan Container Network yang dimulai dengan Kubernetes versi 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

Mengaktifkan Layanan Jaringan Kontainer Tingkat Lanjut pada kluster yang ada

az aks update Perintah dengan bendera Layanan Jaringan Kontainer Tingkat Lanjut, --enable-acns, memperbarui kluster AKS yang ada dengan semua fitur Layanan Jaringan Kontainer Tingkat Lanjut yang mencakup Pengamatan Jaringan Kontainer dan fitur Keamanan Jaringan Kontainer.

Catatan

Hanya kluster dengan sarana data Cilium yang mendukung fitur Keamanan Jaringan Kontainer dari Layanan Jaringan Kontainer Tingkat Lanjut.

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

Mendapatkan kredensial kluster

Dapatkan kredensial kluster Anda menggunakan az aks get-credentials perintah .

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

Menguji konektivitas dengan kebijakan

Bagian ini menunjukkan cara mengamati kebijakan yang diberlakukan melalui Agen Cilium. Permintaan DNS dibuat ke FQDN yang diizinkan dan kasus lain di mana permintaan tersebut diblokir.

Buat file bernama demo-policy.yaml dan tempelkan manifes YAML berikut:

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"

Tentukan nama manifes YAML Anda dan terapkan dengan menggunakan [kubectl apply][kubectl-apply]:

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

Membuat pod demo

Buat pod yang client menjalankan Bash:

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

Shell dengan utilitas untuk menguji FQDN harus terbuka dengan output berikut:

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

Di jendela terpisah, jalankan perintah berikut untuk mendapatkan simpul pod yang sedang berjalan.

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

Output akan terlihat mirip dengan contoh berikut:

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 berjalan pada node bernama aks-nodepool1-22058664-vmss000001. Dapatkan instans Agen Cilium yang berjalan pada simpul tersebut:

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

Yang diharapkan cilium-s4x24 harus dalam output.

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

Memeriksa Agen Cilium

cilium Gunakan CLI untuk memantau lalu lintas yang diblokir.

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

Di dalam shell ini, jalankan 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

Memverifikasi kebijakan

Dari shell pertama, buat permintaan ke FQDN yang diizinkan, , *.bing.comseperti yang ditentukan oleh kebijakan. Ini harus berhasil dan diizinkan oleh agen.

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

Kemudian buat permintaan lain ke FQDN yang diharapkan diblokir:

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

Agen Cilium memblokir permintaan dengan output:

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

Membersihkan sumber daya

Jika Anda tidak berencana menggunakan aplikasi ini, hapus sumber daya lain yang Anda buat dalam artikel ini menggunakan az group delete perintah .

  az group delete --name $RESOURCE_GROUP

Langkah berikutnya

Dalam artikel panduan ini, Anda mempelajari cara menginstal dan mengaktifkan fitur keamanan dengan Layanan Jaringan Kontainer Tingkat Lanjut untuk kluster AKS Anda.