Profile applicability: Level 1
If 
kube-proxy is running, ensure that the file ownership of its kubeconfig file is set to root:root.The kubeconfig file for 
kube-proxy controls various parameters for the kube-proxy service in the worker node. You should set its file ownership to maintain the integrity
               of the file. The file should be owned by root:root.|  | NoteThe default ownership of the proxy kubeconfig file is  root:root. | 
Impact
Overly permissive file access increases the security risk to the platform.
Audit
Using Google Cloud Console
- Go to Kubernetes Engine.
- Click on the desired cluster to open the Details page, then click on the desired Node pool to open the Node pool Details page.
- Note the name of the desired node.
- Go to VM Instances.
- Find the desired node and click on SSH to open an SSH connection to the node.
Using Command Line
Method 1: SSH to the worker nodes
- To check to see if the Kubelet Service is running:
                        sudo systemctl status kubelet 
- The output should return Active: active (running) since.... Run the following command on each node to find the appropriate kubeconfig file:ps -ef | grep kubelet 
- The output of the above command should return something similar to --kubeconfig/var/lib/kubelet/kubeconfig, which is the location of the kubeconfig file.
- Run this command to obtain the kubeconfig file ownership:
                        stat -c %U:%G /var/lib/kubelet/kubeconfig 
- The output of the above command gives you the kubeconfig file's ownership. Verify
                        that the ownership is set to root:root.
Method 2: Create and Run a Privileged Pod
- Run a pod that is privileged enough to access the host's file system by deploying
                        a pod that uses the hostPath volume to mount the node's file system into the pod.
                        Here's an example of a simple pod definition that mounts the root of the host to /host
                        within the pod:
                        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 
- Save this to a file (e.g., file-check-pod.yaml) and create the pod:
                        kubectl apply -f file-check-pod.yaml 
- Once the pod is running, you can exec into it to check file ownership on the node:
                        kubectl exec -it file-check -- sh 
- Now you are in a shell inside the pod, but you can access the node's file system through
                        the /host directory and check the ownership of the file:
                        ls -l /host/var/lib/kubelet/kubeconfig 
- Verify that the ownership is set to root:root.
Remediation
Run the below command (based on the file location on your system) on each worker node:
chown root:root <proxy kubeconfig file>
 
		