Zum Hauptinhalt springen

Risiken

Wichtige Pfade in Kubernetes-Clustern sichern

Die Dateien Kubeconfig, Kubeletconfig und Kubeadmconfig enthalten wichtige Informationen über den Kubernetes-Cluster. Ein unbefugter Zugriff oder eine Änderung dieser Konfigurationen kann den Betrieb des Clusters stark beeinträchtigen und ihn möglicherweise lahmlegen.

Wichtige Verzeichnisse mit kritischen Informationen

Standardmäßig enthalten die folgenden Verzeichnisse wichtige Informationen über den Clust

  • /etc/kubernetes/
  • /var/lib/kubelet/
  • /etc/sysconfig/kubelet
  • $HOME/./kube/config.yaml

Diese Verzeichnisse sollten stark eingeschränkt werden, da sie nur für die Fehlersuche durch Administratoren relevant sind.

Folgen eines unbefugten Zugriffs oder einer Modifikation

Lähmung des Clusters:

Die Änderung von Konfigurationsdateien kann die gesamte Kubernetes-Kontrollebene unterbrechen. Änderungen an Kubeadmconfig können die Cluster-Initialisierung, Upgrades und Versionskompatibilität beeinträchtigen.


Unterbrechung des Dienstes:

Nicht autorisierte Änderungen an Kubeletconfig können den Betrieb des Kubelet beeinträchtigen, das für die Verwaltung des Lebenszyklus von Pods auf Knoten zuständig ist. Dies kann zu Knotenausfällen und Serviceunterbrechungen führen.


Sicherheitsverstöße:

Durch den Zugriff auf Kubeconfig können unbefugte Benutzer Anmeldedaten für die Clusterverwaltung erhalten, was zu potenziellen Sicherheitsverletzungen führen kann. Dies kann zu nicht autorisierten Bereitstellungen, Datendiebstahl und Kontrollverlust über den Cluster führen.


Durchsickern von Konfigurationen:

Die Offenlegung dieser Konfigurationsdateien kann sensible Cluster-Informationen offenlegen, einschließlich Cluster-Endpunkte, Zertifikate und API-Server-Details. Diese Informationen können für gezielte Angriffe ausgenutzt werden.

Strengere Zugangskontrollen

Um die mit unbefugtem Zugriff verbundenen Risiken zu mindern, ist die Durchsetzung strenger Zugangskontrollen von entscheidender Bedeutung:

Beschränken Sie den Verzeichniszugriff:

Stellen Sie sicher, dass nur Cluster-Administratoren Lese- und Schreibberechtigungen für die folgenden Verzeichnisse haben:

  • chmod -R 700 /etc/kubernetes/
  • chmod -R 700 /var/lib/kubelet/
  • chmod -R 700 /etc/sysconfig/kubelet
  • chmod 700 $HOME/.kube/config.yaml

 

Limit systemctl Access:

The systemctl command can reveal configuration paths using systemctl cat kubelet. Limit access to systemctl so that only cluster administrators can execute it:

  • chmod 700 /bin/systemctl

ConfigMap-Zugang einschränken:

Konfigurationsdateien werden in Pods oft über ConfigMaps im kube-system-Namensraum eingebunden. Schränken Sie den Zugriff auf diese ConfigMaps ein:

apiVersion: rbac.authorization.k8s.io/v1

kind: Role

metadata:

  namespace: kube-system

  name: configmap-reader

rules:

- apiGroups: [""]

  resources: ["configmaps"]

  verbs: ["get", "list", "watch"]




apiVersion: rbac.authorization.k8s.io/v1

kind: RoleBinding

metadata:

  namespace: kube-system

  name: configmap-reader-binding

subjects:

- kind: User

  name: <admin-username>

  apiGroup: rbac.authorization.k8s.io

roleRef:

  kind: Role

  name: configmap-reader

  apiGroup: rbac.authorization.k8s.io

Use Role-Based Access Control (RBAC):

Implement RBAC to manage access to resources based on user roles. Ensure that non-admin users have minimal permissions:

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRole

metadata:

  name: view-only

rules:

- apiGroups: [""]

  resources: ["pods", "services"]

  verbs: ["get", "list", "watch"]




apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

  name: view-only-binding

subjects:

- kind: User

  name: <non-admin-username>

  apiGroup: rbac.authorization.k8s.io

roleRef:

  kind: ClusterRole

  name: view-only

  apiGroup: rbac.authorization.k8s.io

Orientieren Sie sich an folgenden Maßnahmen: