What is Kubernetes?

O Kubernetes se tornou um padrão em software nativo da nuvem no que diz respeito a contêineres. De fato, a pesquisa mais recente da Native Computing Foundation (CNCF) descobriu que o uso do Kubernetes na produção cresceu para 78%. No entanto, como acontece com qualquer tecnologia que ganha popularidade em um curto espaço de tempo, há muita confusão sobre o que é o Kubernetes e quais considerações de segurança acompanham o Kubernetes e a conteinerização. Caso em questão: na mesma pesquisa do CNCF, 40% dos entrevistados mencionaram a segurança como um desafio para o uso/implantação de contêineres e 38% apontaram a complexidade como um desafio.

Para os engenheiros de segurança encarregados de fortalecer a implantação de contêineres, há definitivamente uma curva de aprendizado a ser superada. Para ajudá-lo a se atualizar, vamos dar uma olhada no que é o Kubernetes, como ele funciona e explorar alguns conceitos básicos de segurança do Kubernetes.

Teste gratuito Guia de segurança do Kubernetes

What is Kubernetes?

Definition

O Kubernetes é uma plataforma usada para orquestrar e gerenciar cargas de trabalho de contêineres (por exemplo Contêineres Docker). 

Desde seu lançamento inicial em 2014, o Kubernetes - um projeto de graduação CNCF de código aberto com raízes que remontam à equipe de desenvolvimento do Google - tornou-se uma das ferramentas mais populares nos círculos de DevOps e nativos da nuvem.

Um pré-requisito para entender o Kubernetes é primeiro entender os contêineres. Em poucas palavras, os contêineres são pacotes de software leves que incluem todas as dependências de que um aplicativo precisa para ser executado. Os contêineres resolvem o problema de executar o aplicativo de forma confiável em diferentes ambientes. Por serem leves e portáteis, os contêineres ganharam popularidade e são vitais para o desenvolvimento do microsserviço moderno e dos aplicativos da Web.

Embora o uso de um único contêiner não exija muito gerenciamento e orquestração, os grandes aplicativos precisam ser escalonáveis. As equipes de desenvolvimento modernas precisam ser capazes de automatizar e dimensionar o processo de implantação de contêineres. É aí que entram as ferramentas de gerenciamento de carga de trabalho em contêineres, como o Kubernetes. O Kubernetes fornece o gerenciamento e a orquestração que faltam.

A frase "gerenciamento e orquestração" é muito usada quando se discute o Kubernetes. No entanto, isso não nos diz muito sobre os detalhes. Em termos simples, o que isso significa é que o Kubernetes permite o balanceamento de carga, o gerenciamento de configuração, a configuração de recursos de armazenamento, a alocação automática de recursos (por exemplo, o Unidade de processamento central (Central Processing Unit, CPU) e RAM por contêiner), e o aumento ou a redução da implantação do contêiner.

Kubernetes vs Docker

Pode haver muita confusão em torno do tópico Docker vs. Kubernetes. No entanto, na verdade, é bastante simples:

  • O Docker é uma plataforma para criar e executar contêineres. Não é a única plataforma de contêineres, mas é a mais popular.
  • O Kubernetes é uma ferramenta para gerenciar vários contêineres, inclusive contêineres do Docker.
  • O Docker oferece uma ferramenta com alguns dos mesmos recursos do Kubernetes, conhecida como Swarm.

Esse último ponto é o que pode levar a algumas confusões. Acontece que o Docker oferece uma ferramenta, o Swarm, que oferece funcionalidade semelhante ao Kubernetes. No entanto, o Kubernetes é, de longe, a ferramenta de gerenciamento e orquestração mais popular.

Conceitos e termos importantes do Kubernetes

Além dos contêineres, há outros conceitos importantes a serem compreendidos ao começar a usar o Kubernetes. Vamos dar uma olhada em alguns termos-chave:

  • K8s. Esse é um sinônimo de Kubernetes. Às vezes, os desenvolvedores criam abreviações para termos populares pegando a primeira e a última letra de uma palavra, o número de letras entre elas e combinando-as em abreviações para a palavra. A interoperabilidade se torna "i14y", a localização se torna "l10n" e o Kubernetes se torna "k8s".
  • Pods. Essas são as menores unidades que podem ser implantadas no Kubernetes. Um pod consiste em um ou mais contêineres que compartilham recursos de armazenamento e rede e uma especificação para executar o(s) contêiner(es).
  • Cargas de trabalho. Esses são os aplicativos (conjuntos de pods, na verdade) que o Kubernetes executa. O Kubernetes implementa atualizações e dimensiona pods com base no que a carga de trabalho configurada determina.
  • Nós. O "hardware" de computação (pense em RAM e Unidade de processamento central, CPU) no qual as cargas de trabalho são executadas é conhecido como nós. O "hardware" pode ser qualquer coisa, desde um Raspberry Pi até uma máquina virtual (máquina virtual, VM) ou um servidor físico, mas o segredo aqui é que os recursos de computação vêm dos nós. Há dois tipos principais de nós: nós de trabalho/miniônibus que executam as cargas de trabalho e nós mestres que gerenciam um conjunto de nós de trabalho/miniônibus.
  • Agrupamentos. Um cluster do Kubernetes é um grupo de nós. Em um cluster, os nós de trabalho executam as cargas de trabalho e um nó mestre controla o que os nós de trabalho fazem.

