Instalando vários controladores do Snyk em um único cluster Kubernetes
Pas Apicella
15 de agosto de 2022
0 minutos de leituraO Kubernetes oferece uma interface para executar sistemas distribuídos com facilidade. Ele cuida do escalonamento e da recuperação de falhas dos seus aplicativos, oferece padrões de implantação e muito mais. Em relação à segurança, cabe às equipes que implantam workloads no cluster Kubernetes decidir quais deles devem ser monitorados para atender aos requisitos de segurança dos aplicativos.
Mas e se cada equipe pudesse controlar quais imagens de contêiner são verificadas e quais workloads específicos são monitorados? Várias equipes podem implantar workloads no Kubernetes, cada uma com requisitos próprios sobre o que deve ser monitorado. A melhor maneira de atender a esse caso de uso é permitir que cada equipe configure sua própria integração do Snyk com o Kubernetes e monitore os workloads necessários. Veja como isso funciona.
Visão geral da integração do Snyk com o Kubernetes
O Snyk se integra ao Kubernetes, permitindo que você importe e teste continuamente seus workloads em execução para identificar vulnerabilidades nas imagens subjacentes e configurações que possam reduzir a segurança desses workloads. Depois da implantação, o Snyk continua monitorando os workloads para identificar exposição a vulnerabilidades recém-descobertas e outros problemas de segurança quando novos contêineres são implantados ou a configuração do workload muda.

Diagrama da arquitetura da integração com o Kubernetes
Como instalar vários controladores do Snyk em um único cluster Kubernetes
Agora vem a parte divertida! Vamos explicar passo a passo como configurar vários controladores do Snyk em um único cluster Kubernetes. Estas são as etapas:
Configure namespaces separados
Crie uma organização do Snyk para cada namespace
Instale e configure
snyk monitorpara o primeiro namespace (apples)Instale e configure
snyk monitorpara o segundo namespace (bananas)Verifique se os workloads implantados são importados automaticamente pela política
Implante workloads em bananas para importá-los automaticamente por meio de um arquivo de política Rego
Pré-requisitos
Para usar a integração com o Kubernetes, você precisa ter uma conta Business ou Enterprise do Snyk. Se ainda não tiver uma dessas contas, você pode iniciar uma avaliação gratuita do nosso plano Business. Mesmo que não queira testar por conta própria, recomendo que continue lendo (pulando os blocos de código) para aprender a instalar e gerenciar vários controladores do Snyk em um único cluster Kubernetes.
Um cluster Kubernetes, como AKS, EKS, GKE, Red Hat OpenShift ou qualquer outra distribuição compatível.
Etapa 1: configure namespaces separados
Nesta demonstração, estou usando um serviço Azure AKS como cluster Kubernetes. Nesse cluster, vamos instalar dois controladores do Snyk, cada um em seu próprio namespace: um no namespace apples e outro no namespace bananas, como mostra o diagrama abaixo.

Crie os namespaces conforme mostrado abaixo:
Etapa 2: crie uma organização do Snyk para cada namespace
Usar organizações do Snyk separadas nos permite separar a verificação de workloads. Assim, as equipes de produto podem usar suas próprias organizações para ter mais controle sobre a verificação de seus workloads e imagens. Você também pode usar a mesma organização com cada um dos controladores do Snyk que vamos implantar, mas, neste caso, vamos mantê-las separadas. Em ambos os casos, os workloads aparecerão com um rótulo definido durante a instalação dos controladores do Snyk.

Nossas novas organizações
Uma para o namespace apples:

Uma para o namespace bananas:

Depois de criadas, você verá duas organizações vazias no aplicativo do Snyk. Vamos usá-las em breve.


Em cada organização, habilite a integração com o Kubernetes: selecione a guia Integrações, escolha Kubernetes e clique em Conectar. Em seguida, consulte a documentação do Snyk para Kubernetes para concluir a configuração.
Anote os IDs de integração da integração do Kubernetes de cada organização do Snyk: você precisará deles em breve. Para encontrar o ID de integração do Kubernetes, clique no ícone de configurações da organização na barra de navegação superior do Snyk, acesse Integrações na barra lateral e selecione a integração com o Kubernetes, como mostrado abaixo.

