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.
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 %a /etc/kubernetes/azure.json
Überprüfen Sie, ob die Berechtigungen 644 oder restriktiver sind.
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 Dateiberechtigungen 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 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