Para que o Kubernetes é usado?

O Kubernetes pode ser útil efetivamente em qualquer lugar onde uma abordagem de infraestrutura como código para a implantação de contêineres possa ser útil. Isso significa que as equipes de desenvolvimento ágil e as equipes com foco em práticas de DevOps geralmente usarão o Kubernetes para ajudar a automatizar seus pipelines de integração contínua/entrega contínua (CI/CD). Além disso, o Kubernetes pode ajudar a dimensionar automaticamente o aplicativo nativo da nuvem, monitorando a integridade dos nós e a utilização de recursos e aumentando ou diminuindo o dimensionamento conforme necessário.

Conceitos importantes de segurança do Kubernetes

É claro que, embora o Kubernetes agregue valor do ponto de vista da automação e da escalabilidade, ele também acrescenta uma nova ruga para as equipes de segurança. Como o senhor pode garantir que seus aplicativos e serviços sejam implementados com segurança? Como sempre, isso começa com a compreensão de seu modelo de ameaças e apetite por riscos, mas há alguns princípios básicos para ajudá-lo a começar.

  • Os 4C's da segurança nativa da nuvem- O Kubernetes exige uma abordagem em quatro camadas para a segurança nativa da nuvem, conhecida como os 4C's: Código, contêiner , cluster e nuvem/co-localização/datacenter corporativo . Em cada camada, o senhor precisa garantir que as práticas recomendadas de segurança sejam seguidas. Isso significa coisas diferentes em níveis diferentes. Por exemplo, garantir que o código aplique a criptografia dos dados em trânsito e limite o acesso apenas às portas de rede essenciais, não permitir usuários privilegiados em contêineres, fortalecer os componentes configuráveis do cluster do Kubernetes e seguir as práticas recomendadas de segurança do seu provedor de serviços em nuvem.
  • Políticas de segurança de pod. Com os pods do Kubernetes, há três políticas básicas de segurança. Para proteger adequadamente seu ambiente, o senhor precisará entender as compensações de usabilidade/segurança de cada uma delas e agir de acordo.
    • Privilegiado. O nível mais amplo de permissões. Escalonamentos de privilégios conhecidos são possíveis com essa política.
    • Linha de base/padrão. O meio termo entre privilegiado e restrito. Evita o aumento de privilégios conhecidos.
    • Restrito. Com base nas práticas recomendadas de proteção de pods do Kubernetes, essa é a mais restritiva das três políticas básicas.
  • Contextos de segurança do pod. O contexto de segurança de um pod define suas configurações de segurança em tempo de execução. Isso abrange aspectos como controle de acesso, execução como privilegiado ou não, montagem de sistemas de arquivos somente leitura, etc. O senhor pode pensar que isso se parece muito com as políticas de segurança do POD e, de fato, elas estão relacionadas. Os contextos de segurança são o que acontece no tempo de execução, enquanto as políticas de segurança permitem que o senhor defina parâmetros para quais contextos são usados em um cluster.
  • Segredos. A ferramenta de infraestrutura como código é excelente, mas o senhor provavelmente não quer tokens ou senhas OAuth em um arquivo YAML. Os segredos são a maneira do Kubernetes de armazenar esse tipo de informação sensível.

Também é fundamental ter um plano de visibilidade de contêineres e varredura de vulnerabilidade para garantir que a correção de problemas ocorra rapidamente e que o senhor permaneça em conformidade com todos os padrões relevantes. Para começar a usar o scanner de vulnerabilidade de contêineres e as avaliações de postura de segurança, recomendamos a leitura de Continuous Container Visibility and Conformidade (PDF).

Próximas etapas com o Kubernetes

Agora que o senhor entende como o Kubernetes funciona em alto nível, controlando e gerenciando a implantação de contêineres automaticamente, pode dar os próximos passos para implantar o k8s com segurança. Para se aprofundar na implementação de segurança com contêineres, Kubernetes e infraestrutura sem servidor, inscreva-se para assistir ao webinar gratuito How to Layer Security into Modern Cloud aplicativo, apresentado pelo especialista em segurança de nuvem Hillel Solow.

×
  Opinião
Este site usa cookies para sua funcionalidade e para fins de análise e marketing. Ao continuar a usar este site, você concorda com o uso de cookies. Para mais informações, leia o nosso Aviso de Cookies.
OK