Microsoft Defender for Cloud – Container image scanning

O Microsoft Defender para Contêineres é a solução nativa de nuvem para proteger contêineres.

Quais são os benefícios do Microsoft Defender para Contêineres?

O Defender para Contêineres ajuda com os principais aspectos da segurança do contêiner:

  • Proteção do ambiente – o Defender para Contêineres protege seus clusters do Kubernetes, independentemente de estar em execução no Serviço de Kubernetes do Azure, no Kubernetes local/iaaS ou no Amazon EKS. Ao avaliar continuamente os clusters, o Defender para Contêineres fornece visibilidade sobre configurações e diretrizes incorretamente para ajudar a atenuar ameaças identificadas. Saiba mais em Proteção de ambientes por meio das recomendações de segurança.
  • Avaliação de vulnerabilidades – Ferramentas de avaliação e gerenciamento de vulnerabilidades para imagens armazenadas nos ACR registries em execução no Serviço de Kubernetes do Azure. Saiba mais em Avaliação de vulnerabilidade.
  • Proteção contra ameaças em tempo real para nós e clusters – a proteção contra ameaças para clusters e nós do Linux gera alertas de segurança para atividades suspeitas. Saiba mais em Proteção em tempo de execução para nós, clusters e hosts do Kubernetes.

Visão geral da arquitetura

A arquitetura dos vários elementos envolvidos na gama completa de proteções fornecidas pelo Defender para Contêineres varia dependendo de onde os clusters do Kubernetes estão hospedados.

O Defender para contêineres protege os clusters quando estão em execução em:

  • Azure Kubernetes Service (AKS) – serviço gerenciado da Microsoft para desenvolvimento, implantação e gerenciamento de aplicativos conteinerizados.
  • Amazon Elastic Kubernetes Service (EKS) in a connected Amazon Web Services (AWS) account – serviço gerenciado do Amazon para execução de Kubernetes no AWS sem precisar instalar, operar e manter um painel de controle ou nós de Kubernetes.
  • Google Kubernetes Engine (GKE) in a connected Google Cloud Platform (GCP) project – Ambiente gerenciado do Google para implantação, gerenciamento e dimensionamento de aplicativos usando a infraestrutura do GCP.
  • An unmanaged Kubernetes distribution (usando Kubernetes habilitados para Azure Arc) – clusters de Kubernetes certificados pela Cloud Native Computing Foundation (CNCF) hospedados no local ou na IaaS.

Disponibilidade

 
AspectoDetalhes
Estado da versão:Disponibilidade Geral (GA)
Quando indicado, recursos específicos estão em versão prévia. Os termos suplementares de versão prévia do Azure incluem termos legais adicionais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.
Preço:O Microsoft Defender para Contêineres é cobrado conforme mostrado na página de preço.
Registros e imagens:Com suporte
• Imagens do Linux em registos do ACR (Registro de Contêiner do Azure) acessíveis na Internet pública com acesso de shell
• Registros privados com concedido acesso aos Serviços Confiáveis
• Registros do ACR protegidos com Link Privado do AzureSem suporte
• Imagens do Windows
• Imagens super minimalistas, como imagens de rascunho do Docker
• Imagens “Sem intervalo” que contêm apenas um aplicativo e suas dependências de runtime sem um gerenciador de pacotes, shell ou sistema operacional
• Imagens com Especificação de formato de imagem de OCI (iniciativa de recipiente aberto)
Distribuições e configurações do Kubernetes:Com suporte
• Todos os clusters Kubernetes certificados pela CNCF (Cloud Native Computing Foundation)Sem suporte
• Quaisquer impurezas aplicados aos nós podem interromper a configuração do Defender para Contêineres
• O perfil do AKS do Defender não dá suporte a clusters do AKS que não têm a função RBAC habilitada.Testado em
• Serviço de Kubernetes do Azure
• Serviço Amazon Elastic Kubernetes (EKS)
• Serviço de Kubernetes do Azure no Azure Stack HCI
• Kubernetes
• Mecanismo do AKS
• Red Hat OpenShift no Azure
• Red Hat OpenShift (versão 4.6 ou mais nova)
• Grade Kubernetes do VMware Tanzu
• Mecanismo Kubernetes do Rancher
Funções e permissões necessárias:• Para fornecer automaticamente os componentes necessários, ColaboradorColaborador de Log Analytics, ou Função de Colaborador de Serviço de Kubernetes do Azure
• Administrador de segurança pode ignorar alertas
• Leitor de segurança pode visualizar conclusões da avaliação de vulnerabilidades
Confira também Funções e permissões do Registro de Contêiner do Azure
Nuvens: Nuvens comerciais
 Nacional (Azure Governamental, Azure China 21Vianet) (exceto para recursos de versão prévia)
 Contas do AWS conectadas (versão prévia)

