< Insights

Como garantir a segurança na aplicação de DevOps

  • DevOps

Embora o termo DevOps tenha inicialmente sido cunhado para designar a prática de reunir a área de desenvolvimento com a área de operações, uma breve busca na internet trará uma enorme variedade de definições e diagramas tentando explicar o que é realmente considerado DevOps hoje em dia.

A maioria das definições representam o DevOps com a já consagrada representação com o símbolo do infinito, dividido tipicamente nas fases de planejamento, codificação, construção, teste, lançamento, implementação, operação e monitoramento. Ora, se todas as fases são DevOps, fica muito claro que simplesmente dividir entre “Dev” e “Ops” não é suficiente para definir DevOps.

A definição que decidimos adotar é que DevOps trata de um movimento técnico e cultural, que visa reduzir a segregação das fases de desenvolvimento com a finalidade de entregar valor com o mínimo de tempo necessário, sem o sacrifício da qualidade.

Em modelos mais tradicionais, os departamentos de desenvolvimento e operações sempre foram separados. Com o tempo e a disseminação das metodologias ágeis, como Scrum, SAFe, LESS, XP e outros, o setor de desenvolvimento saiu, aos poucos, do modelo cascata com longos ciclos de entrega para um ciclo de adaptações e entrega constante. No entanto, o setor de operações sempre trabalhou com um sistema estável, com muito tempo de preparação para a      fazer implementação e lançamento.

Se por um lado um setor estava evoluindo com metodologias ágeis, o outro estava recebendo atualizações muito mais rápidas que o comum, gerando um fenômeno chamado de Wall of Confusion, ou, parede de confusão. Foi nesse cenário que os setores de desenvolvimento e operações se aproximaram gradualmente, até formar o que conhecemos hoje como DevOps.

No entanto, em uma situação com um número tão grande de atualizações, acontecendo em tão pouco tempo,      como podemos garantir a segurança na aplicação de DevOps? Afinal, a cultura de velocidade e escala também pode influenciar em uma consideração tardia da segurança e quaisquer vulnerabilidades ou configurações criadas incorretamente também podem ter implicações em grande escala.

Boas práticas para garantir a segurança na aplicação DevOps

A segurança faz parte de todo o ciclo de vida do DevOps, mas combiná-la com a agilidade de entrega, atualizações constantes de planejamento e outros princípios essenciais do DevOps requer a implementação de boas práticas:

Adapte política e governança

A criação de políticas e procedimentos de segurança cibernética transparentes, que sejam fáceis para os desenvolvedores e outros membros da equipe entenderem e concordarem, é o passo inicial para aliar proteção e agilidade.

Automatize processos e ferramentas de segurança

Sem ferramentas de segurança automatizadas para análise de código, gerenciamento de configuração, patch e gerenciamento de vulnerabilidade, entre outros, não é possível escalar a segurança     .

Além de fundamental nas rotinas de TI, a automação da segurança também minimiza o risco decorrente de erros humanos, bem como o tempo de inatividade ou vulnerabilidades causadas por isso. Vale lembrar que a empresa enfrenta menos resistência cultural para incorporar práticas de segurança ao DevOps, se os mesmos conceitos protetivos forem incentivados em todos os processos.

Utilize recursos seguramente testados e aprovados

As equipes de operação costumam aproveitar ferramentas novas, imaturas ou de código aberto para gerenciar centenas de grupos de segurança e milhares de instâncias de servidor. Os contêineres – tecnologias que possibilitam o empacotamento e isolamento de aplicações com todo o ambiente de execução delas – podem ser levantados ou baixados rapidamente e rodam na maioria dos sistemas operacionais, bem como em serviços de nuvem.

Frequentemente, as equipes de segurança não têm visibilidade dos próprios contêineres e isso é um fator de risco, visto que compartilham um sistema operacional com outros contêineres. O DevOps, geralmente, depende muito de implantações de nuvem e isso significa que a segurança da nuvem também é uma consideração importante.

À vista disso, entendemos que priorizar a descoberta e validação contínua, sob a gestão de segurança de acordo com sua política de dispositivos, ferramentas, contas, nuvem / instâncias virtuais, contêineres e credenciais é fundamental.

Gerencie a vulnerabilidade

Toda vulnerabilidade deve ser verificada, avaliada e corrigida ainda nos ambientes de desenvolvimento e integração, incluindo dentro dos contêineres que citamos anteriormente, antes da implantação na produção. Quando os produtos são lançados em um ambiente operacional, a segurança DevOps pode executar testes e ferramentas no software de produção e na infraestrutura para identificar e corrigir possíveis hacks e outros problemas.

