Profilanwendbarkeit: Stufe 1
Die Datei
azure.json 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 Netzwerk zu kommunizieren.Stellen Sie sicher, dass die Datei
root:root gehört.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.
HinweisSiehe die Azure AKS-Dokumentation für den Standardwert.
|
Prüfung
Method 1-
SSH zum entsprechenden Worker-Knoten.
-
Geben Sie den folgenden Befehl ein, um zu überprüfen, ob der Kubelet-Dienst läuft:
sudo systemctl status kubelet
Die Ausgabe sollteAktiv: aktiv (läuft)zurückgeben. -
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.jsonzurückgeben, was den Speicherort der Kubelet-Konfigurationsdatei darstellt. -
Führen Sie den folgenden Befehl aus:
stat -c %U:%G /etc/kubernetes/azure.json
Überprüfen Sie, ob die Eigentümerschaft aufroot:rootgesetzt ist.
Erstellen und Ausführen eines privilegierten Pods
-
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 -
Speichern Sie dies in einer Datei (z.B. file-check-pod.yaml) und erstellen Sie das Pod:
kubectl apply -f file-check-pod.yaml
-
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
-
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 Datei überprüfen:
ls -l /etc/kubernetes/azure.json
Überprüfen Sie, ob die Eigentümerschaft aufroot:rootgesetzt ist.
Wiederherstellung
Führen Sie den folgenden Befehl aus (unter Verwendung des im Audit-Schritt identifizierten
Dateispeicherorts der Konfigurationsdatei):
chown root:root /etc/kubernetes/azure.json