Passo a passo

Azure Container Registry

O Azure Container Registry permite que você crie, armazene e gerencie imagens e artefatos de contêiner em um registro privado para todos os tipos de implantações de contêiner. Use os registros de contêiner do Azure com seus pipelines de desenvolvimento e implantação de contêiner existentes. Use o Azure Container Registry Tasks para criar imagens de contêiner no Azure sob demanda ou automatizar compilações acionadas por atualizações de código fonte, atualizações na imagem de base de um contêiner ou timers.

01 – Faça login no portal do Azure.

https://portal.azure.com/

02 – No portal do Azure pesquise por Container registries.

03 – Na tela Container registries clique em Create container registry.

04 – Na tela Create container registry, em Project details selecione a assinatura e o grupo de recursos, em Instance details selecione um nome para o recurso e localização, para fins de laboratório vamos utilizar o SKU basic, em seguida clique em Next: Networking.

05 – Para a opção Networking podemos selecionar Public endpoint (all networks) e Private endpoint, como estamos utilizando o SKU basic não podemos selecionar a opção Private endpoint, em nosso exemplo vamos utilizar a opção Public endpoint, clique em Next: Encryption.

06 – Para a opção Encryption como não estamos utilizando o SKU Premium não podemos fazer nenhuma alteração, clique em Review + create.

07 – Na tela Review + create clique em Create.

08 – Assim que o deployment finalizar clique em Go to resource.

09 – Precisamos habilitar o Admin user, com essa opção ativada podemos logar no ACR utilizando o Login server e access key, em Settings clique em Access keys.

10 – Na tela Access keys, em Admin user clique em Enabled.

OBSERVAÇÃO: Anote o Userame e password, vamos precisar dessas informações para logar no ACR e enviar a imagem docker.

Download e instalação Docker Desktop

O Docker Desktop é um aplicativo fácil de instalar para o ambiente Mac ou Windows que permite construir e compartilhar aplicativos e microsserviços contêineres. O Docker Desktop inclui Docker Engine,Docker CLI client, Docker Compose, Docker Content Trust, KubernetesHelper Credencial.

O Docker Desktop trabalha com sua escolha de ferramentas de desenvolvimento e idiomas e lhe dá acesso a uma vasta biblioteca de imagens e modelos certificados no Docker Hub. Isso permite que as equipes de desenvolvimento ampliem seu ambiente para construir rapidamente, integrar continuamente e colaborar usando um repositório seguro.

Algumas das principais características do Docker Desktop incluem:

  • Capacidade de containerizar e compartilhar qualquer aplicativo em qualquer plataforma de nuvem, em vários idiomas e frameworks
  • Fácil instalação e configuração de um ambiente completo de desenvolvimento do Docker
  • Inclui a versão mais recente de Kubernetes
  • Atualizações automáticas para mantê-lo atualizado e seguro
  • No Windows, a capacidade de alternar entre ambientes Linux e Windows Server para criar aplicativos
  • Desempenho rápido e confiável com virtualização nativa do Windows Hyper-V
  • Capacidade de trabalhar nativamente no Linux através do WSL 2 em máquinas Windows
  • Montagem de volume para código e dados, incluindo notificações de alteração de arquivo e fácil acesso à execução de contêineres na rede localhost
  • Desenvolvimento e depuração de contêineres com IDEs suportados