Gerencie as configurações

A velocidade e a escala dos ambientes DevOps significam que, se algum erro de configuração não puder ser detectado e corrigido rapidamente, ele poderá ser replicado e copiado rapidamente. A recomendação para evitar que isso aconteça é fazer a varredura para identificar e corrigir configurações incorretas e erros em potencial.

Faça o gerenciamento seguro de credenciais de acesso privilegiado

As equipes de DevOps podem usar diversas ferramentas como Chef, Puppet, Ansible, Salt, etc. Essas ferramentas exigem gerenciamento de segredos, que podem ser credenciais de acesso privilegiada, chaves SSH, tokens de APIs, entre outros.

Esses segredos podem ser usados ​​por humanos ou máquinas (por exemplo, aplicativos, contêineres, microsserviços e instâncias de nuvem). Caso eles sejam gerenciados incorretamente, os mesmos podem facilitar o acesso privilegiado aos invasores através de backdoors e, com isso, a capacidade de adulterar a segurança e outros controles, interromper operações, roubar informações e, basicamente, deter por completo a infraestrutura de TI de uma organização.

É comum que credenciais privilegiadas sejam incorporadas em códigos, scripts, arquivos e contas de serviço. Esse é um equívoco comum e pode permitir que pessoas sem o direito de acessar ambientes privilegiados se apoderem dessas credenciais. Dessa forma, é importante que haja políticas rígidas, proibindo a presença de qualquer tipo de credencial, além disso é possível utilizar ferramentas que detectem tentativas de versionar as credencias e impeçam que elas sejam incorporadas acidentalmente.

Faça a gestão de acesso privilegiado (PAM)

 Outro erro comum é dar mais acesso do que o colaborador precisa aos recursos da organização. É comum que esses indivíduos compartilhem credenciais, o que dificulta ou até impossibilita a auditoria das atividades nesses ambientes. O acesso privilegiado excessivo representa um cenário de ameaças ampliado.

Para controlar o risco desse tipo de acesso, é essencial adotar o princípio do menor privilégio. Impor o acesso com privilégios mínimos reduz as oportunidades de invasores, internos ou externos, escalarem os direitos de usuários permitidos e explorarem vulnerabilidades do sistema ou da aplicação. As soluções de gerenciamento de acesso privilegiado empresarial (PAM) podem automatizar o controle, o monitoramento e a auditoria nesses casos, bem como o ciclo de vida completo de segredos / gerenciamento de credenciais.

Faça a segmentação de redes

A segmentação da rede reduz o acesso e o campo de visão dos invasores. A recomendação é o agrupamento de ativos, incluindo servidores de aplicativos e recursos, em unidades lógicas que não confiam umas nas outras.

No caso dos acessos que precisam cruzar as zonas de confiança, é interessante implantar um host administrativo seguro, com autenticação multifator, autorização de acesso adaptável e fazer o monitoramento de sessão para garantir a vigilância.

Adote um modelo DevSecOps

O desalinhamento entre o DevOps e as equipes de segurança pode dar abertura para a criação de códigos inseguros, vulnerabilidades, configurações incorretas, senhas codificadas não protegidas e fragilidade de segurança de aplicativos que causam disfunção operacional ou que sejam alvos fáceis para invasores.

Quando a segurança é incorporada em cada estrutura do ciclo de vida e cultura DevOps, desde o início no design, na construção, nos testes, bem como nas etapas de lançamento, suporte e manutenção, o DevOps passa a ser caracterizado como DevSecOps.

DevSecOps envolve a incorporação de todas as práticas que mencionamos até aqui e outras, pois este, assim como toda metodologia ágil, está em constante evolução. Adotar uma cultura DevSecOps significa que todos compartilham a responsabilidade pela segurança do projeto.

A introdução da segurança na aplicação DevOps, no início do ciclo de vida do produto, reforça o desenvolvimento de aplicativos e sistemas que não vão colocar a tecnologia e as informações da empresa em risco, reduzindo a possibilidade de violações de dados e garantindo o desenvolvimento e o provisionamento de soluções tecnológicas de alto poder mercadológico para atender às necessidades do seu negócio.

New call-to-action

Insights do nosso time

Obtenha insights do nosso time de especialistas sobre metodologias de desenvolvimento de software, linguagens, tecnologia e muito mais para apoiar o seu time na operação e estratégia de negócio.