Ansichten:
Profilanwendbarkeit: Stufe 1
Die azure.json-Datei in einem Azure Kubernetes Service (AKS)-Cluster ist eine Konfigurationsdatei, die von der Kubernetes-Cloud-Anbieter-Integration für Azure verwendet wird. Diese Datei enthält wesentliche Details, die es dem Kubernetes-Cluster ermöglichen, effektiv mit Azure Resources zu interagieren. Sie ist Teil der Azure Cloud Provider-Konfiguration und ermöglicht es Kubernetes-Komponenten, mit Azure Services für Funktionen wie Load Balancer, Speicher und Netzwerkkommunikation zu kommunizieren.
Stellen Sie sicher, dass die Datei Berechtigungen von 644 oder restriktiver hat.
Die Datei azure.json in der AKS-Struktur enthält typischerweise:
  • Mandanten-ID: Die Azure-Mandanten-ID, in der sich der AKS Cluster befindet.
  • Abonnement-ID: Die Azure Subscription-ID, die für Abrechnung und Ressourcenverwaltung verwendet wird.
  • AAD-Client-ID: Die Client-ID der Azure Active Directory (AAD)-Anwendung, die vom Kubernetes-Cloud-Anbieter verwendet wird, um mit Azure Resources zu interagieren.
  • AAD-Clientgeheimnis: Das Geheimnis für die AAD-Anwendung.
  • Ressourcengruppe: Der Name der Ressourcengruppe, in der sich die AKS Cluster-Ressourcen befinden.
  • Location: The Azure region where the AKS cluster is deployed.
  • VM-Typ: Gibt den Typ der von dem Cluster verwendeten VMs an (z. B. Standard-VMs oder Virtual Machine Scale Sets).
  • Subnet-Name, Sicherheitsgruppenname, Vnet-Name und Vnet-Ressourcengruppe: Netzwerkdetails für den Cluster.
  • Routentabellenname: Der Name der Routentabelle für den Cluster.
  • Speichertyp: Der Standardtyp des Speicherkontos, der für Kubernetes-Persistent-Volumes verwendet wird.
Hinweis
Hinweis
Siehe die Azure AKS-Dokumentation für den Standardwert.

Prüfung

Method 1
  1. SSH zum entsprechenden 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 Aktiv: aktiv (läuft) 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 sollte etwas Ähnliches wie --config /etc/kubernetes/azure.json zurückgeben, was den Speicherort der Kubelet-Konfigurationsdatei darstellt.
  4. Führen Sie den folgenden Befehl aus:
    stat -c %a /etc/kubernetes/azure.json
    Überprüfen Sie, ob die Berechtigungen 644 oder restriktiver sind.
Method 2
Erstellen und Ausführen eines privilegierten Pods
  1. Run a pod that is privileged enough to access the host's file system. To do this, deploy a pod that uses the hostPath volume to mount the node's file system into the pod.
    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 Dateiberechtigungen 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 Berechtigungsstufe der Datei überprüfen:
    ls -l /host/etc/kubernetes/azure.json
    Überprüfen Sie, ob eine Datei angegeben ist und ob sie existiert, dass die Berechtigungen 644 oder restriktiver sind.

Wiederherstellung

Führen Sie den folgenden Befehl aus (unter Verwendung des im Audit-Schritt identifizierten Dateispeicherorts der Konfigurationsdatei):
chmod 644 /etc/kubernetes/azure.json