Senario
Pasukan SRE menguruskan beberapa kluster Kubernetes untuk beban kerja pengeluaran. Audit keselamatan mendedahkan kelemahan kritikal: pengikatan RBAC yang terlalu luas (contoh: akaun perkhidmatan terikat dengan peranan cluster-admin), ketiadaan Piawaian Keselamatan Pod, tiada Dasar Rangkaian, pengurusan rahsia yang lemah (etcd tidak disulitkan), dan tiada pengimbasan imej kontena. Kelemahan ini boleh menyebabkan akses tanpa kebenaran, pergerakan sisi, dan kebocoran data.
Gejala
- Laporan imbasan keselamatan menyerlahkan pengikatan RBAC berisiko tinggi.
- Pembangun melaporkan bahawa pod tertentu boleh mengakses sumber yang tidak sepatutnya.
- Pasukan pematuhan menandakan jurang PCI-DSS atau SOC2.
- Pemantauan menangkap panggilan API luar biasa dari namespace dengan kepercayaan rendah.
Diagnosis
Jalankan arahan berikut untuk menilai keadaan semasa:
1. Periksa pengikatan RBAC:
bash
kubectl get clusterrolebindings,rolebindings --all-namespaces -o wide
kubectl auth can-i --list --as=system:serviceaccount:<namespace>:<sa-name>
2. Periksa Pod Security Admission (PSA) atau Pod Security Policies (PSP, tidak digalakkan):
bash
kubectl get psp
kubectl get ns <namespace> -o yaml | grep pod-security
3. Lihat Dasar Rangkaian:
bash
kubectl get networkpolicies --all-namespaces
4. Sahkan penyulitan rahsia:
bash
kubectl get secrets --all-namespaces -o json | jq '.items[] | select(.metadata.annotations."kubernetes.io/encrypted" != "true")'
5. Jalankan penanda aras kube-bench:
bash
kube-bench run --targets master,node --version 1.24
Arahan & Kawalan Risiko
1. RBAC Hak Minimum
- Cipta peranan dan pengikatan khusus:
bash kubectl create role pod-reader --verb=get,list,watch --resource=pods kubectl create rolebinding pod-reader-binding --role=pod-reader --serviceaccount=default:svc-account --namespace=default - Gunakan alat seperti rakkess untuk mengaudit kebenaran berlebihan.
2. Melaksanakan Pod Security Admission
- Label namespace dengan tahap penguatkuasaan:
bash kubectl label ns default pod-security.kubernetes.io/enforce=restricted - Gunakan mod audit dahulu:
auditatauwarnuntuk mengelak gangguan beban kerja sedia ada.
3. Dasar Rangkaian
- Cipta dasar deny-all lalai:
```yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress ```
- Tambah peraturan allow secara berperingkat.
4. Penyulitan Rahsia
- Aktifkan penyulitan rehat untuk etcd: konfigurasikan encryption-provider-config.yaml dan mulakan semula kube-apiserver.
- Gunakan KMS luaran seperti AWS KMS atau HashiCorp Vault.
5. Pengimbasan Imej Kontena
- Integrasikan Trivy atau Clair dalam CI/CD:
bash trivy image --severity CRITICAL myregistry/myapp:latest - Sekat penggunaan imej dengan kelemahan kritikal.
Pemulihan
- Untuk RBAC: simpan fail yaml sandaran objek RBAC lama; pulihkan dengan
kubectl apply -f backup.yaml. - Untuk PSA: jika dasar namespace memecahkan pod, buang label:
kubectl label ns default pod-security.kubernetes.io/enforce-. - Untuk Dasar Rangkaian: padam dasar yang ditambah:
kubectl delete networkpolicies default-deny-all. - Untuk Penyulitan: mengembalikan konfigurasi penyulitan memerlukan memastikan semua rahsia telah dinyahsulit terlebih dahulu; risiko kerosakan data. Lakukan dengan berhati-hati.
Pengesahan
- Jalankan semula arahan diagnosis untuk mengesahkan RBAC diperketat, PSA dikuatkuasakan, Dasar Rangkaian aktif, rahsia disulitkan.
- Cuba simulasi akses tanpa kebenaran:
bash kubectl auth can-i create pods --as=system:serviceaccount:default:svc-accountPatut kembali "no". - Gunakan pod ujian dan sahkan pengasingan rangkaian:
kubectl exec test-pod -- curl http://other-pod-svcpatut tamat masa. - Periksa penyulitan:
bash kubectl get secrets mysecret -o yaml | grep "encryption:"
Bila Perlu Hantar Tiket OpsGlobal
- Apabila anda perlu menguatkuasakan dasar keselamatan seragam merentas pelbagai kluster; pasukan OpsGlobal boleh mereka dan mengautomasikan pelaksanaan.
- Jika beban kerja sedia ada terjejas akibat perubahan keselamatan dan pasukan anda kekurangan kepakaran untuk pembaikan segera.
- Apabila anda memerlukan laporan audit pematuhan (contoh: SOC2, HIPAA) – OpsGlobal menyediakan sokongan pengauditan dan pemulihan profesional.
- Jika saiz kluster besar (>50 nod) dan risiko operasi tinggi; bantuan pakar keselamatan luaran adalah disarankan.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Security dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan ini membincangkan pengukuhan keselamatan kluster Kubernetes di peringkat pengeluaran, merangkumi RBAC, Pod Security Admission, Dasar Rangkaian, Pengurusan Rahsia, dan Pengimbasan Imej. Ia menyediakan simptom berdasarkan senario, arahan diagnosis, kawalan risiko, langkah pemulihan, pengesahan, dan bila perlu menghubungi 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.