Introdução
O Kubescape é uma ferramenta de código aberto para Kubernetes desenvolvida pela Armosec usada para análise de riscos, conformidade de segurança, visualização de RBAC e verificação de vulnerabilidades em imagens. Além disso, o Kubescape é capaz de examinar 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ções), realizar cálculos de pontuação de risco e mostrar tendências de risco ao longo do tempo.
Recursos-chave do Kubescape:
- Detectar configurações incorretas do Kubernetes e fornecer assistência de remediação via Portal Armosec Cloud.
- Análise de risco e tendências ao longo do tempo via Portal Armosec Cloud.
- Inclui vários frameworks de conformidade de segurança, como ArmoBest, NSA, MITRE e Melhores Práticas Devops.
- Suporte à gestão de exceções, permitindo que administradores do Kubernetes marquem níveis de risco aceitáveis.
- Integra-se com várias ferramentas como Jenkins, fluxos de trabalho do Github, Prometheus, etc.
- Verificação 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 executá-lo 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 só funciona se você implantar os Componentes do 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 só funciona se você implantar os Componentes do Cluster Armo no seu cluster DOKS.
- Dentro do seu Ambiente de Desenvolvimento Integrado do Visual Studio Code. Desta forma, você pode identificar problemas muito rapidamente nos estágios iniciais do desenvolvimento.
O Kubescape está utilizando diferentes frameworks para detectar misconfigurações 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 algumas outras funcionalidades avançadas. 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, com certeza a ferramenta é. 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, aprenderá a tomar as medidas apropriadas para remediar a situação. Por fim, aprenderá como integrar o Kubescape em um pipeline CI/CD para escanear vulnerabilidades nos estágios iniciais de desenvolvimento.
Sumário
- Introdução
- Requisitos
- Passo 1 – Conhecendo o Kubescape CLI
- Passo 2 – Conhecendo o Portal Armosec Cloud
- Passo 3 – Configurando Escaneamentos Automáticos do Kubescape para DOKS
- Passo 4 – Usando o 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 no Slack para Monitoramento Contínuo
- Conclusão
- Recursos Adicionais
Pré-requisitos
Para concluir 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 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 vulnerabilidades via interface de linha de comando kubescape
. O CLI do Kubescape é projetado para ser utilizado 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 hosts (nós de trabalho), escaneamento de repositórios locais ou remotos (por exemplo, GitHub), detecção de configurações erradas em manifestos YAML do Kubernetes ou gráficos do Helm. Vários frameworks podem ser selecionados via comando framework
, como ArmoBest, NSA, MITRE, etc.
Quando o CLI do Kubescape é invocado, ele irá baixar (ou atualizar) o banco de dados de vulnerabilidades conhecidas em sua máquina local. Em seguida, ele iniciará o processo de escaneamento e relatará problemas em um formato específico. Por padrão, ele imprimirá uma tabela resumida 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 de Nuvem Armosec via a sinalização --submit
para armazenar e visualizar os resultados do escaneamento posteriormente.
Observação: Não é obrigatório enviar os resultados do escaneamento para o portal de nuvem Armosec. A grande vantagem de usar o portal é a visibilidade, pois oferece acesso a um painel agradável onde você pode verificar todos os relatórios de escaneamento e a pontuação de risco geral. Também ajuda a longo prazo com investigações e dicas de remediação.
Alguns exemplos para tentar com o CLI do Kubescape:
-
Escaneie todo o cluster do Kubernetes e gere um relatório resumido 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 Armosec:
-
Realizar verificação de cluster usando um framework específico (por exemplo, NSA):
O Kubescape é capaz de escanear os hosts (ou nós de trabalho) do seu cluster Kubernetes em busca de vulnerabilidades do sistema operacional. Para habilitar esse recurso, você precisa passar a flag --enable-host-scan
para o CLI do kubescape. Quando essa flag está habilitada, o kubescape implanta sensores
em seu cluster. Os sensores são criados usando DaemonSets do Kubernetes, que implantam Pods em cada nó do seu cluster para escanear vulnerabilidades conhecidas. Após o processo de escaneamento 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 também, que 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 de Nuvem da Armosec
A Armosec oferece um portal baseado em nuvem onde você pode fazer upload dos 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 depois 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 você 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 fins de teste ou desenvolvimento). Você pode ler mais sobre como criar a conta na nuvem do kubescape
na página de documentação oficial.
Depois de criar a conta, um ID de usuário exclusivo é gerado, que você pode usar para fazer upload dos 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 fazer upload dos 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 carregado em sua conta na nuvem 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 além, um framework é uma coleção de controles ou testes usados internamente para escanear seu(s) recurso(s) específico(s) em busca de problemas. Assim, dependendo do framework que você usa, um conjunto diferente de verificações é realizado (ainda assim, alguns testes compartilham algumas coisas em comum). Finalmente, 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 menor indica a melhor pontuação, enquanto um valor mais alto indica o pior. Portanto, se você quiser 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 funcionalidade útil fornecida pelo portal em nuvem da Armosec é a assistência de remediação de problemas de segurança. 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 reportado.
A imagem abaixo ilustra melhor esse processo:
Para cada problema de segurança reportado, há um ícone de ferramenta de chave inglesa exibido, no qual você pode clicar e obter assistência de remediação:
Em seguida, uma nova janela se abre, fornecendo detalhes sobre cada objeto 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ê será apresentado com sugestões sobre como corrigir cada problema de segurança. O que resta é seguir as dicas e corrigir cada problema de segurança.
Desencadeando Varreduras de Cluster a partir da Interface Web
O portal de nuvem da Armo oferece a possibilidade de desencadear varreduras de cluster a partir da interface web, caso o gráfico Helm dos componentes da nuvem Armo esteja implantado em seu cluster DOKS (discutido no próximo passo). Tanto a configuração quanto a varredura de imagem podem ser desencadeadas com um único clique no portal. Para que esse recurso funcione, você precisa esperar que os componentes da nuvem Armo terminem de escanear seu cluster em segundo plano e façam o upload dos resultados.
Desencadear uma varredura de configuração é feito 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 desejado, 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 varredura. A imagem abaixo mostra como realizar as tarefas:
Passo 3 – Configurando Varreduras Automáticas do Kubescape para DOKS
O Kubescape pode ser configurado para verificar automaticamente todo o seu cluster Kubernetes em um intervalo de tempo específico ou cada vez que uma nova imagem de aplicativo é implantada. Você precisa implantar Componentes de Cluster Armo em seu cluster Kubernetes usando o Helm para alcançar essa funcionalidade. Uma conta no Portal de 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 verificação de vulnerabilidades tanto para o cluster Kubernetes quanto para imagens de contêineres. O intervalo de cada trabalho cron é configurável no arquivo de valores do Helm.
Provisionamento de Componentes de Cluster Armo para DOKS
Passos para implantar kubescape
em seu cluster Kubernetes usando Helm:
- Adicione o
repositório Helm
e liste osgráficos
disponíveis:
A saída se parece com o seguinte:
Observação:O gráfico de interesse é armo/armo-cluster-components
, que 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 kubescape (necessário na próxima etapa):
A saída se parece com:
Nota:
Se você nunca usou a CLI 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 namespace dedicadoarmo-system
será criado também (certifique-se de substituir os espaços reservados<>
adequadamente):
–create-namespace \
Nota:
Uma versão específica do gráfico Helm armo-cluster-components
é usada. Neste caso, 1.7.15
foi escolhido, que mapeia para a versão 1.7.15
dos componentes do cluster Armo (veja 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 versão via Git
.
Agora verifique se todos os deployments dos componentes do cluster Armo estão em execução:
A saída se parece com:
Todos os componentes do cluster Armo devem estar em execução.
- Finalmente, após alguns minutos, você deve conseguir ver os relatórios de varredura do seu cluster disponíveis no portal de 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 via os 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 as alterações, você precisa atualizar a versão atual do gráfico Helm via (certifique-se de substituir os espaços reservados <>
adequadamente):
Como você se beneficia ao incorporar uma ferramenta de verificação 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 da base, onde o desenvolvimento de software tem início. Em geral, você vai querer usar um ambiente dedicado para cada estágio. Portanto, nos estágios 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 as equipes de QA realizam testes manuais e/ou automatizados. Depois, se a aplicação obtém a aprovação da equipe de QA, ela é promovida para os ambientes superiores, como staging, e finalmente para produção. Nesse processo, onde a aplicação é promovida de um ambiente para outro, um pipeline dedicado é executado, que verifica continuamente os artefatos da aplicação e calcula o escore de risco de segurança. Se o escore não atender a um limiar específico, o pipeline falha imediatamente e a promoção dos artefatos da aplicação para produção é interrompida nos estágios iniciais.
Portanto, a ferramenta de escaneamento de segurança (por exemplo, kubescape) age como um guardião, impedindo artefatos indesejados em seu ambiente de produção desde os estágios iniciais de desenvolvimento. Da mesma forma, os pipelines dos ambientes superiores utilizam o kubescape
para permitir ou proibir que os artefatos da aplicação entrem na etapa final de produção.
Implementação de Fluxo de Trabalho de CI/CD do GitHub Actions
Neste passo, você aprenderá como criar e testar um pipeline de CI/CD de exemplo 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 compila e implanta a aplicação 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 repositório kubernetes-sample-apps é composto pelas seguintes etapas:
- Etapa de construção e teste da aplicação – compila os principais artefatos da aplicação e executa testes automatizados.
- Etapa de varredura do Kubescape – verifica as vulnerabilidades conhecidas nos manifestos YAML do Kubernetes associados à aplicação. Ele atua como um portão, e o estado final do pipeline (passagem/falha) depende desta etapa. Em caso de falha, uma notificação no Slack também é enviada.
- Etapa de construção e envio da imagem da aplicação – compila e marca a imagem da aplicação usando o SHA do último commit do git. Em seguida, a imagem é enviada para o DOCR.
Etapa de implantação da aplicação – implanta a aplicação no Kubernetes (DOKS).
O diagrama abaixo ilustra cada trabalho do pipeline e as etapas associadas com as ações (apenas a configuração relevante é mostrada):
- Nota:
- No caso de projetos baseados em
kustomize
, é melhor renderizar o manifesto final via o comandokubectl kustomize </caminho/para/arquivo/de/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 indicar ao Kubescape
para escanear a pasta inteira onde você mantém suas configurações do kustomize
(o guia atual se baseia nessa abordagem). Dessa forma, é mais fácil identificar qual recurso precisa ser corrigido em seu repositório. Recursos remotos usados pelo kustomize precisam ser corrigidos na origem. Além disso, segredos e ConfigMaps do Kubernetes gerados via kustomize
não são capturados.
Como você falha no 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 correlaciona com a pontuação de risco geral calculada após cada escaneamento. Você pode falhar ou passar no 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 do CI/CD do
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
– armazena o seu URL de webhook de entrada do Slack usado para notificações de verificação do kubescape.- Navegue até a guia Ações do seu repositório bifurcado e selecione o fluxo de trabalho Exemplo de CI/CD 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 padrão do limite 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 pelo pipeline.
Passo 5 – Investigando os Resultados da Varredura do Kubescape e Corrigindo os Problemas Reportados
Sempre que o limite de valor da pontuação de risco não for atingido, o fluxo de trabalho do game-2048 no GitHub falhará e uma notificação do Slack será enviada com detalhes adicionais.
O fluxo de trabalho do 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 esse propósito. O comando equivalente de kubescape
sendo usado é – kubescape scan framework nsa /caminho/para/o/projeto/kubernetes/manifests
.
Abaixo está um trecho que mostra a lógica principal do trabalho kubescape-nsa-security-check:
–submit –account=${{ secrets.ARMOSEC_PORTAL_ACCOUNT_ID }}
A configuração acima diz ao CLI 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 através da flag -t, e para enviar os resultados finais para o portal de nuvem Armo (a flag –submit em conjunto com –acount).
Assim, 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 lidar com 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 dos 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 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 parecer como abaixo:
# Substitua os marcadores `<>` pelas 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 por meio dekubectl exec
no contêiner).runAsNonRoot
– é executado 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 serem executados. 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:
- Por fim, faça o commit das alterações para o arquivo deployment.yaml e faça push para o ramo principal. Após acionar manualmente o fluxo de trabalho, ele deve ser concluído com sucesso desta vez:
- Verifique se o deployment do jogo-2048 tem um sistema de arquivos somente leitura (imutável) escrevendo o arquivo de aplicativo index.html:
Verifique se o contêiner está sendo executado como um usuário não root (deve imprimir um número inteiro diferente de zero – por exemplo, 1000
):
Verifique se o contêiner está sendo executado como um 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.
Há 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 esse recurso aqui.
- Kubescape para IDEs
- Kubescape oferece suporte para integração com IDE através das seguintes extensões:
Extensão do Visual Studio Code.
Os plugins acima ajudarão você a detectar e corrigir problemas nos estágios iniciais de desenvolvimento, eliminando assim frustrações, custos e falhas de segurança em sistemas de produção. Além disso, isso ajuda a reduzir as iterações e o esforço humano a longo prazo. Como exemplo, para cada problema de segurança relatado pela sua automação de CI/CD, você precisa voltar e corrigir o problema no seu código, fazer commits das alterações, aguardar a automação de 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 então procurando na seção de INTEGRAÇÕES.
Passo 6 – Acionando Automaticamente o Fluxo de Trabalho CI/CD do Kubescape
Você pode configurar o fluxo de trabalho para ser acionado automaticamente a cada commit ou PR na branch principal descomentando as seguintes linhas no início do arquivo game-2048-kubescape.yaml:
Depois de editar o arquivo, faça commit das alterações no seu branch principal e você estará pronto para seguir em frente.
Passo 7 – Habilitando Notificações do Slack para Monitoramento Contínuo
A automação da verificação de vulnerabilidades que você implementou até agora é um bom ponto de partida, mas não é perfeita. Por quê?
Um problema com a abordagem atual é que você nunca sabe quando novos problemas são relatados para os ativos que você 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 CI/CD foi executada.
Mas e se novos problemas forem relatados nesse ínterim, e sua aplicação estiver vulnerável novamente?
A função de monitoramento do Kubescape ajuda você a lidar com novas vulnerabilidades, que são constantemente divulgadas. Quando combinada 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 da Armo suporta integração do Slack para enviar alertas em tempo real após cada verificação de cluster. Este recurso requer que o gráfico Helm dos componentes de nuvem da Armo seja instalado em seu cluster DOKS, conforme explicado em Passo 3 – Configurando Verificações Automáticas do Kubescape para DOKS.
- Ao habilitar alertas do Slack, você receberá notificações importantes sobre vulnerabilidades detectadas em seu cluster DOKS, tais como:
- Vulnerabilidades no nó de trabalho (nível do sistema operacional).
Vulnerabilidades na imagem do contêiner.
- Misconfigurações do Kubernetes para vários recursos, como implantações, pods, etc.
- Primeiro, você precisa criar um Aplicativo Slack. Em seguida, é necessário conceder as seguintes permissões ao seu Bot do Slack na página OAuth & Permissões:
channels:join
– Participar de 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 Slack foi adicionado.chat:write
– Enviar mensagens como @< Nome do seu Aplicativo Slack >.
im:read
– Visualizar informações básicas sobre mensagens diretas às quais seu Aplicativo Slack foi adicionado.
mpim:read
– Visualizar informações básicas sobre mensagens diretas em grupo às quais seu Aplicativo Slack foi adicionado.
Em seguida, acesse a página de configurações da sua conta no portal de nuvem da Armo (ícone de engrenagem no canto superior direito). A partir daí, selecione a página de Integrações, depois Slack.
Agora, cole seu token de autenticação do Slack Bot (que pode ser encontrado na página OAuth & Permissions da página do seu aplicativo Slack) no campo de entrada Inserir Token. Por fim, selecione como ser notificado e o canal do Slack onde os alertas devem ser enviados. Clique no botão Configurar Notificações e pronto. A imagem abaixo ilustra os detalhes:
Após configurar a integração do Slack, você deverá receber notificações periódicas após cada verificação de cluster no canal designado:
Se 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 verificação de vulnerabilidades do Kubernetes mais populares – Kubescape. Você também aprendeu como realizar verificação de cluster e de repositório (manifestos YAML) usando a CLI do Kubescape. Em seguida, aprendeu como integrar a ferramenta de verificação de vulnerabilidades em um pipeline tradicional de CI/CD implementado usando fluxos de trabalho do GitHub.
Por fim, aprendeu como investigar relatórios de verificação de vulnerabilidades, aplicar correções para remediar a situação e reduzir a pontuação de risco a um mínimo por meio 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 do Snyk
- Práticas de Segurança do Kubernetes pela Armo
- Identifique Problemas de Segurança Antecipadamente com a Armosec
- Proteja suas Implantações do Kubernetes com a Armosec
- Saiba Mais sobre os Scanners de Hospedagem da Armosec
Source:
https://www.digitalocean.com/community/developer-center/using-the-kubescape-vulnerability-scan-tool