Senario
Sebuah platform e-dagang mengalami gangguan pengeluaran selama 30 minit apabila seorang pemaju secara tidak sengaja memadam Deployments dalam ruang nama kritikal disebabkan RBAC yang terlalu permisif. Siasatan selepas insiden mendedahkan pemaju tersebut mempunyai keistimewaan cluster-admin, dan tiada NetworkPolicy atau Polisi Keselamatan Pod dilaksanakan.
Gejala
- Pemadaman sumber pengeluaran tanpa kebenaran oleh pengguna bukan admin
- Pelarian kontena atau penyalahgunaan sumber
- Sekatan trafik rangkaian atau capaian tidak sah
Diagnostik
# Periksa ikatan RBAC
kubectl get rolebindings,clusterrolebindings --all-namespaces -o wide
# Cari pod yang melanggar Piawaian Keselamatan Pod
kubectl get pod --all-namespaces -o json | jq '.items[] | select(.spec.containers[].securityContext.privileged == true or .spec.containers[].securityContext.runAsUser == 0) | {name: .metadata.name, namespace: .metadata.namespace}'
# Sahkan liputan NetworkPolicy
kubectl get networkpolicies --all-namespaces | grep -v NAMESPACE | awk '{print $1}' | sort | uniq -c
Langkah Pengerasan
1. Prinsip Keistimewaan Terkecil RBAC
# Cipta peranan baca sahaja
kubectl create role read-only --verb=get,list,watch --resource=pods,services --dry-run=client -o yaml > read-only-role.yaml
kubectl apply -f read-only-role.yaml
# Ikat kepada pengguna
kubectl create rolebinding dev-readonly --role=read-only --user=dev-user --namespace=default
2. Laksanakan NetworkPolicy
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
3. Dayakan Pod Security Admission
# Label ruang nama untuk menguatkuasakan garis dasar
kubectl label ns production pod-security.kubernetes.io/enforce=baseline
Kawalan Risiko
- Sebelum perubahan, ambil gambar RBAC dan NetworkPolicy:
kubectl get clusterrolebindings -o yaml > backup-rbac.yaml - Uji NetworkPolicy dengan penggunaan canary
- Dayakan log audit:
kubectl logs kube-apiserver -n kube-system | grep audit
Balik Semula
# Pulihkan ikatan RBAC
kubectl delete rolebinding dev-readonly -n default
kubectl apply -f backup-rbac.yaml
# Padam NetworkPolicy
kubectl delete networkpolicy default-deny -n production
Pengesahan
# Uji kebenaran
kubectl auth can-i delete pods --as=dev-user -n production
# Uji pengasingan rangkaian
kubectl run test-pod --image=busybox --rm -it -- wget -O- http://other-service
Bila Serah Tiket OpsGlobal
- Serangan aktif atau kebocoran data
- Perubahan keselamatan yang menyebabkan gangguan perkhidmatan meluas
- Keperluan ujian penembusan atau audit pematuhan
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Security dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Artikel ini merangkumi strategi pengerasan keselamatan Kubernetes penting termasuk kawalan akses terperinci RBAC, pengasingan dasar rangkaian, penguatkuasaan Piawaian Keselamatan Pod, dengan arahan diagnostik, kawalan risiko, langkah balik, dan kriteria eskalasi untuk sokongan OpsGlobal.
Langkah Penyelesaian
Sahkan impak dan perubahan terkini, kumpul log, konfigurasi dan metrik, kemudian baiki mengikut risiko.
Contoh Arahan
Gantikan contoh dengan nama sumber sebenar dan simpan kata laluan, token atau kunci dalam pembolehubah persekitaran.
Risiko
Sebelum operasi produksi, semak sandaran, akses, tetingkap perubahan dan pelan rollback.
Pelan Rollback
Simpan konfigurasi dan versi asal; rollback konfigurasi, imej atau perubahan pangkalan data jika metrik tidak normal.
Senarai Serahan
Rekod punca isu, arahan penting, langkah pembaikan, hasil pengesahan dan cadangan susulan.
Perlu bantuan isu teknikal serupa?
Jika pelayan, Kubernetes, Docker, CI/CD, pangkalan data atau pemantauan anda bermasalah, hantar log dan konfigurasi untuk diagnosis jauh.