Senario
Pasukan SRE mendapati akaun pembangun mempunyai keizinan kluster-admin penuh, membenarkan pod exec dan akses rahsia tanpa had, menimbulkan risiko keselamatan besar.
Gejala
- Log audit menunjukkan panggilan
kubectl execataukubectl get secretsyang tidak dijangka daripada pengguna bukan admin. - Pembangun melaporkan dapat mengakses ruang nama di luar skop mereka.
- Imbasan keselamatan menandakan ClusterRoleBinding berlebihan.
Diagnosis
- Jalankan
kubectl auth can-i --list --as=developeruntuk menyenaraikan keupayaan pengguna tertentu. - Laksanakan
kubectl get clusterrolebindings -o wideuntuk mengenal pasti subjek yang terikat pada peranan berkeizinan tinggi seperti cluster-admin. - Gunakan
kubectl describe clusterrolebinding <name>untuk memeriksa ikatan. - Periksa Dasar Keselamatan Pod:
kubectl get psp— tiada output bermaksud PSP tidak dikuatkuasakan.
Contoh Perintah
# Periksa keizinan pengguna
kubectl auth can-i --list --as=developer
# Guna PodSecurityPolicy terhad
kubectl apply -f restricted-psp.yaml
# Cipta ClusterRole hanya baca
kubectl create clusterrole readonly --verb=get,list,watch --resource=pods,services,endpoints
# Ikat kepada kumpulan pembangun
kubectl create clusterrolebinding dev-readonly --clusterrole=readonly --group=developers
# Rollback: padam dasar
kubectl delete -f restricted-psp.yaml
Kawalan Risiko
- Laksanakan prinsip hak minimum: cipta ServiceAccount dan RoleBinding khusus untuk setiap pasukan atau aplikasi.
- Aktifkan Pod Security Admission (PSA) atau OPA Gatekeeper untuk penguatkuasaan dasar.
- Aktifkan log audit kluster dan pusatkan pemantauan (contohnya, ELK atau integrasi SIEM OpsGlobal).
- Gunakan NetworkPolicy untuk menghadkan komunikasi antara pod.
Pelan Rollback
- Simpan ClusterRoleBinding sedia ada:
kubectl get clusterrolebinding dev-admin -o yaml > backup.yaml - Padam dasar terhad:
kubectl delete -f restricted-psp.yaml - Pulihkan ikatan:
kubectl apply -f backup.yaml
Pengesahan
- Sebagai pembangun, jalankan
kubectl auth can-i delete pods— harus kembali 'no' jika terhad dengan betul. - Periksa log audit untuk sebarang operasi yang dinafikan.
- Cuba cipta pod istimewa — harus ditolak.
Bila Hantar Tiket OpsGlobal
- Pasukan dalaman anda kurang kepakaran keselamatan Kubernetes.
- Anda memerlukan pemantauan 24/7 dan respons insiden pantas.
- Pelanggaran aktif atau konfigurasi salah memerlukan campur tangan pakar segera.
- Audit keselamatan berkala dan pematuhan (cth., SOC2, PCI-DSS) memerlukan pengesahan luaran.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Security dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Post ini membincangkan senario sebenar keizinan kluster berlebihan, meliputi diagnosis melalui kubectl auth, pelaksanaan hak minimum dengan ClusterRoles dan Pod Security Admission, langkah rollback, 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.