Senario
Pasukan SRE sebuah syarikat fintech mendapati pod dengan keistimewaan rendah dalam kluster Kubernetes pengeluaran mengakses Rahsia sensitif dalam namespace lain melalui token ServiceAccount yang dipasang. Pod itu hanya bertujuan untuk pengumpulan log, tetapi konfigurasi RBAC lalai membenarkan akses merentas namespace.
Gejala
- Log audit keselamatan menunjukkan panggilan
kubectl get secretsyang tidak dijangka. - Amaran pemantauan: lonjakan permintaan API ke namespace yang tidak diingini.
- Kata laluan pangkalan data teks biasa dari perkhidmatan lain muncul dalam log ralat pengumpul log.
Diagnosis
- Periksa ServiceAccount pod:
bash kubectl get pod <pod-name> -n <namespace> -o json | jq '.spec.serviceAccountName' - Lihat RoleBinding untuk ServiceAccount itu:
bash kubectl get rolebinding,clusterrolebinding -n <namespace> | grep <serviceaccount> - ClusterRole lalai selalunya termasuk kebenaran
get secrets.
Perintah: Pengukuhan Keselamatan
1. Buat ServiceAccount dengan Keistimewaan Minimum
kubectl create serviceaccount log-collector -n logging
2. Takrifkan Peranan Akses Log Baca Sahaja
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: logging
name: log-reader
rules:
- apiGroups: [""]
resources: ["pods/log", "pods"]
verbs: ["get", "list", "watch"]
3. Ikat Peranan
kubectl create rolebinding log-reader-binding --role=log-reader --serviceaccount=logging:log-collector -n logging
4. Kemas Kini Pod dengan ServiceAccount Baru
Edit spec pod, tetapkan serviceAccountName: log-collector dan buang mount Secret lama.
5. Guna Dasar Rangkaian
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-other-namespaces
namespace: logging
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: logging
6. Guna Piawaian Keselamatan Pod (Restricted)
kubectl label ns logging pod-security.kubernetes.io/enforce=restricted
Kawalan Risiko
- Uji perubahan RBAC dalam persekitaran bukan pengeluaran dahulu.
- Dasar rangkaian mungkin menyekat trafik yang sah; rancang senarai putih lebih awal.
- Piawaian Keselamatan Pod mungkin menghalang pod sedia ada daripada dimulakan; sesuaikan beban kerja secara individu.
Pelan Undur
kubectl delete rolebinding log-reader-binding -n logging
kubectl delete role log-reader -n logging
kubectl delete networkpolicy deny-other-namespaces -n logging
kubectl label ns logging pod-security.kubernetes.io/enforce- # buang label
Pengesahan
- Pastikan pod tidak boleh mengakses namespace lain:
bash kubectl exec -it <pod> -n logging -- curl -k -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" https://kubernetes.default.svc/api/v1/namespaces/default/secretsSeharusnya mengembalikan 403. - Pastikan pengumpulan log masih berfungsi.
Bila Hantar Tiket OpsGlobal
Hantar tiket serta-merta jika: - Anda menemui akses tanpa kebenaran tetapi kekurangan kepakaran keselamatan Kubernetes. - Anda memerlukan audit keselamatan kluster berskala besar dan migrasi dasar. - Anda memerlukan bantuan dengan penilaian keserasian Piawaian Keselamatan Pod atau penulisan dasar tersuai.
Pakar SRE OpsGlobal menyediakan sokongan jauh 24/7 untuk mendiagnosis dan melaksanakan pengukuhan dengan pantas.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Security dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan praktikal untuk mengukuhkan kluster Kubernetes: prinsip RBAC minimum, dasar rangkaian, Piawaian Keselamatan Pod, dan pengurusan rahsia, lengkap dengan langkah undur dan pengesahan.
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.