Shubham Sharma
November 16, 2023

Authentication in Kubernetes

Table of Contents:

  1. Introduction
  2. 6 Ways to Authenticate Users in K8s
  3. The Bottom Line

Introduction

Since its inception in 2014, Kubernetes has been one of the most popular container orchestration systems. A survey by CNCF found over 3.9 million Kubernetes developers globally and a whooping 76,000+ companies using this technology. But with mass adoption and usage comes the concern of security breaches and data threats.

According to Red Hat's Kubernetes adoption, security, and market trends report 2021, 55% of DevOps, engineering, and security professionals have delayed deploying apps due to container or Kubernetes security issues.

Kubernetes container orchestration system enables users to automate containerized applications' deployment, scaling, and management. As Kubernetes environments become increasingly complex and distributed, securing the platform and its applications is essential. Authentication is critical to Kubernetes security, and several authentication methods are available to Kubernetes users. 

This article will explore the most common and effective methods you can rely on as a Kubernetes user. We have narrowed down the list to six methods that we believe are the best.

6 Ways to authenticate users in K8s

Kubernetes clusters have two types of users: 

  1. Kubernetes service accounts
  2. Normal users

Normal users are managed in the following ways by a cluster-independent service:

  • a system administrator who distributes private keys
  • a user database such as Keystone or Google Accounts
  • a text file containing a list of usernames and passwords

Normal users cannot be added through API, but any user who presents a valid certificate signed by the cluster's certificate authority (CA) is considered authorized. Service accounts are users handled by the Kubernetes API. They are associated with specific namespaces and can be established automatically by the API server or manually via API calls. 

To authenticate API requests, Kubernetes uses client certificates, bearer tokens, or an authenticating proxy via authentication plugins.

Let us dive into the 6 most secure methods to authenticate users on Kubernetes.

Certificates

Certificates are the default authentication method in Kubernetes, and they are used by all resources and users to communicate with the Kubernetes cluster. A certificate is a digital document that identifies a user, client, or server and is used to verify their identity. 

In Kubernetes, certificates are signed by a certificate authority (CA) and used in a mutual authentication process where the server and the client verify each other's identities. 

Certificates are an effective authentication method in Kubernetes since they offer robust security and can be used for users and machines.

Static Token Files

Static token files provide an alternative authentication method in Kubernetes. In this method, users are authenticated by providing a token that the Kubernetes API server reads. 

Static token files are a simple way to authenticate users in Kubernetes; they are not recommended since they are static and can be compromised. If a token is compromised, the Kubernetes server must be restarted to remove it.

It's worth noting that static token files can be useful in certain scenarios, such as when deploying Kubernetes in a small, secure environment where authentication needs are simple. 

However, in most cases, it's recommended to use more secure authentication methods, such as OIDC tokens or webhook token authentication. Additionally, static token files can be difficult to manage as the number of users and tokens grows, making it harder to track who has access to the Kubernetes cluster.

Bootstrap Tokens

Bootstrap tokens are a special type of token used during the initial setup of a node in a Kubernetes cluster. They are exchanged for a certificate from the API server to complete the authentication process. This process is typically performed automatically during the installation of Kubernetes, and users do not need to manage bootstrap tokens manually.

Bootstrap tokens are primarily used for nodes and kubelets, which are responsible for running and managing containers on the cluster. They are not typically used for user authentication, as more secure and flexible methods like certificates or OpenID Connect tokens are available.

Bootstrap tokens ensure that only trusted nodes and kubelets are added to the cluster during the initial setup process. They are temporary and are intended to be used only once during the bootstrap process. 

After the bootstrap process, the node or kubelet will use its certificate for authentication. It is important to note that bootstrap tokens should not be used for ongoing authentication or authorization in the cluster, as they are not designed for this purpose and are less secure than other methods.

Static Password Files

Static password files are a fundamental way to authenticate users in Kubernetes. They are not a good option for securing your Kubernetes environment since they are not dynamic. 

Once a password is injected, it cannot be changed without restarting the Kubernetes server. Moreover, they do not provide any way to manage access to the Kubernetes cluster, which is critical for secure operations.

The main issue with static password files is that they are easily compromised. If an attacker gains access to the file, they can easily extract the passwords and use them to gain unauthorized access to your Kubernetes environment. 

For this reason, it is recommended that static password files not be used as an authentication method in Kubernetes. Many other more secure options, such as certificates and OpenID Connect tokens, provide better security and are easier to manage.

OpenID Connect (OIDC) Tokens

OIDC tokens are a popular authentication method in Kubernetes, especially in larger clusters. OIDC tokens enable users to receive their identity encoded in a secure JSON Web Token (JWT) from an identity provider (IDP). 

OIDC tokens are an effective authentication method in Kubernetes since they enable single sign-on (SSO) and can manage user authentication across multiple systems.

OIDC tokens provide fine-grained access control and auditing capabilities, allowing administrators to define which users can access specific resources within the Kubernetes cluster. OIDC tokens can also be configured to expire after a certain period, which increases the system's security by preventing the use of stolen or compromised tokens. 

Another advantage of OIDC tokens is that they can be integrated with other identity management systems, such as Active Directory or LDAP, making it easier to manage user identities across the organization. 

Webhook Token Authentication

Webhook token authentication is a flexible authentication method that enables users to implement custom authentication logic. In this method, a webhook is set up inside the Kubernetes cluster to authenticate users, and custom authentication logic is implemented using the webhook. This method is often used in conjunction with other authentication methods in Kubernetes.

Webhook token authentication can implement various forms of authentication, including two-factor and multi-factor authentication. This makes it a popular authentication method in Kubernetes for organizations requiring high-security levels. 

The flexibility of webhook token authentication also enables users to integrate with existing identity and access management (IAM) systems and extend them to Kubernetes.

The Bottom Line

Kubernetes offers several authentication methods to secure the Kubernetes platform and its applications. While some authentication methods are more secure than others, choosing the right one is essential based on your Kubernetes environment's specific needs. 

Kubernetes Authentication and Authorization is a critical topic for anyone running Kubernetes environments, and it's essential to learn how to secure your Kubernetes environment using the right authentication methods. 

If you are looking for a Kubernetes security solutions provider, contact us at We45. Our team thoroughly investigates your Kubernetes cluster deployment to identify potential flaws and provide a detailed and optionality-focused set of recommendations that will help secure your K8 cluster.

Contact us to know more!