Protegendo o ambiente da plataforma DevOps para Confiança Zero

Este artigo ajudará você como membro da equipe de DevOps a implementar o princípio da Confiança Zero de privilégios mínimos e a proteger o ambiente da plataforma de DevOps. Ele apresenta o conteúdo do nosso eBook Proteger ambientes de DevOps corporativos e destaca as melhores práticas para gerenciamento de segredos e certificados.

As empresas modernas dependem de plataformas de DevOps para implantação, incluindo pipelines e ambientes de produção que os desenvolvedores precisam para serem produtivos. No passado, os métodos de segurança de aplicativos não consideravam o aumento da superfície de ataque à qual os pipelines e os ambientes de produção atuais estão expostos. À medida que os hackers mudam para a esquerda e visam ferramentas upstream, você precisa de abordagens inovadoras para proteger seus ambientes de plataforma DevOps.

No diagrama abaixo, observe que o ambiente da plataforma DevOps se conecta ao ambiente da aplicação e extensões de pipeline de integração contínua e entrega contínua (CI/CD).

O diagrama ilustra os ambientes da plataforma DevOps e as ameaças à segurança, conforme descrito no eBook acima vinculado e resumido em artigos relacionados vinculados aqui.

As extensões de pipeline CICD apresentam aos hackers oportunidades de se envolver em escalonamentos de privilégios do ambiente de aplicativos. Extensões e integrações aumentam as vulnerabilidades da superfície de ataque. É fundamental se defender contra ameaças de invasão de malware.

Como e por que os invasores atacam os pipelines

Os pipelines e os ambientes de produção podem ser independentes das práticas e processos de segurança de aplicativos padrão. Eles geralmente exigem credenciais de acesso de alto nível que podem fornecer acesso profundo e significativo aos invasores.

Enquanto os invasores encontram novas maneiras de comprometer os sistemas, os vetores de ataque mais comuns para pipelines incluem:

  • Extração de variáveis de tempo de execução e injeção de argumentos.
  • Scripts que recuperam princípios de serviço ou credenciais de pipelines.
  • Tokens de acesso pessoal mal configurados que permitem que qualquer pessoa com a chave acesse o ambiente da plataforma DevOps.
  • Vulnerabilidades e configurações incorretas em ferramentas integradas de terceiros que exigem acesso ao código (geralmente somente leitura, mas às vezes acesso de gravação). As ferramentas integradas podem incluir estruturas de teste, teste de segurança de aplicativo estático (SAST) e teste de segurança de aplicativo dinâmico (DAST).

Práticas recomendadas para gerenciamento de segredos e certificados

Evitar uma violação catastrófica pode ser tão simples quanto um gerenciamento de segredo eficaz. O diagrama abaixo ilustra um exemplo de gerenciamento efetivo de segredo, senha, token de acesso e certificado.

O diagrama ilustra o gerenciamento de segredo e certificado, conforme descrito abaixo.

Como mostrado no diagrama acima, o desenvolvedor inicia uma compilação para uma solicitação do cliente. Em seguida, o GitHub inicia um executor com a ID de função e a ID secreta de uma Função de Aplicativo do Vault. A Entidade Confiável solicita periodicamente uma nova ID secreta do Cofre e obtém a ID secreta do GitHub do GitHub. O Vault utiliza a ID da função Segredos do GitHub e a ID secreta para entrar e obter ativos de assinatura de código. O Runner personaliza e assina o código do aplicativo móvel.

As práticas recomendadas a seguir ajudarão você a criar uma configuração segura que minimize a exposição a segredos e parâmetros.

  • Forneça armazenamento seguro para segredos e certificados em cada estágio do ciclo de vida do aplicativo. Sempre desenvolva como se fosse um projeto open-source. Certifique-se de que as equipes estejam armazenando segredos em cofres de chaves, em vez de no código ou em ambientes de equipe. Use o serviço de nuvem Azure Key Vault para armazenar e acessar segredos com segurança.
  • Configure o Azure para confiar no OIDC do GitHub como uma identidade federada. O OpenID Connect (OIDC) permite que seus fluxos de trabalho do GitHub Actions acessem recursos no Azure sem precisar armazenar as credenciais do Azure como segredos do GitHub de longa duração.

Mais práticas recomendadas para segurança de ambiente DevOps

Para ajudar a se defender contra incidentes de segurança, abaixo estão mais práticas recomendadas para fortalecer seus ambientes de plataforma DevOps. Encontre uma discussão detalhada dessas recomendações em nosso eBook Proteger ambientes de DevOps corporativos.

  • Equipe cada ambiente de plataforma de DevOps com trilhas de auditoria.Analise os registros de auditoria para rastrear quem obteve acesso, quais alterações ocorreram e a data/hora de qualquer sistema ativo. Inclua especificamente plataformas de DevOps com pipelines de CI/CD que fluem para a produção. As trilhas de auditoria para ferramentas de DevOps fornecem maneiras robustas de remediar ameaças mais rapidamente, localizar e alertar sobre atividades suspeitas para possíveis violações ou vulnerabilidades e encontrar dados em potencial ou uso indevido de privilégios. Garanta que o controle granular e as trilhas de auditoria estejam disponíveis em cada ambiente.
  • Proteger a cadeia de fornecimento de software. Com cada biblioteca que você traz para sua base de código, você expande a cadeia de suprimentos de software e herda dependências de cada projeto ou ferramenta de código aberto. Com cuidado, remova bibliotecas desnecessárias e componentes de código aberto para reduzir a superfície de ataque de sua cadeia de suprimentos de software.
  • Automatize as varreduras de modelos de Infraestrutura como Código (IaC). Com ambientes de IaC, é fácil verificar se há configurações incorretas, auditorias de conformidade e problemas de políticas. A implementação de verificações de conformidade e controles de acesso aumenta a postura de segurança de toda a sua infraestrutura. Verifique a segurança de integrações de ferramentas de terceiros que atendam aos requisitos do sistema de automação.
  • Automatizar fluxos de trabalho de aprovação. Para que qualquer fluxo de trabalho de aprovação envie código para produção, certas verificações automáticas ou manuais devem confirmar a segurança, o valor comercial, o status e a qualidade de cada solicitação. Essas verificações funcionam como uma porta entre o desenvolvimento e a produção para evitar ataques de negação de serviço e hackers injetando código em ambientes de produção sem sinalizar ou disparar um alerta.
  • Permitir apenas integrações de ferramentas de DevOps verificadas. Como em ambientes de desenvolvedor, as ferramentas de DevOps vêm com extensões e integrações para tornar a equipe de DevOps eficiente e segura. Confirme se as integrações verificadas exigem o menor privilégio possível para executar seu trabalho. Implemente o acesso com privilégios mínimos quando possível e garanta o nível certo de permissões de leitura/gravação. Saiba como desativar ou limitar o GitHub Actions para sua organização.

Próximas etapas