設定檔適用性:等級 1
在 Azure Kubernetes Service (AKS) 叢集中,
azure.json 檔案是由 Kubernetes 雲端供應商整合 Azure 所使用的配置檔案。此檔案包含重要細節,使 Kubernetes 叢集能夠有效地與 Azure Resources
互動。它是 Azure 雲端供應商配置的一部分,讓 Kubernetes 元件能夠與 Azure Services 通訊,以支援負載平衡器、儲存和網路等功能。確保檔案的權限設定為 644 或更嚴格。
AKS 結構中的
azure.json 檔案通常包括:- 租戶 ID:AKS Cluster 所在的 Azure 租戶 ID。
- 訂閱 ID:用於計費和資源管理的 Azure Subscription ID。
- AAD 客戶端 ID:Kubernetes 雲端提供者用於與 Azure Resources 互動的 Azure Active Directory (AAD) 應用程式客戶端 ID。
- AAD 用戶端密碼:AAD 應用程式的密碼。
- 資源群組:AKS Cluster 資源所在的資源群組名稱。
- 位置資訊:部署 AKS Cluster 的 Azure 區域。
- VM 類型:指定叢集使用的 VM 類型(例如,標準 VM 或虛擬機器規模集)。
- 子網路名稱、安全群組名稱、虛擬網路名稱和虛擬網路資源群組:叢集的網路詳細資訊。
- 路由表名稱:叢集的路由表名稱。
- 儲存帳戶類型:用於 Kubernetes 永續性磁碟區的預設儲存帳戶類型。
注意請參閱 Azure AKS 文件以了解預設值。
|
稽核
Method 1-
SSH到相關的工作節點。
-
輸入以下指令以檢查 Kubelet 服務是否正在運行:
sudo systemctl status kubelet
輸出應返回Active: active (running)。 -
在每個節點上執行以下命令以找到適當的 Kubelet 配置檔案:
ps -ef | grep kubelet
輸出應返回類似於--config /etc/kubernetes/azure.json的內容,這是 Kubelet 配置檔案的 位置資訊。 -
執行下列命令:
stat -c %a /etc/kubernetes/azure.json
確認權限是否為644或更嚴格。
建立並執行特權 Pod
-
執行一個具有足夠權限以存取主機檔案系統的 Pod。為此,部署一個使用 hostPath 卷將節點的檔案系統掛載到 Pod 的 Pod。一個簡單的 Pod 定義範例,將主機的根目錄掛載到 Pod 內的 /host:
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 -
將此保存到檔案中(例如,file-check-pod.yaml)並建立 Pod:
kubectl apply -f file-check-pod.yaml
-
一旦 pod 運行,執行進入以檢查節點上的文件權限:
kubectl exec -it file-check -- sh
-
現在您在 Pod 的 Shell 中,但可以透過 /host 目錄存取節點的檔案系統,並檢查檔案的權限等級:
ls -l /host/etc/kubernetes/azure.json
驗證指定的檔案是否存在,並確認其權限為644或更嚴格。
補救
執行以下指令(使用在稽核步驟中識別的設定檔案位置):
chmod 644 /etc/kubernetes/azure.json
