Olá a todos! Bem-vindos ao curso de Segurança de Contêineres na Nuvem. Meu nome é Karollyne costa e, junto com a Alura, vou ministrar este curso que busca capacitar profissionais de cibersegurança a proteger aplicações que são executadas dentro de contêineres e orquestradores de contêineres, como o Kubernetes.
Falando um pouco sobre minha experiência, sou especialista em nuvem pública, com mais de 10 anos de experiência, e busco resolver problemas por meio de soluções de engenharia. Isso significa que analiso a raiz do problema, crio o processo e projeto a solução que lidará com ele de forma definitiva, não apenas paliativa.
Neste curso, vamos aprender sobre a conexão entre contêineres e aplicações. Dessa forma, poderemos entender que garantir a segurança do contêiner e do orquestrador de contêineres assegura diretamente a segurança da aplicação. Vamos explorar o que são contêineres e suas imagens, o que constitui uma imagem segura, o que caracteriza um contêiner mal configurado, e como criar um Dockerfile com melhores configurações. Principalmente, veremos as metodologias de segurança que podem ser aplicadas dentro desse processo de gestão.
Vamos discutir o que é uma cadeia de segurança, como garantir a integridade, e explorar conceitos como SBOM (Software Bill of Materials). Alguns marcos de segurança já bastante comentados na comunidade serão abordados, e teremos a oportunidade de entender como aplicá-los na prática para proteger o ambiente.
Também faremos a conexão com a questão da vulnerabilidade. Por exemplo, se um contêiner for detectado com uma vulnerabilidade, como proceder?
Neste curso, abordaremos como gerenciar um sistema quando ele já está em execução, bem como a gestão preventiva. Exploraremos ambos os aspectos dentro da metodologia proposta. Ao analisarmos o Kubernetes, será necessário traduzir o conceito de uma conta de serviço do Kubernetes para um ambiente em nuvem. Discutiremos como garantir o princípio do menor privilégio de uma identidade para uma conta de serviço, além de correlacionar qual é o recurso por trás de um contêiner, pod, namespace, armazenamento, entre outros.
Ao examinarmos o Kubernetes, teremos uma lista bastante completa de mecanismos de segurança. Abordaremos como controlar desde o momento da admissão do contêiner, passando pela sua criação, até o monitoramento contínuo dentro do ambiente Kubernetes. Este curso pretende apresentar alguns cenários e suas possíveis soluções.
Recomendamos a leitura de alguns livros mencionados aqui e a realização de laboratórios, além de responder às perguntas do curso da Alura. Incentivamos a prática constante para entender como esses cenários podem ser adaptados ao seu ambiente.
Começamos sugerindo o livro "Kubernetes in Action". Ele está disponível em inglês e também em português, e foi publicado em março de 2013. O livro é excelente, pois começa explicando o que é um contêiner, como uma aplicação se conecta a um contêiner, até chegar ao Kubernetes e como desenvolvemos o contêiner dentro do Kubernetes.
Estamos animados para este percurso e esperamos encontrá-los na primeira aula.
Olá a todos! Bem-vindos ao primeiro módulo do nosso curso. Aqui, discutiremos os fundamentos de segurança em contêineres, começando com uma introdução e abordando a superfície de ataque.
Para entendermos o modelo de operação que temos hoje, onde a escalabilidade está diretamente ligada ao uso de orquestradores de contêineres, precisamos voltar aos anos 2000. Naquela época, o Google se deparou com a questão de ter diversos serviços e aplicações compartilhando o mesmo recurso computacional. A pergunta era: como resolver esse problema? Nos anos 2000, o crescimento ainda estava vinculado aos recursos físicos, como servidores físicos e servidores on-premise. Isso significava que, para uma empresa se tornar global, era necessário ter servidores em diferentes partes do mundo.
A solução surgiu em 2006, quando os engenheiros do Google lançaram os Process Containers, ou Cgroups, grupos de controle. Embora pareça simples agora, essa inovação revolucionou a forma como usamos o kernel do Linux, permitindo a segregação de aplicações e recursos. Com isso, uma aplicação que possui um nível crítico, que faz parte da carga de trabalho principal e que necessita de mais recursos, como memória e CPU, agora pode ser segregada. Isso possibilita que, em momentos de grande tráfego, a aplicação possa responder adequadamente.
Pouco depois, surgiu o LXC de Linux Containers, que combinou o Cgroups com a nomenclatura de namespaces, permitindo a divisão de aplicações por namespaces. Atualmente, temos mais de um tipo de contêiner que pode ser executado dentro de um namespace. Naquele período, o objetivo era tornar o namespace mais claro por serviço.
Em 2013, tivemos o lançamento do Docker, que, em nossa opinião, ampliou o acesso ao conhecimento sobre como usar contêineres. Hoje, quando falamos em criar um novo contêiner, automaticamente pensamos em um Dockerfile, buscamos no Docker Hub e verificamos se está na sintaxe do Docker, que é uma linguagem declarativa. Definimos apenas o que queremos e, em poucos momentos, temos nosso contêiner pronto.
Continuando com a questão de ampliar o acesso aos contêineres e à orquestração de contêineres, o Google lançou o Kubernetes. O Kubernetes é uma orquestração de contêineres, como se fosse a orquestração de uma ópera.
Temos papéis muito bem definidos para cada tipo de momento e para cada etapa desse contêiner, desde a admissão até que ele fique exposto publicamente ou internamente. Isso inclui se ele terá uma conta de serviço, se terá armazenamento ou não. O Google fez uma parceria com a Linux Foundation para que todo esse ecossistema de gestão fosse público, com documentação acessível. É possível acessar o GitHub da Linux Foundation, fazer contribuições e também apresentar ideias à comunidade, com o objetivo de expansão.
Recentemente, temos a Oracle Cloud discutindo sobre o OCI, a Open Container Initiative (Iniciativa de Contêineres Abertos), que visa criar a gestão de contêineres sem a necessidade de gerenciar os servidores, tentando escalar sem a preocupação de quanto será necessário alocar de memória no AWS EKS para manter a aplicação em funcionamento.
Agora que já sabemos como chegamos até aqui, por que devemos nos preocupar quando queremos defender a segurança desse contêiner? Chegamos à questão da superfície de ataque, frequentemente mencionada como attack surface. É importante entender quais são os limites, as portas e as janelas de entrada para saber se o contêiner está seguro ou não.
Dentro da definição de superfície de ataque, temos três categorias: a superfície digital, a superfície física e a engenharia social. Vamos nos concentrar bastante na parte digital, onde entenderemos que essa aplicação web está alojada em um contêiner. Precisamos, então, entender como protegê-la. No entanto, cada uma dessas categorias é extremamente importante de entender, pois fazem parte de todo o fluxo que envolve trabalhar com cibersegurança.
Quando falamos de superfície de ataque, também é importante se equipar com sites e recursos confiáveis. Temos o site Zero Day, o FortiGuard Labs tratando sobre ameaças, e algumas empresas de proteção de contêineres, como a Wiz, que contribui bastante. Por exemplo, uma vulnerabilidade crítica e como ela se aplica ao contêiner, como foi explorada. Utilizando essas fontes confiáveis, podemos entender como essa exploração foi realizada e verificar se nosso ambiente está vulnerável a essa vulnerabilidade.
Esta é uma aula em que começamos a entrar em contato com as vulnerabilidades e o contêiner. Vamos aprofundar nos cenários, entender como realizar essas explorações, o que é vulnerável e o que não é. Obrigado por assistir até aqui e nos vemos na próxima!
Olá a todos! Bem-vindos à segunda aula do nosso módulo de Fundamentos de Segurança em Contêineres. Vamos discutir sobre contêineres e máquinas virtuais (VMs), as diferenças entre eles e os riscos associados ao uso de cada um.
Na aula passada, abordamos o contexto de por que utilizar contêineres e como surgiu a orquestração de contêineres com Kubernetes. Para começar, utilizamos uma metáfora rápida: uma VM é como um condomínio de casas, onde cada inquilino tem seu lote e precisa construir sua própria porta e instalação elétrica. Em contrapartida, um contêiner é como um edifício com vários apartamentos por andar, onde compartilham a mesma porta de entrada, móveis e regras.
Traduzindo isso para a arquitetura de computadores, as VMs possuem um kernel e um hypervisor independentes. É como se tivéssemos um computador real ali, com um sistema operacional convidado, onde o kernel não é compartilhado; é uma VM, uma máquina completa. Já no contêiner, utilizamos a camada de aplicação. O contêiner roda sobre o kernel e utiliza conceitos como namespaces e cgroups, empacotando tudo.
Quando falamos de VMs, mencionamos CPU, RAM, armazenamento, e o problema do uso de servidores físicos, nos quais é necessário aumentar essas capacidades para garantir escalabilidade. Caso contrário, haverá limitações. Em contrapartida, o contêiner é leve, inicia rapidamente, permite uma maior densidade de cargas de trabalho no mesmo host e compartilha o kernel do Linux.
Trouxemos um artigo muito interessante da Atlassian, uma empresa de referência mundial, que discute essas diferenças e permite um aprofundamento maior. Vamos focar nos riscos de segurança ao utilizar cada uma dessas tecnologias.
Dado o modelo em que as VMs possuem isolamento de hardware, com seu próprio sistema operacional, kernel e memória, elas são mais seguras, pois é necessário comprometer a máquina inteira para obter acesso indevido. Em contrapartida, quando falamos de contêineres, se de algum modo comprometemos um namespace, há a possibilidade de comprometer o kernel, e ao comprometer o kernel, comprometemos as aplicações, já que compartilham o mesmo host.
Ao considerar situações, podemos nos perguntar: o que é melhor, VM ou contêiner? Suponhamos que temos aplicações legadas ou que são executadas em sistemas operacionais distintos. Nesse caso, ao utilizar VMs, será necessário uma VM para cada sistema operacional diferente. Quando falamos de contêineres, que parecem ser uma melhor opção para aplicações legadas, eles compartilham o mesmo kernel, e cada contêiner terá seu próprio sistema operacional.
Outro exemplo é quando falamos sobre a necessidade de isolamento. Precisamos que um serviço que manipula dados sensíveis não tenha nenhum tipo de contato com outras aplicações. Entendemos que a VM, com seu próprio sistema operacional e hypervisor, oferece essa barreira, funcionando como um computador completo para uma aplicação muito restrita. Em contrapartida, o contêiner requer camadas de isolamento na orquestração, como no Kubernetes, para protegê-lo. São necessárias políticas de rede e compreensão sobre qual é a conta de serviço e quais serviços podem se comunicar com a aplicação crítica.
Embora hoje em dia o contêiner esteja amplamente difundido, por certos aspectos, ainda temos a VM com sua robustez e segurança. No entanto, nada impede que tenhamos contêineres seguros da mesma forma, com mais camadas para garantir a mesma robustez e segurança. Essas são as diferenças: basicamente, podemos ter um caso em que um compartilha o kernel e o outro não. Contudo, é importante lembrar que podemos proteger ambos.
Como o foco aqui é falar de contêineres, continuaremos em nossas aulas focando em como levar a robustez de segurança ao ambiente de contêineres e orquestração. Agradecemos por assistir a esta aula e nos vemos na próxima.
O curso Containers e Kubernetes: segurança de aplicações e supply chain possui 261 minutos de vídeos, em um total de 69 atividades. Gostou? Conheça nossos outros cursos de Segurança em DevOps, ou leia nossos artigos de DevOps.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
O Plano Plus evoluiu: agora com Luri para impulsionar sua carreira com os melhores cursos e acesso à maior comunidade tech.
2 anos de Alura
Matricule-se no plano PLUS 24 e garanta:
Jornada de estudos progressiva que te guia desde os fundamentos até a atuação prática. Você acompanha sua evolução, entende os próximos passos e se aprofunda nos conteúdos com quem é referência no mercado.
Programação, Data Science, Front-end, DevOps, Mobile, Inovação & Gestão, UX & Design, Inteligência Artificial
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
Acesso à inteligência artificial da Alura.
No Discord, você participa de eventos exclusivos, pode tirar dúvidas em estudos colaborativos e ainda conta com mentorias em grupo com especialistas de diversas áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Luri Vision chegou no Plano Pro: a IA da Alura que enxerga suas dúvidas, acelera seu aprendizado e conta também com o Alura Língua que prepara você para competir no mercado internacional.
2 anos de Alura
Todos os benefícios do PLUS 24 e mais vantagens exclusivas:
Chat, busca, exercícios abertos, revisão de aula, geração de legenda para certificado.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Para quem quer atingir seus objetivos mais rápido: Luri Vision ilimitado, vagas de emprego exclusivas e mentorias para acelerar cada etapa da jornada.
2 anos de Alura
Todos os benefícios do PRO 24 e mais vantagens exclusivas:
Catálogo de tecnologia para quem é da área de Marketing
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais de forma ilimitada.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Conecte-se ao mercado com mentoria individual personalizada, vagas exclusivas e networking estratégico que impulsionam sua carreira tech para o próximo nível.