Proteja sua aplicação do Argo CD ao Kubernetes
JJ Ng
Pas Apicella
12 de outubro de 2022
0 minutos de leituraGitOps é uma abordagem popular para gerenciar e proteger o pipeline de desenvolvimento de aplicações. Para muitas pessoas que estão começando a adotar GitOps, surge uma dúvida comum: “como proteger meu pipeline quando tudo é automatizado?”
O framework GitOps é um conceito em que todas as alterações e commits de código são feitos pelo Git, que então aciona um pipeline automatizado para criar e implantar aplicações no Kubernetes. Como há poucos pontos de contato entre as equipes de desenvolvimento e segurança ao longo do pipeline, é preciso tornar a segurança obrigatória para garantir que as aplicações implantadas tenham o mínimo possível de vulnerabilidades.
Este artigo mostra como a Snyk pode oferecer segurança de aplicações em GitOps, com foco em uma ferramenta popular: o Argo CD. Nesse cenário, a Snyk executa uma análise de IaC para garantir que a aplicação esteja segura antes da implantação e interrompe o build caso não esteja. A Snyk também pode monitorar automaticamente as aplicações implantadas em diferentes namespaces do Kubernetes.
O que é o Argo CD?
O Argo CD é uma ferramenta de entrega contínua (CD) declarativa e nativa do Kubernetes que acompanha um repositório e detecta alterações ou “drift”. Em seguida, aplica as alterações necessárias à configuração do cluster Kubernetes.
Como configurar o Argo CD para funcionar com a Snyk
Esta demonstração mostra como começar seu processo de GitOps com o Argo CD, usando a Snyk para proteger a aplicação e monitorar workloads do Kubernetes. Você seguirá estas etapas:
Pré-requisitos
Para executar testes da Snyk no Argo CD e importar automaticamente workloads do Kubernetes para a Snyk, é necessário ter uma conta da Snyk com plano Business ou Enterprise. Se você ainda não tem uma conta da Snyk, pode iniciar uma avaliação gratuita do nosso plano Business.
Uma instância do Argo CD em execução no cluster Kubernetes. Confira os detalhes de configuração na documentação do Argo CD.
Um cluster Kubernetes em execução (por exemplo, EKS, AKS, GKE, Red Hat OpenShift ou qualquer distribuição compatível).
Etapa 1: clone seu repositório Git
Esta demonstração usa uma aplicação de enquetes em Flask, cujo código-fonte está hospedado em https://github.com/jiajunngjj/flask-polling-app. Clone o repositório no seu próprio ambiente.
git clone https://github.com/jiajunngjj/flask-polling-app.git
Etapa 2: configure o Argo CD
Adicione seu cluster Kubernetes ao Argo CD:
argocd cluster add CONTEXTNAME
Nesta demonstração, o Argo CD está dentro deste cluster Kubernetes, então a conexão é estabelecida automaticamente usando o nome de host interno do K8s (kubernetes.default.svc):

Em seguida, verifique se o repositório mencionado anteriormente também foi adicionado ao Argo CD:

Depois que o repositório for adicionado, você verá algo parecido com isto:

Etapa 3: implante a aplicação usando o Argo CD
Crie um namespace do Kubernetes para implantar a aplicação. Neste caso, vamos criar o namespace argocd-demo para executar o flask-polling-app:
kubectl create ns argocd-demo
Use a linha de comando do Argo CD para criar a aplicação (ou faça isso pela interface do Argo CD depois de adicionar o repositório):
argocd app create snyk-demo \ --repo https://github.com/jiajunngjj/flask-polling-app.git \ --path argocd \ --dest-server https://kubernetes.default.svc \ --dest-namespace argocd-demo
Veja o que cada parte do comando faz:
repo — Repositório de gerenciamento de código-fonte (SCM)
path — Diretório que contém o manifesto do Kubernetes
dest-server — Cluster Kubernetes
dest-namespace — Namespace do Kubernetes onde a aplicação será implantada
Depois que a aplicação for criada no Argo CD, ela aparecerá na interface com o status OutOfSync:


Em seguida, execute o comando sync do Argo CD para implantar a aplicação:
argocd app sync snyk-demo
A aplicação deverá aparecer na interface do Argo CD:

Você também verá que a aplicação começou a ser implantada no namespace do Kubernetes argocd-demo:
Etapa 4: crie um objeto Secret do Kubernetes para seu token da Snyk
Depois que a aplicação for adicionada ao Argo CD, é hora de incluir o teste Snyk IaC no pipeline do Argo CD. Recupere seu token da Snyk no app da Snyk e crie um objeto Secret no namespace argocd-demo:
Etapa 5: crie um hook de recurso PreSync do Argo CD
Crie um arquivo chamado snyk-scan.yaml no mesmo diretório dos arquivos YAML de implantação (argocd), com o seguinte conteúdo:
Edite o arquivo polling-app.yaml para acionar a detecção de drift de configuração (neste exemplo, o número de réplicas é alterado para “1”):
Execute comandos do Git para enviar o arquivo ao repositório:
Etapa 6: aguarde o Argo CD detectar o drift de configuração
Quando o Argo CD detecta o drift de configuração, ele começa a sincronizar para alcançar o novo estado desejado. Você verá a análise do Snyk IaC ser acionada antes da implantação da aplicação:

Você também verá snyk-iac-scan em execução como pod:
Por fim, na interface do Argo CD, você verá uma tarefa snyk-iac-scan:

Etapa 7: faça a integração com o Kubernetes
A Snyk se integra ao Kubernetes, permitindo importar e testar seus workloads em execução para identificar vulnerabilidades nas imagens associadas e configurações que possam reduzir a segurança desses workloads. Depois da importação, a Snyk monitora continuamente os workloads, identificando e priorizando problemas de segurança à medida que novas imagens são implantadas e as configurações dos workloads mudam.
Uma vantagem é que você não precisa atualizar os arquivos YAML de implantação: tudo é feito automaticamente pelo Snyk Controller se você o configurar para importar workloads automaticamente (conforme explicado na documentação da Snyk). A Snyk é compatível com os seguintes workloads:
Deployments
ReplicaSets
DaemonSets
StatefulSets
Jobs
CronJobs
ReplicationControllers
Pods
Outros artigos da Snyk mostram como instalar vários clusters Kubernetes da Snyk em um único cluster e usar o Pulumi para automatizar a integração da Snyk com o Kubernetes.
Depois que o Argo CD implanta sua aplicação, a integração da Snyk com o Kubernetes importa a análise desse workload para a plataforma, sem nenhuma intervenção manual:


Resumo
Esta demonstração usa o hook de recurso do Argo CD para acionar uma análise do Snyk IaC sempre que uma alteração de configuração é detectada. Assim, é possível exigir segurança em um fluxo de trabalho GitOps, usando a Snyk para detectar vulnerabilidades e interromper o fluxo sempre que uma vulnerabilidade detectada ultrapassar o limite de severidade definido. Isso garante que código vulnerável nunca chegue ao ambiente de produção.
Saiba mais
Agora que você aprendeu a configurar um teste Snyk IaC com o Argo CD e monitorar workloads no Kubernetes, confira estes recursos para saber como proteger ainda mais o ciclo de vida do desenvolvimento de software:
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.
