Skip to main content

More Info:

Client certificates are hard to revoke and rotate, making them unsuitable for user authentication. Use stronger mechanisms such as OIDC instead.

Risk Level

Medium

Address

Security

Compliance Standards

  • CIS OKE

Triage and Remediation

Remediation

Manual Steps

  1. Identify user client certificates currently in use
    • Run on: any machine with kubectl access
    • List all kubeconfigs your users are using (for example, in a shared repo or profile locations), then inspect for client-certificate auth:
    • For any kubeconfig found, confirm it is using client certs instead of tokens/OIDC:
  2. Review and decide which authentication mechanisms to keep
    • Run on: any machine with kubectl access
    • Get the current authentication configuration of the API server (in OKE this is managed by the control plane and configured via the cloud console/API/IaC, not directly on nodes):
    • Decide that interactive human access will move to OIDC or other token-based methods supported by OKE (as per your organization’s IdP and OKE documentation) and that client certificates will only remain, if at all, for tightly controlled system components.
  3. Configure OIDC (or other non-certificate user auth) in OKE
    • Run in: Oracle Cloud Console or your Terraform/OCI CLI environment (cannot be done with kubectl or host-level edits on OKE control plane nodes).
    • In the OKE cluster configuration, enable OIDC (or your chosen IdP) for Kubernetes API authentication and obtain new kubeconfigs for users that use OIDC tokens instead of client certs, following OKE’s documented procedure.
    • Distribute updated kubeconfigs to users and ensure they can authenticate and perform their required actions using OIDC.
  4. Phase out user client-certificate-based kubeconfigs
    • Run on: any machine with kubectl access and wherever user configs are stored
    • Revoke or delete any PKI material used for user auth (CA or user certs) in your enterprise PKI/secret store according to your PKI process.
    • Remove or replace client-certificate fields from user kubeconfigs so they no longer rely on them:
  5. Ensure OKE control plane is not issuing new user client certificates
    • Run in: Oracle Cloud Console or your Terraform/OCI CLI environment
    • Review your cluster/IaC configuration for any automation that requests or distributes user X.509 client certificates (for example, scripts that call openssl and then embed cert/key into kubeconfigs). Disable or remove these flows so new user access is provisioned only with OIDC or other non-certificate methods supported by OKE.
  6. Verification (no remaining user client certificate auth)
    • Run on: any machine with kubectl access
    • Confirm that current kubeconfigs do not contain client certs:
    • Attempt a kubectl command using an old client-certificate-based kubeconfig; it should fail, while the OIDC-based kubeconfig continues to work:
kubectl cannot change how users authenticate to the OKE control plane, because this is configured at the managed control-plane / cloud console / IaC layer, not via Kubernetes API objects. To remediate this finding, follow the guidance in the Manual Steps section for updating your OKE control-plane authentication configuration.