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.
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
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.com
seperti 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.
- Untuk informasi selengkapnya tentang Layanan Jaringan Kontainer Tingkat Lanjut untuk Azure Kubernetes Service (AKS), lihat Apa itu Layanan Jaringan Kontainer Tingkat Lanjut untuk Azure Kubernetes Service (AKS)?.
Azure Kubernetes Service