| Name: | Description: | Size: | Format: | |
|---|---|---|---|---|
| 3.84 MB | Adobe PDF |
Authors
Advisor(s)
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.
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
