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>
		