Ansichten:
Profilanwendbarkeit: Stufe 1
Stellen Sie sicher, dass, wenn der Kubelet auf eine Konfigurationsdatei mit dem --config-Argument verweist, diese Datei im Besitz von root:root ist.
Der Kubelet liest verschiedene Parameter, einschließlich Sicherheitseinstellungen, aus einer Konfigurationsdatei, die durch das Argument --config angegeben wird. Wenn diese Datei angegeben ist, sollten Sie die Dateiberechtigungen einschränken, um die Integrität der Datei zu wahren. Die Datei sollte nur von den Administratoren des Systems beschreibbar sein.
Hinweis
Hinweis
Siehe die AWS EKS-Dokumentation für den Standardwert.

Prüfung

Methode 1
  1. SSH zu den relevanten Worker-Knoten.
  2. Geben Sie den folgenden Befehl ein, um zu überprüfen, ob der Kubelet-Dienst läuft:
    sudo systemctl status kubelet
    Die Ausgabe sollte Active: active (running) since.. zurückgeben.
  3. Führen Sie den folgenden Befehl auf jedem Knoten aus, um die entsprechende Kubelet-Konfigurationsdatei zu finden:
    ps -ef | grep kubelet
    Die Ausgabe des obigen Befehls sollte etwas Ähnliches wie --config/etc/kubernetes/kubelet/kubelet-config.json zurückgeben, was den Speicherort der Kubelet-Konfigurationsdatei darstellt.
  4. Führen Sie diesen Befehl aus, um die Eigentümerschaft der Kubelet-Konfigurationsdatei zu erhalten:
    stat -c %U:%G /etc/kubernetes/kubelet/kubelet-config.json
  5. Überprüfen Sie, ob der Besitz auf root:root festgelegt ist.
Methode 2
Erstellen und Ausführen eines privilegierten Pods
  1. Führen Sie einen Pod aus, der ausreichend privilegiert ist, um auf das Dateisystem des Hosts zuzugreifen. Um dies zu tun, deployen Sie einen Pod, der das hostPath-Volume verwendet, um das Dateisystem des Knotens in den Pod einzubinden.
    Ein Beispiel für eine einfache Pod-Definition, die das Root-Verzeichnis des Hosts im Pod unter /host einbindet:
    apiVersion: v1
    kind: Pod
    metadata:
      name: file-check
    spec:
      volumes:
      - name: host-root
        hostPath:
          path: /
          type: Directory
      containers:
      - name: nsenter
        image: busybox
        command: ["sleep", "3600"]
        volumeMounts:
        - name: host-root
          mountPath: /host
        securityContext:
          privileged: true
  2. Speichern Sie dies in einer Datei (z. B. file-check-pod.yaml) und erstellen Sie das Pod:
    kubectl apply -f file-check-pod.yaml
  3. Sobald das Pod läuft, führen Sie einen Exec-Befehl aus, um die Dateibesitzrechte auf dem Knoten zu überprüfen:
    kubectl exec -it file-check -- sh
  4. Jetzt befinden Sie sich in einer Shell innerhalb des Pods, aber Sie können über das /host-Verzeichnis auf das Dateisystem des Knotens zugreifen und die Eigentümerschaft der azure.json-Datei überprüfen:
    ls -l /host/etc/kubernetes/kubelet/kubelet-config.json
  5. Überprüfen Sie, ob der Besitz auf root:root festgelegt ist.

Wiederherstellung

Führen Sie den folgenden Befehl aus (verwenden Sie den Dateispeicherort der Konfigurationsdatei, der im Audit-Schritt identifiziert wurde):
chown root:root /etc/kubernetes/kubelet/kubelet-config.json