Repository logo
 
Loading...
Thumbnail Image
Publication

Framework de Segurança para Kubernetes

Use this identifier to reference this record.
Name:Description:Size:Format: 
Tese_6114.pdf3.84 MBAdobe PDF Download

Abstract(s)

In this document, we can follow the entire process of developing the Master’s Thesis written for the completion of the Master’s Degree in Computer Engineering at the Higher Institute of Engineering of Porto. Considering that the Master’s degree specializes in Cybersecurity and Systems Administration and that one of the most significant emerging technologies in recent years is Kubernetes, which is closely linked to the current systems administration scenario, it made perfect sense to develop something in the area of Kubernetes security. In recent years, more and more companies have adopted other styles of system development, as conventional monolithic systems have begun to show some limitations. Thus, new architectures for computer systems have emerged, one of the most prominent in the market in recent years being Microservices. This architecture aims to divide systems into small services, whose operation does not depend on any other service. However, adopting this has been quite complicated, until solutions appeared that could work according to the principles of Microservices. The solution for better implementing Microservices lies in containers. These allow for a higher level of abstraction of the system where they run, managing to simulate different types of systems on the same machine. Containers complement Microservices, as each of the independent services developed will be executed in different containers. This achieves another level of independence, as technological dependencies practically cease to exist, since each container has a different execution. However, when large companies began their journey to migrate to Microservices, they noticed that the larger the system used, the greater the number of containers required, and since each container has a different execution and even different containers running the same service (different instances), managing these containers was becoming quite difficult. As a result, container management tools began to be developed, with some companies managing to develop their own internal solutions. The best example is Google, which currently has two internal container management tools, which it used as a basis to create the largest open-source container management tool. Kubernetes was launched by Google in 2014 and immediately received strong support from the entire community, which readily contributed its knowledge to improvements that would come over the next eleven years. Despite the keen interest of a large community and many companies, it is still considered a recent technology. Kubernetes brought a new vision of containers, since in reality it is not containers that are executed, but Pods, which can be considered improved containers. The basic operation of Kubernetes groups several Nodes, which can be virtual machines, physical machines, or even an instance in the cloud. One of the Nodes will be the main one where the Control Plane will be hosted, which is considered the brain of a Kubernetes cluster. This consists of several components with different tasks, including all communication between Pods and even with the outside world, which passes through the API Server. Another component monitors all running Pods and compares them with the desired state for the cluster, which in turn is stored in another component of the Control Plane. Although it seems like an excellent solution for migrating to microservices, companies are beginning to fear some security flaws that may exist. But even more worrying for these same companies is knowing whether they are maintaining the same level of security maturity in their system. This problem is the main focus of this work, since the intended result is to provide a security checklist to be applied to clusters in order to determine the cluster’s security maturity level and how it can be improved. Throughout the document, an in-depth analysis of Kubernetes will be carried out in order to understand the critical points of a Kubernetes cluster that must be analyzed in depth to ensure its total security. With this analysis completed, a checklist will be drawn up, which will provide information on how to perform the verification and, if necessary, an explanation of how to improve these points.
Neste documento podemos acompanhar todo o processo de desenvolvimento da Tese de Mestrado desenvolvida em prol do término do Mestrado em Engenharia Informática do Instituto Superior de Engenharia do Porto. Tendo em conta a especialização do Mestrado ser Cibersegurança e Administração de Sistemas e uma das maiores tecnologias emergentes dos últimos anos ser o Kubernetes que está extremamente conectado ao atual cenário de administração de sistemas, fez todo o sentido desenvolver algo na área de segurança em Kubernetes. Nos últimos anos, cada vez mais empresas têm adotado outros estilos de desenvolvimento de sistemas, já que os convencionais sistemas monolíticos começaram a apresentar algumas limitações. Deste modo, novas arquiteturas para sistemas informáticos, sendo que uma das que mais destaque ganhou no mercado, nos últimos anos foi a de Microserviços. Uma arquitetura que pretende dividir os sistemas em pequenos serviços, em que o seu funcionamento não tenha qualquer dependência de outro qualquer serviço. Porém, adotar isto teve bastantes complicações, até aparecerem as soluções que conseguissem funcionar, de acordo com as bases dos Microserviços. A solução para melhor implementar Microserviços reside em contentores. Estes permitem um maior nível de abstração do sistema onde correm, conseguindo simular diferentes tipos de sistemas na mesma máquina. Ora, os contentores complementam-se com os Microserviços já que cada um dos serviços independentes desenvolvidos irão ser executados em contentores diferentes. Deste modo, outro nível de independência é atingido, já que praticamente deixam de existir dependências tecnológicas, já que cada um dos contentores tem uma execução diferente. Porém, as grandes empresas quando começaram a sua jornada de migração para Microserviços notaram que quanto maior era o sistema usado, maior o número de contentores necessários, e sendo cada container uma execução diferente e até diferentes contentores a correr o mesmo serviço (instancias diferentes), a gestão destes mesmos contentores começava a tornar-se bastante difícil. Assim sendo, ferramentas de gestão de contentores começaram a ser pensadas, sendo que algumas empresas conseguiram desenvolver as próprias soluções internas. O maior exemplo será mesmo a Google que tem até hoje duas ferramentas de gestão de contentores, internas, nas quais se baseou para criar a maior ferramenta de gestão de contentores open-source. O Kubernetes foi lançado pela Google em 2014, e desde logo teve bastante apoio de toda a comunidade, que de pronto deu bastante conhecimento para melhoramentos que viriam nestes onze anos. Apesar do grande interesse de uma grande comunidade e de muitas empresas, ainda é considerado uma tecnologia recente. O Kubernetes veio trazer uma nova visão de containers já que na realidade não são executados containers, mas sim Pods, que podem ser considerados containers com melhoramentos. O funcionamento básico do Kubernetes agrupa vários Nodes, que podem ser máquinas virtuais, físicas ou até uma instância na cloud. Um dos Nodes será o principal onde estará hospedado o Control Plane, que é considerado o cérebro de um cluster de Kubernetes. Este é composto por vários componentes com diferentes tarefas, entre as quais toda comunicação entre Pods e até mesmo com o exterior passa pelo API Server. Outro dos componentes pretende monitorizar todos os Pods que estão em execução, e comparar com o estado que é pretendido para o cluster, que por sua vez está guardado noutro componente do Control Plane. Apesar de parecer todo ele uma excelente solução para a migração para Microserviços, as empresas começam a ter receio de algumas falhas de segurança que possam existir. Mas ainda mais preocupante, para estas mesmas empresas, é saber se estão a manter o mesmo nível de maturidade de segurança do seu sistema. Este problema é o grande mote para este trabalho, já que o resultado pretendido é fornecer uma checklist de segurança para ser aplicada aos clusters de forma a saber o nível de maturidade de segurança do cluster e como este pode ser melhorado. Ao longo do documento irá ser feita uma profunda análise ao Kubernetes de forma a perceber quais os pontos críticos de um cluster Kubernetes que devem ser analisados em profundidade de forma a garantir a total segurança do mesmo. Com essa análise realizada, a elaboração de uma checklist será feita, e que irá fornecer informação de como realizar a verificação, e, se necessário, a explicação de como melhorar esses mesmos pontos.

Description

Keywords

Kubernetes Security Framework Assessment

Pedagogical Context

Citation

Research Projects

Organizational Units

Journal Issue

Publisher

CC License

Without CC licence