Os pipelines de CI/CD são poderosos facilitadores de um desenvolvimento de software mais rápido e frequente, desde a conceção até à implementação. Mas, quando surgiram no panorama tecnológico, tinham muitas vezes um elo em falta: a segurança.
Isso é um problema, especialmente tendo em conta estatísticas como esta: aproximadamente uma em cada cinco organizações comunicou um incidente de segurança no seu pipeline de CI/CD no ano anterior, de acordo com um inquérito recente realizado pela Techstrong Research.
À medida que os pipelines de CI/CD se tornaram cada vez mais comuns, também alteraram o panorama de ameaças para as equipas de software. Como o Open Worldwide Application Security Project (OWASP) observa: “Dada a sua importância e popularidade, os pipelines de CI/CD são também um alvo apelativo para hackers maliciosos, e a sua segurança não pode ser ignorada.”
Neste artigo, analisaremos detalhadamente os riscos específicos – bem como os princípios e práticas eficazes para os mitigar e garantir a segurança dos pipelines de CI/CD.
O que é um pipeline de CI/CD?
Primeiro, vamos garantir que estamos em sintonia: o que é CI/CD? Abreviatura de Integração Contínua e Entrega Contínua, CI/CD refere-se a um conjunto de processos e ferramentas que as equipas modernas de software utilizam para conceber, criar e, em última análise, implementar software – com a automatização como um dos principais facilitadores de uma entrega e atualização de código mais rápidas e frequentes.
Eis como o definimos no nosso artigo anterior, “Visão geral dos pipelines de CI/CD: porque deve saber o que são”: “Um pipeline de CI/CD é um processo transparente, automatizado e fiável de desenvolvimento e entrega de software.”
O objetivo normalmente não é apenas disponibilizar software de forma mais rápida e frequente – é também melhorar a qualidade, a fiabilidade e – partindo do princípio de que lhe atribui a prioridade adequada – a segurança.
Riscos comuns de segurança dos pipelines de CI/CD: 5 áreas de enfoque
As origens de muitos riscos de segurança dos pipelines de CI/CD devem ser, pelo menos, parcialmente familiares a um profissional de tecnologia. Questões como o controlo de acesso e a concessão excessiva de privilégios, a monitorização e o registo insuficientes, bem como dependências e cadeias de fornecimento de software não controladas, contribuem para o aumento dos riscos quando não são devidamente geridas.
A OWASP publicou uma lista dos 10 principais riscos de segurança dos pipelines de CI/CD que vale a pena consultar como referência. Trata-se de uma extensão dos populares 10 principais riscos de segurança de aplicações Web da OWASP, que constituem uma referência de base amplamente aceite no setor para a segurança de aplicações Web.
Os riscos dos pipelines de CI/CD podem ser introduzidos e agravados pela automatização. Muitos dos riscos são introduzidos automaticamente – ou implementados automaticamente em produção – nos pipelines de CI/CD. De forma algo irónica, automatizar a segurança desses pipelines com ferramentas de Infraestrutura como Código (IaC) ou outra automatização pode igualmente introduzir ou agravar riscos se não prestar atenção, observa Derek Ashmore, Principal de Transformação de Aplicações na Asperitas.
Eis cinco áreas de risco fundamentais a considerar ao proteger os seus pipelines de CI/CD, de acordo com Ashmore:
- Controlo de acessos: «O controlo de acessos é frequentemente sobredimensionado por conveniência e não respeita os princípios do menor privilégio e do controlo duplo», afirma Ashmore. De um modo geral, o princípio do menor privilégio deve prevalecer neste caso – não dê a pessoas ou máquinas acesso a dados ou sistemas de que não necessitam efetivamente para desempenhar as suas funções.
- Dependências não validadas: Atualmente, o software – e, consequentemente, os pipelines de CI/CD – depende frequentemente de bibliotecas de terceiros e de outras dependências externas, e esses componentes apresentam por vezes vulnerabilidades. «Garanta sempre que as dependências externas são validadas e que dispõem de uma cadeia de custódia auditável», afirma Ashmore.
- Auditoria e registo: Certifique-se de que implementou uma auditoria e um registo abrangentes. A falta de visibilidade e de capacidade de auditoria pode conduzir a um aumento das exposições de segurança de que, de outro modo, não teria conhecimento.
- Elevação de privilégios: A automatização – do tipo inerente à segurança de CI/CD – pode, por vezes, ser desenvolvida em silos que originam lacunas não intencionais, nas quais os privilégios podem ser elevados através da execução de uma sequência de automatização imprevista. «Para mitigar este risco, garanta a implementação do menor privilégio e de casos de teste para os fluxos de trabalho de automatização e para tarefas ou pipelines individuais», afirma Ashmore.
- Testes automatizados inadequados: Os testes automatizados são fundamentais não só para uma segurança robusta dos pipelines de CI/CD – incluindo, por exemplo, análises automatizadas de vulnerabilidades em imagens de contentores –, mas também para a saúde geral do pipeline. «Os defeitos dos pipelines podem criar vulnerabilidades de segurança indesejadas e afetar negativamente as equipas de desenvolvimento de aplicações, impedindo-as de realizar o trabalho que lhes foi atribuído», afirma Ashmore.
10 Principais ferramentas de CI/CD!
Here's my pick of the 10 best software from the 10 tools reviewed.
Clicks on the links below may earn a commission, which supports our independent testing and review of software and services. Learn more about how we stay transparent.
15 boas práticas para reforçar a segurança de CI/CD
Depois de compreender solidamente os riscos, é altura de passar às soluções. A boa notícia é que existem muitas, em parte porque o setor em geral reconheceu a importância de integrar a segurança como um elemento de primeira classe no CI/CD.
Ashmore, da Asperitas, apresentou-nos 15 boas práticas e táticas comummente aceites para reforçar a segurança dos pipelines de CI/CD. Sem mais demoras:
- Utilize sistemas de controlo de versões seguros: Um dos principais benefícios dos sistemas de controlo de versões, como o Git, é captarem o histórico de alterações que poderá ser necessário para investigar violações de segurança ou outros problemas. «Idealmente, nada deveria ser alterado manualmente», afirma Ashmore. Consulte a nossa lista abrangente de ferramentas de controlo de código-fonte para conhecer mais opções: «As 20 melhores ferramentas de controlo de versões analisadas»
- Aplique o princípio do menor privilégio: Certifique-se de que as funções e permissões atribuídas tanto a utilizadores humanos como a elementos como recursos de infraestrutura são mínimas e seguem o princípio do menor privilégio. Se não precisarem disso, não o conceda.
- Utilize a gestão de segredos: «Evite codificar segredos — palavras-passe, tokens e chaves de API — diretamente nos modelos de IaC», afirma Ashmore. Em vez disso, utilize ferramentas de gestão de segredos, como o HashiCorp Vault, o AWS Secrets Manager ou o Azure Key Vault. Consulte a nossa análise aprofundada das ferramentas de gestão de segredos para conhecer ainda mais opções: «Os guardiões digitais: as 24 melhores ferramentas de gestão de segredos»
- Realize análises de segurança regulares e automatizadas: Utilize ferramentas que procurem automaticamente vulnerabilidades de segurança e faça-o nas fases mais iniciais possíveis do seu pipeline de CI/CD.
- Siga o princípio da imutabilidade: Minimizar as alterações manuais, especialmente nos ambientes de infraestrutura, é uma boa estratégia para reduzir os riscos. «A infraestrutura deve ser imutável; depois de aprovisionada, não deve ser alterada manualmente», afirma Ashmore. «Em vez disso, as alterações devem ser efetuadas através da atualização do código de IaC e de uma nova implementação. Remover a possibilidade de fazer alterações manuais é o caminho mais seguro.»
- Utilize o controlo de acesso baseado em funções (RBAC): «Controle o acesso às suas ferramentas de IaC e aos ambientes utilizando RBAC», afirma Ashmore. «Apenas os utilizadores autorizados devem poder implementar ou modificar a infraestrutura.» O Kubernetes é outro exemplo importante neste contexto, especialmente por ser uma parte fundamental de muitos pipelines de CI/CD. Não dependa apenas das configurações predefinidas.
- Aplique a idempotência: Agora estamos a entrar em terreno mais avançado: a idempotência é o conceito de poder executar determinadas operações — ou código, no caso da engenharia de software — várias vezes sem alterar o resultado. «Conceba a IaC [e os pipelines de CI/CD] de forma idempotente, o que significa que executar o código várias vezes não deve alterar o estado da infraestrutura, exceto quando tal for explicitamente necessário», afirma Ashmore.
- Utilize a parametrização: Ashmore recomenda a utilização de variáveis e parametrização nos modelos de IaC para evitar a codificação direta de valores específicos do ambiente, como regiões, tamanhos de instâncias e endereços IP.
- Implemente monitorização e registo: Estes elementos são necessários para detetar atividades não autorizadas ou invulgares e para investigar as causas-raiz quando ocorrem incidentes. «Serviços como o AWS CloudTrail ou o Azure Monitor podem ajudar», afirma Ashmore. Eis mais dois recursos: «As 25 melhores opções de software de monitorização de registos» e «Guia das 26 melhores ferramentas de monitorização de infraestruturas»
- Utilize ferramentas de testes de infraestrutura: «Incorpore ferramentas de testes de infraestrutura, como o Test Kitchen, o Terratest ou o InSpec, para validar a correção da sua IaC antes da implementação», afirma Ashmore.
- Implemente a deteção de desvios na infraestrutura: Utilize ferramentas para detetar desvios na infraestrutura — isto é, alterações que ocorrem fora do pipeline de CI/CD — e reverta as alterações não autorizadas quando forem detetadas, aconselha Ashmore.
- Siga as normas de conformidade e segurança: Garanta que o seu pipeline de CI/CD cumpre as normas de segurança do setor e os quadros de conformidade, como as referências CIS, o NIST ou o RGPD. A lista OWASP Top 10 que partilhámos acima é outro exemplo.
- Crie código de IaC reutilizável e modular: «Divida o código de IaC em componentes reutilizáveis e modulares, como módulos do Terraform ou stacks do AWS CloudFormation», afirma Ashmore.
- Documente o seu pipeline: Ashmore recomenda a criação e manutenção de documentação completa das suas políticas de IaC, modelos e procedimentos de segurança, bem como de outros componentes do seu pipeline de CI/CD.
- Atualize regularmente as ferramentas: «Mantenha as suas ferramentas de IaC (como o Terraform, o Ansible e o CloudFormation) e quaisquer dependências relacionadas atualizadas para as versões mais recentes», afirma Ashmore. O mesmo conselho aplica-se, de forma geral, a outras ferramentas e dependências do seu pipeline: as versões desatualizadas têm maior probabilidade de apresentar riscos conhecidos (e possivelmente desconhecidos).
Junte-se a nós para obter mais informações sobre CI/CD
Os pipelines de CI/CD tornaram-se elementos fundamentais do desenvolvimento de software moderno. Isso significa que a segurança de CI/CD é igualmente primordial. Antes de sair, subscreva a nossa newsletter para receber as informações mais recentes dos principais especialistas do setor de software.