11 – Para baixar o Docker Desktop clique no link abaixo, em seguida selecione a versão do seu sistema operacional e clique em Download.

https://www.docker.com/products/docker-desktop

12 – Execute o arquivo Docker Desktop Installer.

13 – Na tela Configuration deixas as opções padrões selecionada e clique em OK.

14 – Aguarde a descompactação dos arquivos.

15 – Após a instalação ser finalizada, clique em Close and restart.

16 – Abra o prompt de comando do Windows e execute o comando docker –version para verificar se o docker está instalado.

 

Instalar o Visual Studio Code

17 – O Visual Studio pode ser baixado no link abaixo.

https://code.visualstudio.com/

18 – Na tela do Visual Studio clique em Download for Windows.

19 – Após o Visual Studio ser baixado execute o arquivo de instalação,

20 – Na tela Setup selecione I accept agreement e clique em Next.

21 – Na tela Select Destiation Location clique em Next.

22 – Na tela Select Start Menu Folder clique em Next.

23 – Na tela Select Additiomal Tasks marque Crate a desktop icon e clique em Next.

24 – Na tela Ready to Install clique em Install.

25 – Na tela Completing clique em Finish.

26 – Após o Visual Studio Code ser aberto vamos instalar a extensão do Docker, clique em Extensions pesquise por Docker, selecione a extensão Docker e clique em Install.

27 – O Docker foi instado no Visual Studio Code.

Habilitando o Microsoft Defender for Container Registry

28 – No portal pesquise por Microsoft Defender for Cloud.

29 – Na tela Microsoft Defender for Cloud | Overview em Management clique em Environment settings.

30 – Na tela Microsoft Defender for Cloud | Environment settings selecione a assinatura que deseja.

31 – Na tela Settings | Defender plans em Containers clique em ON, em seguida clique em Edit configuration.

32 – Na tela Advanced configuration em Defender security profile (preview) selecione ON, para a opção Defender extension selecione ON, em seguida clique em Save.

33 – De volta a tela Settings | Defender plans clique em Save.

Aplicação Node.js

Uma imagem de contêiner do Docker é um pacote independente e leve que pode ser executado e contém todos os requisitos de que você precisa para executar um aplicativo, como: código, tempo de execução, bibliotecas e configurações. A imagem pode então ser enviada para um registro de contêiner e puxada para seu servidor para ser executada como um contêiner.

Tenho uma aplicação conteinerizada simples em Node.js em meu GitHub. Clique na imagem abaixo para baixar a aplicação.

34 – No Visual Studio Code clique em File e Open Folder.

35 – Selecione a pasta onde a aplicação foi baixada e clique em Select Folder.

36 – Como podemos observar a aplicação foi aberta no Visual Studio Code.

37 – O app.js é a página da nossa aplicação.

Criar imagem docker da aplicação

38 – No Visual Studio Code clique em Terminal e New Terminal.

39 – O comando abaixo cria a imagem docker da aplicação APP-DOCKER com o nome de app-jadsonalves

No terminal no Visual Studio Code execute o comando abaixo.

docker build -t app-jadsonalves .

OBSERVAÇÃO: O comando deve ser executado na pasta onde a aplicação está.

40 – Como podemos observar a imagem docker da aplicação está sendo criada.

41 – Como podemos observar o processo de criação da imagem docker foi finalizado.

42 – O comando docker image ls verifica as imagens docker criadas.

Como podemos observar a imagem app-jadsonalves foi criada.

43 – Também podemos observar as imagens criadas no Docker Desktop em Images.

44 – Vamos executar a aplicação app-jadsonalves localmente, execute o seguinte comando docker run -dp 80:80 app-jadsonalves

45 – Para verificar se aplicação está em execução abra seu navegador e digite localhost.

Como podemos observar nossa aplicação está em execução.

46 – Também podemos verificar nossa aplicação no Docker Desktop em Containers / Apps.

47 – Podemos verificar os containers criados com comando docker ps

48 – Podemos parar o container com o seguinte comando, passando o Container ID.

docker stop 251435f026ae

