> ## Documentation Index
> Fetch the complete documentation index at: https://cloudanix.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Ensure Proxy Kubeconfig File Ownership Is Root

### More Info:

If kube-proxy is running, ensure that the file ownership of its kubeconfig file is set to root:root.

### Risk Level

Low

### Address

Security

### Compliance Standards

* CIS GKE

### Triage and Remediation

<Tabs>
  <Tab title="Remediation">
    ### Remediation

    <AccordionGroup>
      <Accordion title="Manual Steps" defaultOpen="true">
        1. On every worker node, confirm the kube-proxy kubeconfig file exists and review its current ownership:
           ```bash theme={null}
           ls -l /var/lib/kube-proxy/config.conf
           ```

        2. On every worker node, change the file owner and group to root:root:
           ```bash theme={null}
           sudo chown root:root /var/lib/kube-proxy/config.conf
           ```

        3. (Optional, only if permissions also need tightening) On every worker node, restrict permissions to owner read/write only:
           ```bash theme={null}
           sudo chmod 600 /var/lib/kube-proxy/config.conf
           ```

        4. On every worker node, verify the ownership is now root:root:
           ```bash theme={null}
           stat -c %U:%G /var/lib/kube-proxy/config.conf
           ```
      </Accordion>

      <Accordion title="Using kubectl">
        kubectl cannot change file ownership on worker node filesystems, including `/var/lib/kube-proxy/config.conf`. This must be fixed directly on every worker node via host-level commands; follow the Manual Steps section to update ownership and verify.
      </Accordion>

      <Accordion title="Automation">
        ```bash theme={null}
        #!/usr/bin/env bash
        #
        # Remediation: Ensure Proxy Kubeconfig File Ownership Is Root (CIS GKE 3.1.2)
        # Target: every worker node
        #
        # Run this script on each worker node (as root). It is safe to re-run.

        set -euo pipefail

        KUBEPROXY_KUBECONFIG="/var/lib/kube-proxy/config.conf"

        echo "==> Checking for kube-proxy kubeconfig at: ${KUBEPROXY_KUBECONFIG}"

        if [ ! -e "${KUBEPROXY_KUBECONFIG}" ]; then
          echo "File not found: ${KUBEPROXY_KUBECONFIG}"
          echo "Nothing to change on this node (kube-proxy may not be running here)."
          exit 0
        fi

        # Current ownership
        current_owner="$(stat -c '%U:%G' "${KUBEPROXY_KUBECONFIG}")"
        echo "Current ownership: ${current_owner}"

        # Desired ownership is root:root
        if [ "${current_owner}" != "root:root" ]; then
          echo "Updating ownership to root:root ..."
          chown root:root "${KUBEPROXY_KUBECONFIG}"
        else
          echo "Ownership already set to root:root; no change needed."
        fi

        # Verification step (adapted from the audit concept, for the correct file)
        echo "==> Verifying ownership..."
        verify_owner="$(stat -c '%U:%G' "${KUBEPROXY_KUBECONFIG}")"
        echo "Verified ownership: ${verify_owner}"

        if [ "${verify_owner}" != "root:root" ]; then
          echo "ERROR: Ownership still not root:root on ${KUBEPROXY_KUBECONFIG}" >&2
          exit 1
        fi

        echo "Remediation successful on this worker node."
        ```
      </Accordion>
    </AccordionGroup>
  </Tab>
</Tabs>

### Additional Reading:

* [https://kubernetes.io/docs/admin/kube-proxy/](https://kubernetes.io/docs/admin/kube-proxy/)