Etapa 3: instale e configure snyk monitor para o namespace apples
Agora que configuramos nossas organizações e integrações e as conectamos ao cluster, podemos configurar o Snyk Monitor em uma janela do terminal.
Vamos criar um arquivo para assinar eventos de workload, definir os critérios das assinaturas, instalar o gráfico Helm do Snyk para monitoramento do Kubernetes e configurar/iniciar o monitor.
Crie o arquivo do registro
No terminal, crie um diretório para a organização apples e acesse-o:
Crie um arquivo chamado workload-events.rego com o conteúdo abaixo, substituindo <APPLES_INTEGRATION_ID> pelo ID de integração da integração do Kubernetes da organização apples.
Com a política Rego abaixo, estamos instruindo o controlador do Snyk a importar/excluir workloads somente do namespace apples, desde que o tipo de workload do Kubernetes não seja CronJob nem Service. Para saber mais sobre os diferentes tipos de workload, consulte a documentação do Snyk.
workload-events.rego
Adicione os gráficos Helm do Snyk ao seu repositório
Acesse seu ambiente Kubernetes e execute o comando a seguir para adicionar o repositório Snyk Charts ao Helm. Vamos precisar dele em breve, ao instalar este gráfico Helm.
Crie a configuração do Snyk Monitor e implante o gráfico Helm
Com um secret do Kubernetes, podemos executar o processo sem expor credenciais em texto simples. Nestas etapas, vamos criar e usar o secret para implantar a configuração da organização apples.
Crie o secret snyk-monitor para o namespace apples, substituindo <APPLES_INTEGRATION_ID> pelo ID da integração do Kubernetes da organização apples no aplicativo do Snyk. Nesta demonstração, usamos o Docker Hub público como registro de contêineres, que não exige credenciais para acessar imagens públicas. Para saber mais sobre como usar registros privados de contêineres, consulte a documentação do controlador do Snyk.
Agora, crie um configmap para armazenar o arquivo de política Rego que o snyk-monitor usará para determinar o que importar ou excluir automaticamente do namespace apples:
Em seguida, instale o snyk-monitor no namespace apples, substituindo <APPLES_INTEGRATION_ID> pelo ID de integração do Snyk da organização apples no comando:
Observação: O rótulo “AKS K8s - Apples” permite encontrar no Snyk os workloads importados, que você verá em breve.
Por fim, verifique se tudo está funcionando (este comando pressupõe que você tenha instalado o jq; se não tiver, remova o trecho | jq do comando):
Neste momento, temos um controlador do Snyk instalado no namespace apples com um nome exclusivo. Mais adiante, mostraremos como esse controlador importa automaticamente os workloads de acordo com a configuração, à medida que eles são implantados no namespace apples do cluster Kubernetes. Por enquanto, você pode notar que, ao atualizar a página de projetos da organização apples, ela já verificou o próprio Snyk Monitor. Isso acontece porque pedimos que verificasse os workloads do tipo Deployment no namespace apples.

Etapa 4: instale e configure snyk monitor para o namespace bananas
Crie um diretório chamado bananas e acesse-o:
Agora, crie um arquivo chamado workload-events.rego com o conteúdo abaixo e substitua <BANANAS_INTEGRATION_ID> pelo ID da integração do Kubernetes da organização bananas no aplicativo do Snyk:
Em seguida, crie o secret snyk-monitor para o namespace bananas, substituindo BANANAS_INTEGRATION_ID pelo ID da integração do Kubernetes da organização bananas no aplicativo do Snyk:
Depois, crie um configmap para armazenar o arquivo de política Rego que o snyk-monitor usará para determinar o que importar ou excluir automaticamente do namespace bananas:
Instale o snyk-monitor no namespace bananas, substituindo ¤BANANAS_INTEGRATION_ID> pelo ID da integração do Kubernetes da organização bananas no aplicativo do Snyk:
Por fim, verifique se tudo está funcionando:
Etapa 5: verifique se os workloads implantados são importados automaticamente pela política
Em seguida, vamos implantar workloads no namespace apples para confirmar que eles são importados automaticamente. Vamos começar com um aplicativo Spring Boot, que implantaremos no Kubernetes conforme mostrado abaixo.
Crie um arquivo chamado springbootemployee-K8s.yaml com o seguinte conteúdo:
Depois, implante-o:
Após alguns minutos, verifique se o workload foi verificado e importado automaticamente para a organização apples no aplicativo do Snyk, conforme instruído pelo controlador do Snyk no namespace apples.

Etapa 6: implante workloads em bananas — importação automática por meio de um arquivo de política Rego
Crie um arquivo chamado snyk-boot-web-deployment.yaml com o seguinte conteúdo:
Implante-o assim:
Após cerca de 3 minutos, verifique se o workload foi verificado e importado automaticamente para a organização bananas no aplicativo do Snyk, conforme instruído pelo controlador do Snyk no namespace bananas.

Bônus: como visualizar os logs dos controladores do Snyk
As configurações e os arquivos YAML do Kubernetes podem ser um pouco complicados. Se você tiver problemas para configurar os monitores, pode ser útil visualizar os logs de cada controlador do Snyk, usando os comandos a seguir:
Controlador do Snyk de Apples
Controlador do Snyk de Bananas
Resumo
Neste blog, mostramos como implantar vários controladores do Snyk em um único cluster Kubernetes, cada um monitorando seu próprio namespace. Os controladores se comunicam com a API do Kubernetes para determinar quais workloads (como Deployment, ReplicationController e CronJob, conforme definidos no arquivo de política Rego) estão em execução no cluster, localizar as imagens associadas e verificá-las diretamente no cluster em busca de vulnerabilidades.
Sinta-se à vontade para testar estas etapas no seu próprio cluster Kubernetes. Para isso, inicie uma avaliação gratuita do plano Snyk Business.
Recursos para saber mais
Agora que você aprendeu como é fácil configurar a integração do Snyk com o Kubernetes, confira alguns links úteis para começar sua jornada de segurança de contêineres.
Como configurar o Snyk Container para importar/excluir automaticamente projetos de workloads do Kubernetes
Aprenda Rego com o excelente curso tutorial da Styra
Proteja a infraestrutura desde a origem
A Snyk automatiza a segurança e a conformidade de IaC nos fluxos de trabalho e detecta recursos com configurações divergentes ou ausentes.



