More Info:
Kubelet must require client certificate authentication (x509) for incoming requests. Without TLS-based client auth, control-plane components or attackers within the network can issue privileged kubelet requests.Risk Level
HighAddress
Compliance, SecurityCompliance Standards
- CIS OKE
Triage and Remediation
- Remediation
Remediation
Using Console
Using Console
In OKE this setting is controlled at the node pool level. You can only choose it when creating a node pool; for existing node pools, you effectively remediate by creating a new node pool with kubelet TLS enabled and migrating workloads.Below are the steps in the OCI Console.
1. Create a new node pool with kubelet SSL/TLS auth
- Sign in to the OCI Console.
- In the left-side menu, go to
Developer Services → Kubernetes Clusters (OKE). - Click on the cluster you want to fix.
- Go to the Node Pools tab.
- Click Create node pool.
- Fill in the basic fields (name, Kubernetes version, subnet, shape, etc.).
- Scroll to the Kubelet configuration / security section (name may vary slightly depending on console version), and:
- Locate the setting for Kubelet authentication or Kubelet security.
- Set it to Use SSL/TLS certificates (or equivalent wording such as “Authenticate using certificates”).
- Complete any remaining required options (boot volume, number of nodes, placement, etc.).
- Click Create and wait for the node pool status to become Active.
2. Migrate workloads from old node pool to new one
If you already had a node pool without kubelet TLS auth:- Label or taint nodes in the new node pool as needed (for scheduling control).
- Cordon and drain old nodes:
Repeat for each node in the old node pool.
- Verify that Pods are being rescheduled on the new node pool.
- Once workloads are stable on the new nodes, in the OCI Console:
- Go back to the Node Pools tab for the cluster.
- Select the old node pool.
- Click Delete and confirm.
3. Use TLS-authenticated node pools for all future changes
For all future node pools:- Always set kubelet authentication to use SSL/TLS certificates during creation.
- Standardize this in your infrastructure-as-code (Terraform/Resource Manager) if you use it, so console-created pools match your baseline.
Using CLI
Using CLI
In Oracle Container Engine for Kubernetes (OKE), kubelet SSL/TLS authentication is already enforced and not configurable via OCI CLI. There is no OCI CLI command to “turn it on” because:
- Worker nodes in OKE always run kubelet with TLS enabled.
- Kubelet authenticates to the API server using client certificates that OKE provisions and manages.
- You cannot disable or downgrade this behavior from the OCI side.
-
Ensure you are using supported OKE node images
- List node pools:
- For each node pool, check
nodeImageIdis an official Oracle Linux OKE image.
- List node pools:
-
Upgrade / recreate nodes on current OKE images
- To roll nodes to the latest image:
- Or recreate the node pool with the latest image.
- To roll nodes to the latest image:
-
(Optional) Rotate cluster CA and certs if you suspect compromise
-
(Optional) Verify kubelet is using TLS (per node, via SSH)
- SSH to a worker node and inspect kubelet args:
- You’ll see flags such as:
--tls-cert-file=...--tls-private-key-file=...--client-ca-file=...
- SSH to a worker node and inspect kubelet args:
Using Python
Using Python
For Oracle Container Engine for Kubernetes (OKE), kubelet authentication with the API server using TLS client certificates is managed and enforced by Oracle. You cannot (and do not need to) “turn it on” yourself, and there is no public API/flag to disable it.Most “kubelet should authenticate using SSL/TLS certificates” findings against OKE are scanner false positives, because the scanner is assuming you have access to kubelet flags (like a self-managed cluster) when you actually don’t in OKE.So there are two practical parts to an answer:
Make sure you have
The
Upgrading ensures all kubelet nodes run with Oracle’s newest secure configs and images (including TLS/mTLS defaults).
- What’s actually required/possible for OKE
- How to use Python to validate or document compliance (since you can’t change kubelet flags directly)
1. Reality in OKE: Kubelet is already using TLS certs
In OKE:- Kubelet communicates with the managed API server using TLS client certificates issued by the OKE control plane.
- You do not have:
- Direct control of
kubeletstartup flags (--anonymous-auth,--client-ca-file, etc.) - Access to the API server or kubelet systemd units to modify TLS configuration
- Direct control of
- Confirm you are running a supported, current OKE version.
- Show evidence that:
- Node kubeconfigs are TLS-based.
- Kubernetes version is one where OKE uses mTLS between kubelet and apiserver (all generally supported versions).
- Optionally, rotate worker node pools to the latest platform image and Kubernetes version to align with Oracle’s secure defaults.
2. Using Python (OCI SDK) to validate and harden OKE configuration
Step 1 – Install and configure the OCI Python SDK
~/.oci/config set up with a profile that has permissions on OKE:Step 2 – List clusters and get cluster details (Kubernetes versions etc.)
endpoint_config.ca_certificate proves the cluster is using TLS with a CA; kubelets in OKE use TLS client certs signed by this CA to call the API server (managed behavior).Step 3 – Ensure clusters/node pools are on current versions (best-practice hardening)
If your scanner is strict, part of remediation can be:- Upgrade the cluster control plane to a supported, current version
- Upgrade all node pools to the same or newer version and current platform images
Step 4 – (Optional) Script evidence for an auditor
If your goal is to prove kubelet uses TLS rather than “fix” it, you can script:- Fetch cluster endpoint CA.
- Obtain a node’s kubeconfig from OKE (for private access) – it will contain
certificate-authority-dataand TLS configuration. - Save these as artifacts to show “kubelet/APIServer communication is TLS-based, and we cannot disable it.”
Key Point
For OCI OKE:- There is no Python/SDK-based remediation for “kubelet should authenticate using SSL/TLS certificates” because OKE already enforces TLS client certificate authentication for kubelet ↔ API server, and does not expose insecure modes.
- The proper response is to:
- Treat this as a false positive in your scanner for managed OKE.
- Use Python/SDK to keep clusters/node pools current and to generate evidence (CA cert, kubeconfig TLS fields) demonstrating compliance.
Using Terraform
Using Terraform
oci_containerengine_node_pool.To change kubelet TLS client authentication you would need either:- Self-managed worker nodes (not OKE-managed) where you own the kubelet systemd/flags and certificates, or
- Oracle to change the managed control plane / node configuration (not customer-configurable today).
terraform plan will show no changes related to kubelet TLS / client certificate authentication, because there is no argument to manage. Any remediation for this control must be assessed and implemented outside of Terraform using the OCI Console and/or custom node bootstrap scripts on self-managed nodes.