49 – No Docker Desktop em Containers / Apps podemos observar que o container foi parado.

50 – Podemos remove um container com o seguinte comando, passando o Container ID.
docker rm -f 251435f026ae

51 – Como podemos observar não temos containers criados.

52 – Também podemos verificar que não temos containers criado no Docker Desktop em Containers / Apps.

Enviar imagem Docker para o Azure Container Registry

53 – Vamos logar no portal do Azure para enviar a imagem docker para o container registry, para logar no azure digite o comando az login em seguida insira seu usuário e senha do Azure.

É necessário que o Azure CLI esteja instalado em seu computador, para baixar o módulo acesse o link abaixo.

https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli

Também é necessário que a extensão Azure Tools tenha sido instalada no Visual Studio Code.

54 – O próximo passo é logar no Azure containe registry pelo docker.

Podemos encontrar o login server na tela de Overview do Azure Container registry.

Execute o comando abaixo para logar no Azure Container Registry, será solicitado o usuário e senha, podemos encontrar essas informações no Azure Container Registry em Access Keys.

docker login jadsonalves.azurecr.io

55 – Associe um alias a uma imagem docker existente
docker tag app-jadsonalves jadsonalves.azurecr.io/app-jadsonalves:v1

56 – Podemos verificar as imagens docker criadas com o seguinte comando docker image ls

Como podemos observar temos duas imagens docker criadas.

57 – Também podemos verificar as imagens docker criada utilizando o Docker Desktop em Images.

58 – Para enviar a imagem docker jadsonalves.azurecr.io/app-jadsonalves:v1 para o Azure Container Registry execute o seguinte comando docker push jadsonalves.azurecr.io/app-jadsonalves:v1

59 – Podemos verificar se imagem foi enviada para o Azure container Registry com o seguinte comando az acr repository list –name jadsonalves

60 – Também podemos verificar a imagem no Azure Container Registry, no portal pesquise por Container registries.

61 – Selecione o Container registries jadsonalves.

62 – Após selecionar o container jadsonalves em Services clique em Repositories.

63 – Em Repositories observe que temos nossa imagem docker app-jadsonalves.

64 – Selecione a imagem docker app-jadsonalves em Tags observe que temos a tag v1.

Container image scanning

65 – No portal do Azure pesquise por Microsoft Defender for Cloud.

66 – Na tela Microsoft Defender for Cloud | Overview em Cloud Security clique em Workload protections.

67 – Na tela Microsoft Defender for Cloud | Workload protections clique em Container image scanning.

68 – Na tela Container registry images should have vulnerability findings resolved na parte superior temos o total de registries que não estão íntegros, a gravidade, total de vulnerabilidades, vulnerabilidades por gravidade, o container registre com mais vulnerabilidades e total de imagens vulneráveis.

68.1 – Abaixo temos a descrição da recomendação para o container registry.

68.2 – Temos a etapas de correção manuais das vulnerabilidades sugeridas pelo Microsoft Defender for Cloud.

68.3 – Também temos os recursos afetados separado pelas categorias, Unhealthy, Healthy registries, Not applicable registries, Unverified registries, clique no container registry “jadsonalves”.

Após selecione o container registry jadsonalves podemos observar as imagens vulneráveis ​​por gravidade e qual imagem está vulnerável, clique em app-jadsonalves.

Após selecionar a imagem “app-jadsonalves” clique em 89d87a3f5691.

Em seguida podemos visualizara todas as vulnerabilidades da imagem “app-jadsonalves”.

68.4 – De volta a tela Container registry images should have vulnerability findings resolved em Security Checks podemos observar todas as vulnerabilidades associadas a imagem, selecione a vulnerabilidade Debian Security Update for imagemagick (DLA 2672-1).

68.5 – A tela 178654-Debian Security Update for imagemagick (DLA 2672-1) será aberta, temos algumas opções como Description, General information, Remediation, Additional information e Affected resources.

Me siga nas redes sociais:
https://lnkd.in/enx4eSV

 

Comente suas sugestões e observações! 

Forte abraço, obrigado e até o próximo post.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *