CTO: Como iniciar em DevOps?

DevOps

O que é DevOps?

Como iniciar em DevOps?

Metodologia de desenvolvimento de software

Todo desenvolvimento de software tem uma metodologia, seja ela explícita, usando processos conhecidos, tais como Scrum, Kanban ou baseado no PMI; ou implícita, um processo que não está documentado ou mesmo formalizado e simplesmente acontece daquela maneira, muitas vezes (outras pode falhar), e que vai sendo passado de um para o outro.

A maioria das pessoas acredita que quando estamos falando de metodologia ou processo de desenvolvimento de software, estamos nos referindo a programadores, designers, talvez analistas...

Parece que só o ato de escrever código é que faz parte do processo, e por isso deixamos de considerar vários outros papéis ou mesmo processos dentro desse ciclo: análise de dados, segurança, infra-estrutura e por que não o dono do negócio, ou mesmo uma figura que o representa, o PO (Product/Project/Process Owner).

Segurança no desenvolvimento

Questões relativas a segurança, papéis, processos, técnicas; em grande parte das vezes são negligenciadas, muitas vezes durante o processo de desenvolvimento, e outras tantas em produção!

Simplesmente é esquecido a classificação da sensibilidade de dados, habilitar protocolos de comunicação seguros, testes de intrusão, e por aí vai... Por não ser exigido da equipe de desenvolvimento, poucos pensam nessas questões, menos ainda sabem fazer alguma validação, e menos ainda vão dar uma importância para isso do tipo: levanta a bandeira vermelha que esse projeto pode complicar a vida da empresa.

Até mesmo empresas certificadas em processos "maduros" de desenvolvimento ou normas, acabam por cair na armadilha de que o time de segurança cuida do cadastro de usuários e permissões, e quando temos especialistas na empresa, normalmente é gerada uma documentação de guia de desenvolvimento seguro que fica armazenda... em algum lugar obscuro da intranet, lembra dos diagramas de arquitetura que sempre ficavam desatualizados por que ninguém lia?

Segurança na operação

Desenvolvimento seguro de software já era importante quando a internet não estava onipresente, a conexão era esporádica, muitas vezes nem era necessária.

Você se lembra da última vez que instalou um software que tivesse a necessidade de conexão com a internet?

Não só o processo de desenvolvimento precisa ser seguro, ou seja, precisa seguir práticas para que o código tenha uma menor possibilidade de ser quebrado, mas, hoje mais do que nunca a operação precisa praticas constantemente controle de segurança, pois uma aplicação está disponível 24x7. Enquanto você dorme, alguém está tentando quebrar a sua segurança.

Grande parte das aplicações online, serviços, apps vão ficar ligados... direto! Se a segurança não for rápida em conter uma ameaça, pode ser tarde demais.

Segurança na Microsoft

A empresa tem uma timeline famosa quando o assunto é segurança:

Timeline Microsoft

Fonte da imagem: https://www.microsoft.com/en-us/securityengineering/sdl/about

O fato relevante na timeline acima aconteceu por volta de 2001, o Code Red afetou profundamente a imagem da Microsoft, que teve que rever os seus processos de desenvolvimento de software.

A resposta veio em um memorando de Bill Gates, que na época ainda estava envolvido com a engenharia da empresa, e ficou conhecido como Trustworthy computing.

Atualmente o processo já tem incorporado práticas para garantir também a operação, ficando assim aderente ao movimento de DevOps! Não é algo complicado, são apenas 8 práticas:

  1. Prover treinamento: a equipe tem que conhecer as ferramentas que usa no dia-a-dia e os processo de desenvolvimento adotado.
  2. Definição de requisitos: é necessário definir uma linha base mínima de requisitos de seguraça. Preste atenção em conformidades que devem ser atendidas.
  3. Definição de métricas e relatórios de conformidade: definina métricas específicas para direcionar a sua engenharia.
  4. Análise de composição de software: os componentes de terceiros ou os open-source, são garantidos?
  5. Modelos de ameaça: apesar de serem um desafio para automação, são importantes para o entendimento de possíveis ameças.
  6. Ferramentas e automação: ferramentas devem ser ligadas ao pipeline para garantir automáticamente pontos de segurança da aplicação.
  7. Mantenha credenciais de forma segura: se as senhas na empresa estão sendo enviadas por email, ou chat interno, mesmo as dos ambientes de desenvolvimento, já é o caso de alerta.
  8. Aprendizado contínuo e monitoramento: lembra que os sistemas estão ligados 24x7? É imprescindível monitorá-los de maneira adequada. E se pegou algum problema, meça o tempo de respota no atendimento da equipe, tempo de correção, e tire aprendizados para melhorar o processo.

Essas práticas requerem um investimento maior no esforço de mantê-las sempre vivas do que monetário! Lembre-se: segurança em primeiro lugar!

Compartilhe suas angústias sobre segurança nos comentários, quem sabe alguém não está passando pelo mesmo problema e podemos compartilhar soluções para ajudá-los!

A execução deste framework no ciclo de desenvolvimento de um software ou aplicação da sua empresa pressupõe o contato com especialistas em DevOps do seu time, ou parceiros estratégicos em Consultoria DevOps como a esx.