Comece a desenvolver em Python com segurança usando Snyk
4 de agosto de 2021
0 minutos de leituraSe você desenvolve em Python e quer proteger suas aplicações com facilidade, está no lugar certo! Snyk ajuda você a proteger todo o código do seu app Python — seu próprio código, as bibliotecas de código aberto que você incorpora, seus contêineres e sua infraestrutura como código (IaC) — integrando a segurança perfeitamente aos fluxos de trabalho de desenvolvimento que você já usa.
A plataforma Snyk é composta por quatro produtos, cada um desenvolvido para ajudar você a proteger os diferentes componentes do seu app Python da maneira mais simples possível:
Snyk Code para encontrar e corrigir problemas de segurança e qualidade no seu próprio código Python.
Snyk Open Source para encontrar e corrigir vulnerabilidades de segurança e problemas de licença nos pacotes Python de código aberto usados para criar seu app.
Snyk Container para encontrar e corrigir vulnerabilidades de segurança nas imagens de contêiner Python.
Snyk Infrastructure as Code para encontrar e corrigir vulnerabilidades de segurança no código que configura a implantação dos seus apps Python.
Neste artigo, vamos mostrar como é fácil integrar os testes de segurança da Snyk ao seu jeito atual de trabalhar. O plano gratuito da Snyk é mais do que suficiente para testar as diferentes etapas descritas abaixo e também para qualquer projeto de pequeno porte.
Proteja seu app Python desde o início
Como pessoa desenvolvedora, quanto mais cedo você encontra os problemas, mais fácil é corrigi-los. Corrigir uma vulnerabilidade crítica depois de empacotar e lançar seu código leva muito mais tempo do que resolvê-la no início do processo.
Dica: você pode testar e usar Snyk gratuitamente em projetos de código aberto. Para usar Snyk Open Source ou Snyk Code com um plugin de IDE, não é necessário dar à Snyk acesso aos seus repositórios do GitHub. A maneira mais simples de testar Snyk é criar uma conta gratuita e analisar um repositório de código aberto. Não é preciso instalar nada, e a integração leva apenas alguns segundos.
Snyk oferece várias maneiras de proteger seu código desde o início do desenvolvimento — na IDE, usando o Advisor e com a Snyk CLI.
IDEs
Você também pode usar Snyk para proteger seu código diretamente na IDE. O plugin da Snyk para PyCharm, por exemplo, é compatível com Snyk Open Source e Snyk Code, e ajuda você a encontrar e corrigir facilmente vulnerabilidades conhecidas nas dependências de código aberto, além de problemas de segurança e bugs no seu próprio código.
É fácil configurar o plugin. Você pode baixá-lo e instalá-lo como qualquer outro plugin da JetBrains, diretamente na sua IDE.
No PyCharm, acesse Preferências e depois Plugins, pesquise por Snyk no marketplace da JetBrains e clique em OK para baixar e instalar o plugin.
Em seguida, conecte o plugin à sua conta Snyk. Para isso, clique no botão Connect your IDE to Snyk na visualização do plugin e siga as instruções para autenticar.
Pronto! Agora, basta executar um teste da Snyk. Clique no botão Analyze now! para iniciar os testes de segurança da Snyk. Em poucos segundos, o plugin apresenta uma lista de todos os tipos de problemas identificados, organizados em três categorias:
Segurança de código aberto: vulnerabilidades conhecidas nas dependências de código aberto diretas e indiretas (transitivas) incorporadas ao projeto
Segurança do código: falhas de segurança identificadas no seu próprio código
Qualidade do código: problemas de qualidade no seu próprio código

Para problemas identificados no seu próprio código, por exemplo, o plugin detalha o fluxo de dados e aponta os arquivos e as linhas relevantes que levam ao problema. Você pode clicar no nome do arquivo para abri-lo rapidamente na linha exata que introduz o problema. A análise do fluxo de dados ajuda a identificar problemas e a entender como eles se propagam pela aplicação, facilitando a compreensão e o acompanhamento de questões complexas.
Mas o plugin não para por aí. Além de mostrar o que está errado no código, ele também apresenta exemplos de como outras pessoas corrigiram o problema, para ajudar você a agir mais rápido.

