Securing intra-pod communication in Kubernetes

Loading...
Thumbnail Image

URL

Journal Title

Journal ISSN

Volume Title

Perustieteiden korkeakoulu | Master's thesis

Date

2023-12-11

Department

Major/Subject

Computer Science

Mcode

SCI3042

Degree programme

Master’s Programme in Computer, Communication and Information Sciences

Language

en

Pages

54+16

Series

Abstract

The microservice architecture has lately increased in popularity. These services are made of software containers that are managed by an orchestrator. Kubernetes is the most prevalent among them. Due to its popularity, Kubernetes is also a potential target for malicious parties. Therefore, it is important to secure Kubernetes deployments, preferably by using a defense-in-depth approach. One option is represented by service meshes such as Istio. A service mesh is an infrastructure layer that is responsible for managing and securing communication between microservices. While securing inter-microservice communication strengthens security, service meshes provide no additional means for securing communication inside a given microservice, i.e., between the containers therein. A defense-in-depth approach demands securing communications inside a microservice as well. Therefore, this thesis proposes a solution to automatically apply network access control rules between containers inside a Kubernetes microservice, namely a pod. The proposed solution utilizes a combination of Kubernetes admission webhooks, init containers and iptables. This approach allows specifying service local access control rules directly in the Kubernetes object file definition. The access control rules are then automatically applied when the object is deployed to a Kubernetes cluster. The proposed solution is evaluated and determined to fulfill the requirements of blocking the communication between a pair of containers. It is also demonstrated to be compatible with pre-existing methods for access control between microservices. Thus, it is possible to combine the proposed solution with existing ones to achieve access control both inside and outside a microservice.

Mikrotjänstarkitektur har blivit populärt under de senaste åren. Dessa tjänster byggs upp av containrar som hanteras av en orkestrator. Kubernetes är den populäraste orkestratorn. På grund av Kubernetes popularitet har den också blivit ett potentiellt mål för angriparna. Därför är det viktigt att säkra Kubernetes kluster. Flernivåförsvar är ett bra princip. Som en lösning for att säkra kluster har tjänstnät så som Istio, utvecklats. Ett tjänstnät är ett infrastrukturlager som ansvarar för att säkra kommunikationen mellan mikrotjänster. Även om tjänstnät hjälper med att säkra kommunikationen mellan mikrotjänster, ger tjänstnät inga ytterligare medel för att säkra kommunikation inuti mikrotjänsten; mellan containrarna som utgör tjänsten. När man tillämpar flernivåförsvarprincipen bör man även säkra kommunikationen inuti mikrotjänsten. Därför föreslår denna avhandling en lösning för att tillämpa åtkomstkontroll för kommunikationen mellan containrar inuti en Kubernetes mikrotjänst, nämligen en pod. Lösningen använder sig av Kubernetes admission webhooks, containrar och iptables för att möjliggöra automatisk åtkomstkontroll. Detta gör det möjligt att specificera åtkomstkontrollregler för tjänster direkt i Kubernetes objektfilen. Åtkomstkontrollreglerna tillämpas sedan automatiskt när objektet förs till ett Kubernetes kluster. Lösningen utvärderas och påvisas uppfylla kraven på att möjliggöra blockering av kommunikationen mellan två containrar. Den demonstreras också vara kompatibelt med redan existerande åtkomstkontrollmetoder mellan mikrotjänster. Därmed är det möjligt att kombinera denna lösning med befintliga lösningar för att uppnå åtkomstkontroll både innanför och utanför en mikrotjänst.

Description

Supervisor

Di Francesco, Mario

Thesis advisor

Bufalino, Jacopo
Martin Navarro, Jose Luis

Keywords

Kubernetes, containers, microservices, network security, container-to-container, intra-pod

Other note

Citation