Introdução
O Kubescape é uma ferramenta open-source para Kubernetes desenvolvida pela Armosec utilizada para análise de riscos, conformidade de segurança, visualizador RBAC e varredura de vulnerabilidades de imagem. Além disso, o Kubescape é capaz de escanear manifestos do Kubernetes para detectar possíveis problemas de configuração que expõem suas implantações ao risco de ataque. Ele também pode escanear gráficos do Helm, detectar violações de RBAC (controle de acesso baseado em função), realizar cálculos de pontuação de risco e mostrar tendências de risco ao longo do tempo.
Recursos chave do Kubescape:
- Detectar misconfigurações do Kubernetes e fornecer assistência de remediação via Portal Armosec Cloud.
- Análise de riscos e tendências ao longo do tempo via Portal Armosec Cloud.
- Inclui múltiplos frameworks de conformidade de segurança, como ArmoBest, NSA, MITRE e Melhores Práticas de Devops.
- Suporte para gerenciamento de exceções, permitindo que administradores do Kubernetes marquem níveis de risco aceitáveis.
- Integra-se com diversas ferramentas como Jenkins, fluxos de trabalho do Github, Prometheus, etc.
- Varredura de imagens – escaneie imagens em busca de vulnerabilidades e veja, classifique e filtre facilmente (qual vulnerabilidade corrigir primeiro).
- Simplifica a complexidade do RBAC fornecendo um gráfico visual fácil de entender que mostra a configuração do RBAC em seu cluster.
O Kubescape pode ser executado de diferentes maneiras:
- Através da interface de linha de comando (ou CLI). Esta é a maneira preferida de executar dentro de scripts e várias automações, incluindo pipelines CI/CD. Os resultados podem ser enviados para o Portal de Nuvem Armosec para análise.
- Como um cronjob dentro do seu cluster Kubernetes. Neste modo, o Kubescape está constantemente monitorando seu cluster Kubernetes para alterações e envia os resultados da verificação para o Portal de Nuvem Armosec. Esta funcionalidade funciona apenas se você implantar os Componentes de Cluster Armo no seu cluster DOKS.
- Através da interface web do Portal de Nuvem Armosec. Você pode acionar a verificação de configuração, Verificação de Imagem, visualizar e inspecionar regras RBAC, personalizar frameworks, etc. Esta funcionalidade funciona apenas se você implantar os Componentes de Cluster Armo no seu cluster DOKS.
- Dentro do seu Ambiente de Desenvolvimento Integrado Visual Studio Code. Desta forma, você pode identificar problemas muito rapidamente nos estágios iniciais de desenvolvimento.
O Kubescape está utilizando diferentes frameworks para detectar misconfigurações, tais como:
O Kubescape é gratuito?
Sim, a ferramenta e a edição da comunidade são gratuitas para sempre, exceto a implementação do backend do portal na nuvem e talvez alguns outros recursos avançados. Também há uma limitação no número máximo de nós de trabalho que você pode escanear por cluster (até 10). A retenção de dados dos relatórios de escaneamento é limitada a um mês no portal na nuvem da Armo.
Consulte os planos de preços para obter mais informações.
O Kubescape é de código aberto?
Sim, a ferramenta com certeza é. Você pode visitar a página inicial do GitHub da Armo para encontrar mais detalhes sobre a implementação de cada componente. A implementação do backend do portal na nuvem não é de código aberto.
Neste guia, você usará o Kubescape para realizar análises de risco para a cadeia de suprimentos de suas aplicações Kubernetes (imagens de contêineres, manifestos YAML do Kubernetes). Em seguida, você aprenderá a tomar as medidas apropriadas para remediar a situação. Por fim, você aprenderá como integrar o Kubescape em um pipeline CI/CD para escanear vulnerabilidades nos estágios iniciais do desenvolvimento.
Sumário
- Introdução
- Requisitos
- Passo 1 – Conhecendo a CLI do Kubescape
- Passo 2 – Conhecendo o Portal da Nuvem Armosec
- Passo 3 – Configurando Varreduras Automáticas do Kubescape para DOKS
- Passo 4 – Utilizando Kubescape para Escanear Vulnerabilidades de Configuração do Kubernetes em um Pipeline CI/CD
- Passo 5 – Investigando Resultados de Escaneamento do Kubescape e Corrigindo Problemas Relatados
- Passo 6 – Acionando o Fluxo de Trabalho CI/CD do Kubescape Automaticamente
- Passo 7 – Habilitando Notificações do Slack para Monitoramento Contínuo
- Conclusão
- Recursos Adicionais
Pré-requisitos
Para completar todos os passos deste guia, você precisará de:
- A working
DOKS
cluster runningKubernetes version >=1.21
that you have access to. For additional instructions on configuring a DigitalOcean Kubernetes cluster, see: How to Set Up a DigitalOcean Managed Kubernetes Cluster (DOKS). - A DigitalOcean Docker Registry. A free plan is enough to complete this tutorial. Also, make sure it is integrated with your DOKS cluster as explained here.
- Kubectl CLI para interação com o
Kubernetes
. Siga estas instruções para se conectar ao seu cluster comkubectl
edoctl
. - Helm, para instalar o Kubescape no cluster Kubernetes.
- Kubescape CLI para interagir com o scanner de vulnerabilidades do Kubescape.
- A free Armosec Cloud Portal account used to periodically publish scan results for your Kubernetes cluster to a nice dashboard. Also, the Armosec portal web interface helps you with investigations and risk analysis.
- A Slack workspace you own, and a dedicated Slack app to get notified of vulnerability scan issues reported by Kubescape.
Passo 1 – Conhecendo o Kubescape CLI
Você pode escanear manualmente em busca de vulnerabilidades através da interface de linha de comando kubescape
. O CLI kubescape é projetado para ser usado em vários scripts e automações. Um exemplo prático é em um pipeline CI/CD implementado usando diversas ferramentas como Tekton, Jenkins, GitHub Workflows, etc.
O Kubescape é projetado para escanear todo o cluster Kubernetes do zero (cargas de trabalho, contêineres, etc). Se desejado, você pode limitar os escaneamentos a um namespace específico também. Outras características incluem escaneamento de host (nós de trabalho), escaneamento de repositórios locais ou remotos (por exemplo, GitHub), detecção de configurações inadequadas em manifestos YAML do Kubernetes ou charts Helm. Vários frameworks podem ser selecionados através do comando framework
, como ArmoBest, NSA, MITRE, etc.
Quando o CLI kubescape é invocado, ele irá baixar (ou atualizar) o banco de dados de vulnerabilidades conhecidas em sua máquina local. Em seguida, iniciará o processo de escaneamento e reportará problemas em um formato específico. Por padrão, ele imprimirá uma tabela de resumo usando a saída padrão ou o console. O Kubescape pode gerar relatórios em outros formatos também, como JSON, HTML, SARIF, etc.
Você pode optar por enviar os resultados para o Portal Armosec Cloud via a flag --submit
para armazenar e visualizar os resultados do escaneamento posteriormente.
Nota: Não é obrigatório enviar os resultados do escaneamento para o portal de nuvem da Armosec. A grande vantagem de usar o portal é a visibilidade, porque ele lhe dá acesso a um painel agradável onde você pode verificar todos os relatórios de escaneamento e a pontuação de risco geral. Ele também ajuda a longo prazo com investigações e dicas de remediação.
Alguns exemplos para experimentar com o CLI Kubescape:
-
Escaneie todo o cluster do Kubernetes e gere um relatório de resumo no console (saída padrão):
-
Use apenas um namespace específico para escanear:
-
Exclua namespaces específicos do escaneamento:
-
Escaneie um namespace específico e envie os resultados para o portal de nuvem da Armosec:
-
Realizar varredura de cluster usando um framework específico (por exemplo, NSA):
O Kubescape é capaz de varrer os hosts (ou nós de trabalho) do seu cluster Kubernetes em busca de vulnerabilidades do sistema operacional também. Para habilitar esse recurso, você precisa passar a flag --enable-host-scan
para o CLI do kubescape. Quando esta flag está habilitada, o kubescape implanta sensores
no seu cluster. Sensores são criados usando DaemonSets do Kubernetes que implantam Pods em cada nó do seu cluster para varrer vulnerabilidades conhecidas. Após o processo de varredura ser concluído, os sensores são removidos do seu cluster (incluindo os recursos do Kubernetes associados).
O CLI do Kubescape fornece páginas de ajuda para todas as opções disponíveis. O comando abaixo pode ser usado para imprimir a página de ajuda principal:
A saída se parece com:
Cada comando (ou subcomando) do CLI do kubescape tem uma página de ajuda associada que também pode ser acessada via kubescape [comando] --help
.
Por favor, visite a página oficial de documentação do CLI do Kubescape para mais exemplos.
Passo 2 – Conhecendo o Portal Armosec na Nuvem
O Armosec fornece um portal baseado na nuvem onde você pode carregar os resultados da varredura do Kubescape e realizar análises de risco. Isso é bastante útil porque você vai querer visualizar e inspecionar cada relatório de varredura, tomar as medidas apropriadas para remediar a situação e, em seguida, executar a varredura novamente para verificar os resultados. Ter uma boa representação visual para cada relatório e a pontuação de risco associada ajuda a longo prazo nas investigações e iterações necessárias para corrigir os problemas de segurança relatados.
Você pode criar uma conta gratuitamente limitada a 10 nós de trabalho e 1 mês de retenção de dados, o que deve ser suficiente na maioria dos casos (por exemplo, para necessidades de teste ou desenvolvimento). Você pode ler mais sobre como criar a conta na kubescape
na página de documentação oficial.
Depois de criar a conta, um ID de usuário único é gerado, que você pode usar para carregar os resultados da varredura para essa conta específica. Por exemplo, você pode ter uma automação específica, como um pipeline CI/CD, onde precisa carregar os resultados da varredura, portanto, o ID de usuário associado é necessário para distinguir entre vários inquilinos.
Análise de Pontuação de Risco e Tendências
Para cada relatório de varredura enviado para sua conta na nuvem da Armosec, um novo registro de histórico é adicionado contendo a lista de problemas encontrados e a pontuação de risco associada. Dessa forma, você pode obter tendências e os gráficos associados mostrando a evolução da pontuação de risco ao longo do tempo. Além disso, uma lista com os principais problemas de segurança é gerada também no painel principal.
A imagem abaixo ilustra esses recursos:
Entendendo o Valor da Pontuação de Risco do Kubescape
Em cada varredura, o Kubescape verifica seus recursos em busca de possíveis riscos de segurança usando controles internos. Um Controle do Kubescape é um conceito usado pela ferramenta kubescape
para denotar os testes usados por baixo dos panos para verificar um aspecto específico do seu cluster (ou recursos sendo escaneados). Indo mais adiante, um framework é uma coleção de controles ou testes usados internamente para escanear seu(s) recurso(s) específico(s) em busca de problemas. Portanto, dependendo do framework que você usa, um conjunto diferente de verificações é realizado (ainda assim, alguns testes compartilham algumas coisas em comum). Por fim, dependendo do fator de risco associado a cada teste, a pontuação final é calculada.
A pontuação final é um número positivo variando de 0 a 100%. Um valor mais baixo indica a melhor pontuação, enquanto um valor mais alto indica o pior. Portanto, se você deseja estar seguro, deve mirar no valor mais baixo possível. Na prática, uma pontuação de risco igual ou inferior a 30% deve ser um bom ponto de partida.
Remediação Assistida para Problemas de Segurança Reportados
Outra característica útil fornecida pelo portal de nuvem da Armosec é a assistência na remediação de problemas de segurança. Isso significa que você recebe uma recomendação sobre como corrigir cada problema de segurança encontrado pelo scanner kubescape. Isso é muito importante porque simplifica o processo e fecha o ciclo para cada iteração que você precisa realizar para corrigir cada problema de segurança relatado.
A imagem abaixo ilustra melhor esse processo:
Para cada problema de segurança relatado, há um ícone de ferramenta de chave inglesa exibido, no qual você pode clicar para obter assistência na remediação:
Em seguida, uma nova janela se abre, fornecendo detalhes sobre cada objeto do Kubernetes afetado, destacado em verde:
Você pode clicar em cada controle, como C-0018
, C-0030
, C-0086
, etc., e investigar os problemas destacados. Você receberá sugestões sobre como corrigir cada problema de segurança. O que resta é seguir as dicas e corrigir cada problema de segurança.
Acionando Varreduras de Cluster pela Interface Web
O portal de nuvem Armo oferece a possibilidade de acionar varreduras de cluster pela interface web, desde que o gráfico Helm dos componentes de nuvem Armo esteja implantado em seu cluster DOKS (discutido no próximo passo). Tanto a configuração quanto a varredura de imagens podem ser acionadas com um único clique no portal. Para que esse recurso funcione, é necessário aguardar que os componentes de nuvem Armo terminem de varrer seu cluster em segundo plano e façam o upload dos resultados.
A varredura de configuração é realizada navegando até a página de varredura de configuração e clicando no botão Scan. A imagem abaixo mostra como realizar essa tarefa:
Você também pode definir ou modificar o cronograma atual para varreduras automáticas, se desejar, clicando no botão Schedule na janela pop-up que aparece após clicar no botão Scan. Usando a mesma janela, você pode selecionar quais frameworks de controle usar para a varredura. A imagem abaixo mostra como realizar as tarefas:
Passo 3 – Configurando Varreduras Automáticas Kubescape para DOKS
Kubescape pode ser configurado para escanear automaticamente todo o seu cluster Kubernetes em um intervalo específico de tempo, ou cada vez que uma nova imagem de aplicativo é implantada. Você precisa implantar Componentes do Cluster Armo em seu cluster Kubernetes usando Helm para alcançar essa funcionalidade. Uma conta no Portal da Nuvem Armosec também é necessária para fazer upload e inspecionar os resultados.
O gráfico Helm da Armo instala trabalhos cron que acionam uma varredura de vulnerabilidade tanto para o cluster Kubernetes inteiro quanto para imagens de contêiner. O intervalo de cada trabalho cron é configurável no arquivo de valores do Helm.
Provisionamento de Componentes do Cluster Armo para DOKS
Passos para implantar kubescape
em seu cluster Kubernetes usando Helm:
- Adicione o repo do
Helm
e liste oscharts
disponíveis:
A saída se parece com o seguinte:
Observação:O gráfico de interesse é armo/armo-cluster-components
, que irá instalar os componentes da Armo em seu cluster Kubernetes. Por favor, visite a página do repositório armo-helm para mais detalhes sobre este gráfico.
- Obtenha seu ID de usuário da conta Armo usando a CLI do kubescape (necessário na próxima etapa):
A saída se parece com:
Observação: Se você nunca usou a CLI do kubescape
para enviar resultados de varredura para o portal de nuvem da Armosec, o comando acima não funcionará. Nesse caso, você precisa fazer login no portal e obter o ID da conta de lá, conforme explicado aqui.
- Instale os componentes do cluster Armo Kubescape usando o
Helm
– um namespacearmo-system
dedicado também será criado (certifique-se de substituir os espaços reservados<>
conforme necessário):
–create-namespace \
Nota: Uma versão específica para o gráfico Helm armo-cluster-components
é usada. Neste caso, foi escolhida a versão 1.7.15
, que corresponde à versão 1.7.15
dos componentes do cluster Armo (consulte a saída do Passo 1.
). É uma boa prática, em geral, travar em uma versão específica. Isso ajuda a ter resultados previsíveis e permite o controle de versionamento via Git
.
Agora verifique se todas as implantações dos componentes do cluster Armo estão funcionando:
A saída se parece com:
Todos os componentes do cluster Armo devem estar funcionando.
- Finalmente, após alguns minutos, você deverá ser capaz de ver os relatórios de varredura do seu cluster disponíveis no portal da nuvem, como:
- Resultados da verificação de configuração:
- Resultados da verificação de imagem:
Resultados do visualizador RBAC:
Para mais informações, visite a página de verificação de vulnerabilidades do cluster na documentação oficial.
Ajustando os Valores do Helm para o Gráfico de Componentes do Cluster Armo
Você pode alterar o comportamento do gráfico de componentes do cluster Armo editando o arquivo de valores do Helm fornecido neste guia.
- As seguintes configurações podem ser alteradas:
- Intervalos de verificação através dos valores
armoScanScheduler
earmoKubescapeScanScheduler
.
Novo gatilho de verificação de imagem via o valor triggerNewImageScan
.
A lista completa de valores que podem ser personalizados de acordo com suas necessidades está disponível no arquivo de valores do gráfico Helm oficial.
Para aplicar alterações, você precisa atualizar a versão atual do gráfico Helm via (certifique-se de substituir os espaços reservados <>
conforme necessário):
Como você se beneficia ao incorporar uma ferramenta de varredura de conformidade de segurança em seu pipeline CI/CD e evitar situações desagradáveis em um ambiente de produção?
Tudo começa no nível fundamental, onde o desenvolvimento de software tem início. Em geral, você vai querer usar um ambiente dedicado para cada etapa. Portanto, nas fases iniciais do desenvolvimento, quando o código da aplicação muda com muita frequência, você deve usar um ambiente de desenvolvimento dedicado (geralmente chamado de ambiente inferior). Em seguida, a aplicação fica cada vez mais refinada no ambiente de QA, onde equipes de QA realizam testes manuais e/ou automatizados. Depois, se a aplicação recebe a aprovação da equipe de QA, ela é promovida para os ambientes superiores, como o de staging, e finalmente para produção. Nesse processo, em que a aplicação é promovida de um ambiente para outro, é executado um pipeline dedicado, que escaneia continuamente os artefatos da aplicação e calcula o escore de risco de segurança. Se o escore não atender a um limite específico, o pipeline falha imediatamente e a promoção dos artefatos da aplicação para produção é interrompida nas fases iniciais.
Portanto, a ferramenta de escaneamento de segurança (por exemplo, kubescape) age como um guardião, impedindo que artefatos indesejados em seu ambiente de produção desde as fases iniciais de desenvolvimento. Da mesma forma, os pipelines dos ambientes superiores utilizam o kubescape
para permitir ou proibir a entrada de artefatos da aplicação no estágio final de produção.
Implementação do Fluxo de Trabalho CI/CD do GitHub Actions
Nesta etapa, você aprenderá como criar e testar um pipeline de CI/CD de amostra com varredura de vulnerabilidades integrada via fluxos de trabalho do GitHub. Para aprender os fundamentos de usar as Ações do Github com o Kubernetes da DigitalOcean, consulte este tutorial .
O pipeline fornecido na seção seguinte constrói e implementa o aplicativo game-2048-example do repositório kubernetes-sample-apps da DigitalOcean.
- Em uma visão geral de alto nível, o exemplo de fluxo de trabalho de CI/CD fornecido no repo Kubernetes-sample-apps é composto pelas seguintes etapas:
- Estágio de construção e teste do aplicativo – constrói artefatos principais do aplicativo e executa testes automatizados.
- Estágio de varredura Kubescape – varre por vulnerabilidades conhecidas nos manifestos YAML do Kubernetes associados ao aplicativo. Ele age como um portão, e o estado final do pipeline (aprovado/falha) depende desta etapa. Em caso de falha, uma notificação do Slack é enviada também.
- Estágio de construção e envio de imagem do aplicativo – constrói e marca a imagem do aplicativo usando o último SHA de commit do git. Em seguida, a imagem é enviada para o DOCR.
Estágio de implantação do aplicativo – implanta o aplicativo no Kubernetes (DOKS).
O diagrama abaixo ilustra cada trabalho do pipeline e as etapas associadas com ações (apenas a configuração relevante é mostrada):
- Nota:
- No caso de projetos baseados em
kustomize
, é melhor renderizar o manifesto final através do comandokubectl kustomize </caminho/para/arquivo/kustomization>
para capturar e analisar tudo (incluindo recursos remotos). Por outro lado, pode ser difícil identificar qual recurso do Kubernetes precisa ser corrigido. Isso ocorre devido ao fato de que o arquivo de manifesto resultante é composto por todos os recursos a serem aplicados. É assim que o Kustomize funciona – ele reúne todos os fragmentos de configuração de cada sobreposição e os aplica sobre uma base para construir o composto final.
Você também pode instruir o Kubescape
a analisar toda a pasta onde você mantém suas configurações de kustomize
(o guia atual depende dessa abordagem). Dessa forma, é mais fácil identificar qual recurso precisa ser corrigido em seu repositório. Recursos remotos usados pelo kustomize precisam ser corrigidos upstream. Além disso, segredos e ConfigMaps do Kubernetes gerados via kustomize
não são capturados.
Como você falha o pipeline se um certo nível de conformidade de segurança não for atendido?
O Kubescape CLI fornece uma flag chamada --fail-threshold
para este propósito. Esta flag se correlaciona com o escore de risco geral computado após cada análise. Você pode falhar ou passar o pipeline com base no valor do limite e interromper o deployment da aplicação se as condições não forem atendidas.
A imagem abaixo ilustra o fluxo para o exemplo de pipeline CI/CD usado neste guia:
- Por favor, siga os passos abaixo para criar e testar o fluxo de trabalho CI/CD do GitHub com o
kubescape
fornecido no repositório do GitHub kubernetes-sample-apps: - 1. Faça um fork do repositório do GitHub kubernetes-sample-apps.
SLACK_WEBHOOK_URL
– contém sua URL de webhook de entrada do Slack usada para notificações de verificação do kubescape.- Acesse a aba Ações do seu repositório bifurcado e selecione o fluxo de trabalho Exemplo de CI/CD do Kubescape do Jogo 2048:
A new entry should appear in below list after clicking the Run Workflow green button. Select the running workflow to observe pipeline progress:
Clique no botão Executar Fluxo de Trabalho e deixe os valores padrão:
O pipeline falhará e será interrompido quando o trabalho kubescape-nsa-security-check for executado. Isso é esperado porque o valor de limite padrão de 30
para a pontuação de risco geral é menor do que o valor desejado. Você também deve receber uma notificação do Slack com detalhes sobre a execução do fluxo de trabalho:
No próximo passo, você aprenderá como investigar o relatório de varredura do kubescape
para corrigir os problemas, reduzir a pontuação de risco e passar no pipeline.
Passo 5 – Investigando os Resultados da Varredura do Kubescape e Corrigindo os Problemas Reportados
Sempre que o limite do valor da pontuação de risco não for atingido, o fluxo de trabalho do GitHub game-2048 falhará e uma notificação no Slack será enviada com detalhes adicionais.
O fluxo de trabalho game-2048 executa uma verificação de segurança (a verificação local de imagens não é suportada) – verificações de configuração incorreta de manifestos do Kubernetes. O trabalho kubescape-nsa-security-check é usado para este fim. O comando kubescape
equivalente sendo usado é – kubescape scan framework nsa /caminho/para/o/projeto/kubernetes/manifests
.
O trecho abaixo mostra a lógica principal do trabalho kubescape-nsa-security-check:
–submit –account=${{ secrets.ARMOSEC_PORTAL_ACCOUNT_ID }}
A configuração acima informa ao CLI do kubescape para iniciar uma nova verificação para todos os manifestos do Kubernetes presentes no diretório kustomize/
usando o framework NSA. Também especifica qual nível de limite usar via sinalizador -t, e para enviar os resultados finais para o portal de nuvem da Armo (o sinalizador –submit em conjunto com –account).
Portanto, diminuir o valor do escore de risco e passar pelo fluxo de trabalho consiste em investigar e corrigir os problemas relatados pelo trabalho kubescape-nsa-security-check. Em seguida, você aprenderá como abordar os problemas de segurança relatados por este trabalho.
A new browser window opens showing in detail each control and description. You will also be presented with required actions to remediate the issue (highlighted in green color):
Para verificar o relatório de status, você pode clicar no link de resultados da verificação do kubescape recebido na notificação do Slack. Em seguida, clique no botão de verificação REPOSITORIES SCAN no menu à esquerda no portal de nuvem da Armo. Agora, clique na entrada kubernetes-sample-apps da lista:
Depois de coletar todas as informações do relatório de verificação, você pode prosseguir e editar o arquivo deployment.yaml do seu repositório (localizado na subpasta game-2048-example/kustomize/resources
). As correções já estão no lugar, você só precisa descomentar as últimas linhas do arquivo. O arquivo deployment.yaml
final deve ficar assim:
# Substitua os espaços reservados `<>` com as informações do seu registro do Docker
- Nota:
As sugestões C-0055 foram omitidas neste exemplo por simplicidade. Você pode ler mais sobre o modo de computação seguro no Kubernetes aqui. - O que mudou? As seguintes correções de segurança foram aplicadas:
readOnlyRootFilesystem
– executa a imagem do contêiner em modo somente leitura (não pode alterar arquivos pelokubectl exec
no contêiner).runAsNonRoot
– executa como o usuário não root definido pela diretiva USER do arquivo Dockerfile do projeto game-2048.
allowPrivilegeEscalation
– definir allowPrivilegeEscalation como false garante que nenhum processo filho de um contêiner possa obter mais privilégios do que seu pai.
capabilities.drop
– Para tornar os contêineres mais seguros, você deve fornecer aos contêineres a menor quantidade de privilégios necessários para executar. Na prática, você remove tudo por padrão e, em seguida, adiciona as capacidades necessárias passo a passo. Você pode ler mais sobre segurança de contêineres neste artigo escrito pela Armosec.
A few final checks can be performed as well on the Kubernetes side to verify if the reported issues were fixed:
- Finalmente, confirme as alterações para o arquivo deployment.yaml e faça o push para o branch principal. Após acionar manualmente o fluxo de trabalho, ele deve ser concluído com sucesso desta vez:
- Verifique se a implantação do jogo-2048 tem um sistema de arquivos somente leitura (imutável) escrevendo o arquivo de aplicativo index.html:
Verifique se o contêiner é executado como usuário não root (deve imprimir um número inteiro diferente de zero – por exemplo, 1000
):
Verifique se o contêiner é executado como usuário não root (deve imprimir um número inteiro diferente de zero – por exemplo, 1000
):
Se todas as verificações passarem, então você aplicou com sucesso as recomendações de segurança necessárias.
Existem situações em que você não deseja que a pontuação de risco final seja afetada por alguns problemas relatados que sua equipe considera seguro ignorar. O Kubescape oferece um recurso integrado para gerenciar exceções e superar essa situação.
A more efficient approach is where you integrate vulnerability scan tools directly in your favorite IDE (or Integrated Development Environment). This way, you can detect and fix security issues ahead of time in the software development cycle.
Você pode ler mais sobre este recurso aqui.
- Kubescape para IDEs
- Kubescape oferece suporte para integração IDE através das seguintes extensões:
Os plugins acima ajudarão você a detectar e corrigir problemas nas fases iniciais de desenvolvimento, eliminando assim frustrações, custos e falhas de segurança em sistemas de produção. Além disso, ajuda a reduzir as iterações e o esforço humano a longo prazo. Como exemplo, para cada problema de segurança relatado pela automação do seu CI/CD, você precisa voltar e corrigir o problema no seu código, fazer commit das mudanças, aguardar a automação do CI/CD novamente e repetir em caso de falha.
Você pode ler mais sobre esses recursos navegando até a página de documentação do Kubescape e, em seguida, procurando na seção de INTEGRAÇÕES.
Passo 6 – Disparando o Fluxo de Trabalho CI/CD do Kubescape Automaticamente
Você pode configurar o fluxo de trabalho para ser disparado automaticamente a cada commit ou PR na branch principal descomentando as seguintes linhas no topo do arquivo game-2048-kubescape.yaml:
Depois de editar o arquivo, faça o commit das alterações no seu branch principal e você estará pronto para prosseguir.
Passo 7 – Habilitando Notificações no Slack para Monitoramento Contínuo
A automação da varredura de vulnerabilidades que você implementou até agora é um bom ponto de partida, mas não é perfeito. Por quê?
Um problema com a abordagem atual é que você nunca sabe quando novos problemas são relatados para os ativos que já implantou em seus ambientes. Em outras palavras, você avaliou os riscos de segurança e tomou medidas para corrigir os problemas em um ponto específico no tempo – quando sua automação de CI/CD foi executada.
Mas e se novos problemas forem relatados enquanto isso, e sua aplicação estiver vulnerável novamente?
A funcionalidade de monitoramento do Kubescape ajuda você a lidar com novas vulnerabilidades, que são constantemente divulgadas. Quando combinado com a integração do Slack, você pode tomar medidas imediatas para corrigir problemas recém-divulgados que possam afetar sua aplicação em um ambiente de produção.
- O portal de nuvem Armo suporta integração com o Slack para enviar alertas em tempo real após cada varredura do cluster. Este recurso requer a instalação do chart Helm dos componentes de nuvem Armo no seu cluster DOKS, conforme explicado no Passo 3 – Configurando Varreduras Automáticas do Kubescape para DOKS.
- Ao ativar alertas do Slack, você receberá notificações importantes sobre vulnerabilidades detectadas em seu cluster DOKS, tais como:
- Vulnerabilidades em nós de trabalho (nível do sistema operacional).
Vulnerabilidades em imagens de contêineres.
- Misconfigurações do Kubernetes para vários recursos, como implantações, pods, etc.
- Primeiro, você precisa criar um Aplicativo do Slack. Em seguida, você precisa conceder as seguintes permissões ao seu Bot do Slack na página OAuth & Permissões:
channels:join
– Entrar em canais públicos em um espaço de trabalho.channels:read
– Visualizar informações básicas sobre canais públicos em um espaço de trabalho.groups:read
– Visualizar informações básicas sobre canais privados aos quais seu Aplicativo do Slack foi adicionado.chat:write
– Enviar mensagens como @<Nome do seu Aplicativo do Slack>.
im:read
– Visualizar informações básicas sobre mensagens diretas às quais seu Aplicativo do Slack foi adicionado.
mpim:read
– Visualizar informações básicas sobre mensagens diretas em grupo às quais seu Aplicativo do Slack foi adicionado.
Em seguida, acesse a página configurações de sua conta no portal da nuvem Armo (ícone de engrenagem no canto superior direito). A partir daí, selecione a página de Integrações, depois Slack.
Agora, cole o seu token de autenticação do Slack Bot (que pode ser encontrado na página OAuth & Permissions da sua página de Aplicativos do Slack) no campo de entrada Inserir Token. Por fim, selecione como ser notificado e o canal do Slack onde as alertas devem ser enviadas. Clique no botão Definir Notificações e está pronto. A imagem abaixo ilustra os detalhes:
Após configurar a integração do Slack, você deve receber notificações periódicas após cada varredura de cluster no canal designado:
Se você receber notificações semelhantes às acima, então configurou com sucesso a integração do Armosec Kubescape com o Slack.
Neste guia, você aprendeu como usar uma das ferramentas de varredura de vulnerabilidades do Kubernetes mais populares – Kubescape. Você também aprendeu como realizar varreduras de cluster e de repositório (manifestos YAML) usando a CLI do Kubescape. Em seguida, aprendeu como integrar a ferramenta de varredura de vulnerabilidades em um pipeline de CI/CD tradicional implementado usando os fluxos de trabalho do GitHub.
Por fim, aprendeu como investigar relatórios de varredura de vulnerabilidades, aplicar correções para remediar a situação e reduzir a pontuação de risco a um mínimo através de um exemplo prático – a aplicação game-2048 do repositório kubernetes-sample-apps.
- Saiba mais
- Você pode aprender mais lendo os seguintes recursos adicionais:
- Usando a Ferramenta de Verificação de Vulnerabilidades Snyk
- Melhores Práticas de Segurança do Kubernetes por Armo
- Identificando Problemas de Segurança Antecipadamente por Armosec
- Proteja suas Implantações do Kubernetes por Armosec
- Saiba Mais sobre os Scanner de Host da Armosec
Source:
https://www.digitalocean.com/community/developer-center/using-the-kubescape-vulnerability-scan-tool