Snyk Advisor
Snyk Advisor é uma ferramenta gratuita de pesquisa on-line que ajuda você a decidir quais pacotes de código aberto ou imagens base de contêiner usar. Com todos os projetos do PyPi e as imagens base Python do Docker Hub, Snyk Advisor permite que você, como pessoa desenvolvedora Python, pesquise diferentes pacotes e imagens para avaliar a integridade e o nível de segurança antes de incluí-los no seu projeto.

No projeto analisado na etapa anterior, pesquisar o pacote Jinja2 teria revelado que a versão 3 não só é a mais popular, como também não tem vulnerabilidades.
CLI
A Snyk CLI é uma ferramenta poderosa e gratuita que você pode usar para executar análises de segurança da Snyk no seu ambiente de desenvolvimento local, manualmente ou como parte do pipeline de CI/CD. Ela oferece uma longa lista de argumentos para extrair detalhes específicos dos resultados das análises da Snyk e personalizar o processo de teste.
Observação: a Snyk CLI é baseada em Node.js e npm, SCOOP ou Homebrew. É necessário instalar essas ferramentas antes de usar a Snyk CLI.
É simples configurar a Snyk CLI. Você pode usar npm ou Homebrew para instalá-la rapidamente. Depois, basta autenticar com sua conta Snyk:
Falta apenas mais uma etapa para testar seu projeto Python: execute o comando snyk test na pasta raiz do projeto.
Para os testes do Snyk Open Source, também é necessário instalar as dependências com:
Dica: você pode gerar o arquivo requirements.txt de um projeto ativando o ambiente virtual e usando o comando pip freeze > requirements.txt.
Snyk oferece mais do que uma lista de dependências vulneráveis e problemas de licença: também fornece informações adicionais para remediação, como as versões recomendadas para atualização de algumas dependências.
No caso do projeto usado neste artigo, Snyk sinaliza uma vulnerabilidade de gravidade média introduzida pela versão 2.11.1 do pacote Jinja e recomenda uma atualização de versão secundária para a 2.11.3, que corrige o problema.

Você também pode usar a Snyk CLI para receber notificações sobre vulnerabilidades recém-divulgadas ou novas correções para vulnerabilidades existentes. Para isso, use:
"Os resultados estão disponíveis no app da Snyk, no URL fornecido. Você receberá uma notificação se novas vulnerabilidades relevantes forem divulgadas.

Você pode usar a mesma CLI para analisar seus contêineres Python em busca de problemas de segurança e verificar sua infraestrutura como código (IaC). Em breve, a CLI também terá suporte ao Snyk Code. Fique de olho!
No mesmo projeto, experimente testar a imagem de contêiner da aplicação com (é necessário criar a imagem antes do teste):
A Snyk CLI analisará a imagem em busca de problemas e dará algumas dicas para atualizar a imagem base.

Por fim, você pode analisar seu código com Snyk Code. Use o comando:
A CLI analisará o projeto local e exibirá os resultados.

Confira a folha de referência da CLI para ver mais dicas e truques sobre a Snyk CLI.
Os plugins de IDE da Snyk, o Snyk Advisor e a Snyk CLI estão disponíveis gratuitamente, com análises ilimitadas para projetos Python de código aberto.
Integre a segurança aos seus repositórios Python
De acordo com a última pesquisa da comunidade Python, realizada em 2019, 90% das pessoas desenvolvedoras Python usam sistemas de gerenciamento de código-fonte (SCM), como o GitHub. Não seria surpresa se esse número fosse ainda maior caso fizéssemos a mesma pergunta às pessoas desenvolvedoras Python em 2021.
Como boa parte do seu tempo e dos seus processos de desenvolvimento envolve esses sistemas, poder incluir segurança facilmente sem desacelerar o desenvolvimento pode ser extremamente valioso. Como? Veja alguns exemplos:
Para garantir que você não introduza código vulnerável no seu repositório Python, e se pudesse analisar automaticamente cada novo pull request em busca de problemas?
Para garantir que sua aplicação Python esteja íntegra e atualizada, e se você pudesse criar pull requests automaticamente para atualizar pacotes Python desatualizados?
Para garantir que você corrija rapidamente as vulnerabilidades recém-divulgadas, e se pudesse receber uma notificação e um pull request com a correção recomendada para resolver o problema?
Para automatizar a segurança como parte do processo de CI/CD, e se você pudesse adicionar testes de segurança como uma GitHub Action ou às suas pipelines do Bitbucket?
Para garantir que seu código proprietário esteja protegido, e se você pudesse analisá-lo rapidamente em busca de problemas de segurança e visualizar, sobre o seu próprio código, como dados maliciosos percorrem o app?
Snyk oferece tudo isso. Em poucas etapas, você pode importar seu projeto Python para Snyk e garantir que ele esteja devidamente protegido.
No Snyk, acesse Integrações, depois GitHub, e selecione seu projeto Python para importá-lo para Snyk. Durante a importação do novo projeto, Snyk analisará automaticamente TODOS os componentes que fazem parte dele e os exibirá como subprojetos individuais na página Projects:

