Kubernetes v1.35: Tightening Security with Exec Plugin Allowlists
In an era where security breaches are a constant threat, Kubernetes v1.35's new feature to restrict executables invoked by kubeconfigs is a game changer. This capability allows you to define a clear policy on which credential plugins kubectl can execute, significantly reducing the risk of unauthorized access and potential exploits.
The mechanism is straightforward. You can enforce this policy by modifying your kuberc configuration file to include two key fields: credentialPluginPolicy and credentialPluginAllowlist. The credentialPluginPolicy can be set to AllowAll, DenyAll, or Allowlist, with the default being AllowAll. When you specify Allowlist, you must also define the credentialPluginAllowlist, which details the exact plugins that are permitted. For instance, you might configure it to allow only specific plugins like /usr/local/bin/cloudco-login and get-identity. This level of granularity helps ensure that only trusted plugins can be executed, thus bolstering your security posture.
In production, be mindful of the implications of setting your policy to DenyAll. If you do, any attempt to use a plugin not explicitly allowed will result in errors, such as "plugin 'cloudco-login' not allowed: policy set to 'DenyAll'." This feature is in beta and available without feature gates, so you can adopt it right away. However, always test configurations in a staging environment before rolling them out to production to avoid disruptions.
Key takeaways
- →Configure `credentialPluginPolicy` to control plugin execution.
- →Use `credentialPluginAllowlist` to specify allowed credential plugins.
- →Beware of the `DenyAll` policy, which can block necessary plugins.
- →Test your configuration in a staging environment before production deployment.
Why it matters
Implementing an exec plugin allowlist can drastically reduce the attack surface of your Kubernetes cluster, protecting sensitive credentials from being compromised by unauthorized plugins.
Code examples
1apiVersion: kubectl.config.k8s.io/v1beta1
2kind: Preference
3credentialPluginPolicy: Allowlist
4credentialPluginAllowlist:
5- name: /usr/local/bin/cloudco-login
6- name: get-identityapiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
credentialPluginPolicy: AllowAllapiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
credentialPluginPolicy: DenyAllWhen NOT to use this
The official docs don't call out specific anti-patterns here. Use your judgment based on your scale and requirements.
Want the complete reference?
Read official docsUnified observability — logs, uptime monitoring, and on-call in one place. Used by 50,000+ engineering teams to ship faster and sleep better.
Try Better Stack free →Extend Your CKA Certification: The Power of CKS
Want to keep your Kubernetes Administrator certification current? Passing the Certified Kubernetes Security Specialist (CKS) exam now extends your CKA certification. This new feature simplifies credential maintenance for cloud-native professionals.
Building a Multi-Agent Security Platform on Kubernetes: Why Cloud Native is Key
Cloud-native architecture is essential for deploying agentic AI effectively. Discover how using the A2A protocol and mTLS can enhance inter-agent communication and security in your Kubernetes environment.
Locking Down Dependencies in CI/CD: A Must for Open Source Projects
In the world of open source, securing your CI/CD pipeline is non-negotiable. Pinning GitHub Actions by SHA digest is a critical step to prevent compromised code from sneaking into your workflows. Let's dive into how to implement this effectively.
Get the daily digest
One email. 5 articles. Every morning.
No spam. Unsubscribe anytime.