Tempah Konsultasi Hantar Tiket

Mengeraskan Kubernetes untuk SRE: Panduan Praktikal untuk Melindungi Kluster Anda

Pelajari langkah pengukuhan keselamatan penting untuk kluster Kubernetes, dari RBAC dan dasar rangkaian hingga kemasukan keselamatan pod dan log audit, dengan senario SRE sebenar dan prosedur pemulihan.

Mengeraskan Kubernetes untuk SRE: Panduan Praktikal untuk Melindungi Kluster Anda
Security 6min 48 paparan 2026-07-07
KubernetesSRE

Senario

Sebagai SRE, anda mendapati bahawa nod pekerja Kubernetes mempunyai port kubelet yang tidak selamat (10250) terdedah kepada rangkaian dalaman, membolehkan akses tanpa pengesahan kepada pod dan kontena. Penyerang boleh menyenaraikan beban kerja yang berjalan atau melaksanakan arahan.

Gejala

  • Imbasan keselamatan melaporkan port kubelet terbuka.
  • Penciptaan pod tidak dijangka dalam ruang nama sistem.
  • Log pelayan API menunjukkan banyak permintaan tanpa pengesahan ke titik akhir kubelet.

Diagnosis

  1. Periksa bendera permulaan kubelet: ps aux | grep kubelet. Cari ketiadaan --authentication-token-webhook dan --authorization-mode=Webhook.
  2. Sahkan pendedahan port: nmap -p 10250 <node-ip>.
  3. Cuba akses terus: curl -k https://<node-ip>:10250/pods. Jika ia mengembalikan data pod, kubelet tidak selamat.

Arahan & Tindakan

1. Dayakan Pengesahan & Kebenaran Kubelet

Edit fail konfigurasi kubelet (cth., /var/lib/kubelet/config.yaml) dan tambah:

authentication:
  webhook:
    enabled: true
  anonymous:
    enabled: false
authorization:
  mode: Webhook

Mulakan semula: systemctl restart kubelet.

2. Had Rangkaian

Gunakan Dasar Rangkaian Kubernetes atau firewall awan untuk mengehadkan akses kubelet hanya kepada pelayan API dan alat pemantauan. Contoh:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: restrict-kubelet
  namespace: kube-system
spec:
  podSelector:
    matchLabels:
      component: kubelet
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          component: kube-apiserver
    ports:
    - port: 10250

3. Dayakan Pengawal Kemasukan NodeRestriction

Tambah --enable-admission-plugins=NodeRestriction pada argumen kube-apiserver untuk memastikan nod hanya boleh mengubah suai sumber berkaitan mereka sendiri.

4. RBAC untuk API Kubelet

Buat ClusterRole dan ClusterRoleBinding yang memberikan kumpulan system:nodes hanya kebenaran yang diperlukan (cth., nodes/proxy).

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: system:kubelet-api-admin
rules:
- apiGroups: [""]
  resources: ["nodes/proxy"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: system:kubelet-api-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:kubelet-api-admin
subjects:
- kind: Group
  name: system:nodes
  apiGroup: rbac.authorization.k8s.io

5. Kuatkuasakan Piawaian Keselamatan Pod

Dayakan Kemasukan Keselamatan Pod (PSA) dengan melabel ruang nama:

kubectl label ns default pod-security.kubernetes.io/enforce=restricted

Untuk dasar tersuai, pertimbangkan OPA/Gatekeeper.

Kawalan Risiko

  • Uji semua perubahan dalam persekitaran pementasan terlebih dahulu.
  • Pastikan pelayan API mempunyai memori yang mencukupi untuk mengendalikan webhook kemasukan tambahan.
  • Sandarkan fail konfigurasi kubelet sebelum pengubahsuaian.
  • Laksanakan perubahan kubelet secara beransur-ansur (cth., satu nod pada satu masa).

Pemulihan

  1. Pulihkan konfigurasi kubelet asal dan mulakan semula perkhidmatan.
  2. Padam sumber RBAC yang ditambah: kubectl delete clusterrole system:kubelet-api-admin.
  3. Padam Dasar Rangkaian.
  4. Alih keluar label PSA jika digunakan.

Pengesahan

  1. Cuba akses tanpa pengesahan: curl -k https://<node-ip>:10250/pods harus mengembalikan 401 atau 403.
  2. Uji dengan token ServiceAccount yang sah: kubectl get --raw /api/v1/nodes/<node>/proxy/pods harus berjaya (memerlukan RBAC yang sesuai).
  3. Semak log pelayan API untuk permintaan kubelet yang dinafikan.

Bila untuk Menghantar Tiket OpsGlobal

  • Jika selepas pengukuhan anda melihat isu sambungan meluas atau nod tidak tersedia.
  • Apabila anda memerlukan bantuan untuk melaksanakan Piawaian Keselamatan Pod pada skala atau menyepadukan OPA/Gatekeeper.
  • Untuk konfigurasi log audit dan peraturan amaran.
  • Jurutera SRE kanan OpsGlobal menyediakan sokongan jauh 24/7 untuk memastikan kluster pengeluaran anda selamat dan stabil.

Senario Penggunaan

Sesuai untuk pasukan yang menyelesaikan isu Security dan memerlukan aliran kerja yang jelas.

Latar Belakang Masalah

Pelajari langkah pengukuhan keselamatan penting untuk kluster Kubernetes, dari RBAC dan dasar rangkaian hingga kemasukan keselamatan pod dan log audit, dengan senario SRE sebenar dan prosedur pemulihan.

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.

Tiket Hubungi WhatsApp Konsultasi