Por exemplo, ao abrir o deployment.yaml file, você encontra informações sobre os problemas identificados pelo Snyk Infrastructure as Code nas configurações de implantação do Kubernetes da aplicação.

Depois de importado, seu projeto Python passa a ser monitorado continuamente pela Snyk. Se surgirem novas vulnerabilidades nas dependências de código aberto ou novas correções para vulnerabilidades existentes, um pull request será criado automaticamente.

Snyk também abre pull requests automaticamente em várias outras situações. Você pode controlar o ritmo e a frequência com que eles são criados para não receber pull requests em excesso. Saiba mais sobre a remediação da Snyk na documentação da Snyk.
As integrações de SCM da Snyk estão disponíveis gratuitamente, com análises ilimitadas para projetos Python de código aberto. Os produtos da Snyk compatíveis variam de acordo com o SCM.
Automatize a segurança de Python como parte do CI/CD
Integrar testes de segurança de Python ao seu processo de CI é uma ótima maneira de detectar vulnerabilidades antes que seu código chegue à produção. Essa camada adicional de segurança ajuda a encontrar problemas mesmo que você não tenha feito testes manuais no ambiente local.
Snyk se integra a todas as principais ferramentas de CI/CD, como Jenkins, CircleCI e TeamCity. Além disso, como mencionamos acima, você pode usar a Snyk CLI como uma etapa em qualquer pipeline automatizada. Vamos ver um exemplo: adicionar testes de segurança da Snyk a um fluxo de trabalho do GitHub Actions.
Snyk oferece uma Action para todas as versões mais recentes do Python, incluindo Python 3.6, 3.7 e 3.8. Neste exemplo, vamos usar a action para automatizar os testes de segurança do mesmo projeto Python analisado ao longo deste artigo.
Primeiro, defina seu token de API da Snyk como um segredo nas configurações do repositório (Settings Secrets). Em seguida, abra a aba Actions e crie um novo fluxo de trabalho personalizado com a Snyk Action para Python:
Como esperado, a mesma vulnerabilidade identificada no teste da CLI acima fez a compilação falhar:

Como a Action é baseada na Snyk CLI, você pode usar todos os argumentos compatíveis para ajustar o comportamento dos testes de segurança da Snyk no seu processo de CI.
Desenvolva com rapidez. Mantenha a segurança!
Python é uma ótima opção para quem desenvolve e quer avançar rápido. É uma linguagem extremamente versátil, fácil de escrever e conta com uma grande variedade de bibliotecas de código aberto para adicionar funcionalidades às suas aplicações rapidamente. Na hora de lançar seu app, Docker, Red Hat e outras empresas oferecem diversas imagens base de contêiner Python fáceis de usar. Você pode até escrever em Python as configurações do Kubernetes e da infraestrutura.
Agilidade e segurança não são incompatíveis. Esperamos que este artigo tenha mostrado como é fácil incorporar a segurança ao seu fluxo de desenvolvimento Python atual — seja no ambiente de desenvolvimento local, como parte integrante do fluxo de trabalho baseado em Git ou junto com o processo de build automatizado — e, o mais importante, sem precisar desacelerar!
Comece a participar de desafios de Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.



