Skip to main content

More Info:

Disable client certificate authentication for the cluster, as client certs cannot be easily revoked and are a weak long-lived credential. Rely on short-lived IAM-based authentication instead.

Risk Level

Critical

Address

Security

Compliance Standards

  • CIS GKE

Triage and Remediation

Remediation

Manual Steps

  1. Identify clusters and current client certificate setting
    • Run on: any machine with gcloud access
    • Command:
      For each cluster:
      Note whether .masterAuth.clientKey and .masterAuth.clientCertificate are null/empty or contain data.
  2. Determine if client certificates are in active use
    • Run on: any machine with kubectl access
    • For each context using this cluster, inspect user auth type:
      Check under users[].user for client-certificate / client-key fields.
    • On admin workstations or CI/CD configs, search for kubeconfigs with client certs:
      Document any automation or users that still rely on client cert auth.
  3. Decide whether the cluster can be recreated without client certificates
    • Review:
      • Whether you rely exclusively on GKE IAM / gke-gcloud-auth-plugin (preferred).
      • Any legacy tooling that cannot use IAM-based auth.
    • If any critical dependency requires client certificates and cannot be migrated, plan a migration first before proceeding.
  4. Plan and perform cluster recreation with --no-issue-client-certificate (if acceptable)
    • Design a migration: node pools, workloads, storage (PVs), and network settings (VPC, firewall rules, authorized networks).
    • Create a new cluster without client certificates:
    • Recreate node pools, migrate workloads (e.g., via kubectl apply or GitOps), and rebind IAM and RBAC as needed.
    • Once validated, decommission the old cluster:
  5. Update all access methods to use IAM-based authentication
    • Ensure gcloud and gke-gcloud-auth-plugin are installed and enabled on admin/CI machines:
    • Confirm kubeconfig users no longer reference client certificates:
      Verify user entries rely on auth-provider: gcp or exec with gke-gcloud-auth-plugin.
  6. Verify remediation
    • Run on: any machine with gcloud access
    • Command for each active cluster:
    • The values should be null (or absent) for clusters where client certificate authentication is disabled.
kubectl cannot disable client certificate authentication, because this setting is managed at the GKE control-plane / cloud provider configuration layer (via gcloud, console, or IaC). Refer to the Manual Steps section for guidance on reviewing and recreating the cluster with --no-issue-client-certificate.