SecDevOps: boas práticas de segurança desde a fase de desenvolvimento
Durante muito tempo, as áreas responsáveis pela gestão da segurança da informação realizaram auditorias de vários tipos sobre as aplicações e serviços implantados na organização com o objetivo de identificar vulnerabilidades que poderiam permitir a concretização de certas ameaças e, consequentemente, causar um incidente de segurança, bem como de avaliar o potencial impacto de tais incidentes sobre os ativos da organização e sobre os processos de negócio que suportam esses ativos.
Estes processos de análise de risco têm-se focado tradicionalmente em aplicações e serviços já em ambientes de produção ou, idealmente, em ambientes de integração pré-produção.
Felizmente, a lógica da eficiência levou-nos a basear a gestão dos riscos associados às aplicações e serviços na análise desses mesmos riscos, desde as fases de desenho e desenvolvimento. Isto tem sido ajudado pelas diferentes normas e regulamentos legais que, há já algum tempo, têm vindo a recomendar (se não a impor) a necessidade de gerir a segurança e a privacidade desde estas fases iniciais.
Contudo, estaríamos a cometer um erro se desenhássemos a estratégia de segurança no desenvolvimento de aplicações, delegando esta função às próprias equipas de desenvolvimento e programadores.
Noutras áreas assumimos , por exemplo, que o colaborador é responsável por seguir os regulamentos internos e as boas práticas na gestão da informação que trata, sem que entenda que é da sua responsabilidade decidir quais os controlos a aplicar ou quais os riscos a gerir e a sua prioridade; definimos com as áreas tecnológicas responsáveis pela implementação e operação de sistemas, os regulamentos e controlos que devem implementar nas suas atividades e nos sistemas da sua área funcional, sem que entendam que é da sua responsabilidade decidir o âmbito destes controlos, o tipo de ameaças a gerir, ou a forma de escalar o risco tecnológico para a gestão do risco corporativo.
Portanto, definir, gerir, monitorizar e avaliar a componente "Sec" quando é acrescentada ao "DevOps", nada é se não mais uma peça da estratégia de gestão da segurança corporativa, alinhada com os objetivos de negócio da organização, integrada na gestão, avaliação e tratamento dos riscos, e, em suma, contribuindo, a partir do seu âmbito, para manter a integridade, disponibilidade, privacidade, controlo e autenticidade da informação da entidade.
Como implementar o SecDevOps?
Uma vez definida a Sec+DevOps como mais uma área de gestão da segurança da informação, devemos também abordá-la na mesma linha de ação que utilizamos noutras áreas, ou seja: pessoas, processos, tecnologia e governação.
Na linha de ação relacionada com as pessoas, é bom recordar que são o maior ativo para a eficiência (ou ineficiência) do resto das linhas de ação. Em muitos casos, as equipas de desenvolvimento estão somente direcionadas para a redução do tempo necessário para a construção de novas aplicações (ou a adaptação das existentes) para apoiar mudanças nos processos de negócio. Devemos, neste âmbito, criar metas comuns com os responsáveis pela gestão da segurança e enriquecer a sua cultura de inovação, sempre presente nas áreas de desenvolvimento, com a proposta de um quadro de desenvolvimento seguro que, longe de a tornar mais difícil, a aperfeiçoe.
No âmbito dos processos, devemos ter em mente que as atuais estratégias de desenvolvimento alcançaram um elevado nível de eficiência ao combinar os objetivos de velocidade e qualidade, pelo que devemos tentar simplificar ao máximo o modelo de controlos de segurança sem sacrificar a gestão de riscos corporativos. A melhor abordagem para este objetivo será, sem dúvida, a automatização da aplicação da maioria dos controlos e a sua implementação nos processos de desenvolvimento já estabelecidos. Aproveitar os processos existentes e incorporar o pensamento, desde o design, na modelação de ameaças. A abordagem Shift left, utilizada por muitas equipas de desenvolvimento, pode ser aproveitada para mover os requisitos de segurança para a fase em que ainda não foi escrita uma linha de código.
Na tecnologia, há uma série de ferramentas, muitas baseadas em cloud, que as equipas de desenvolvimento podem utilizar para maximizar a segurança do código sem penalizar os ciclos de entrega de versões. Os fluxos de trabalho tais como security as a code e compliance as a Code permitem incluir os controlos adequados a partir do design da aplicação e ao longo de todo o desenvolvimento do código.
A abordagem tecnológica abrange os modelos de análise necessários para a prevenção, mitigação e resolução de vulnerabilidades que possam permanecer residentes no código:
- Análise SAST (Static Application Security Testing) ou análise estática, destinada a analisar o código fonte para identificar vulnerabilidades de segurança que possam permitir ataques bem sucedidos na camada da aplicação, fornecendo aos programadores notificações no momento do desenvolvimento que podem aplicar antes de o código passar para a fase seguinte do seu ciclo de vida.
- Análise DAST (Dynamic Application Security Testing), ou análise dinâmica, destinada à análise da segurança das aplicações em tempo de execução em ambientes de desenvolvimento, pré-produção ou integração. DAST é aplicada sistematicamente, integrando-se com os processos de validação funcional já estabelecidos no ciclo de vida do desenvolvimento.
- Análise IAST (Interactive Application Security Testing) ou análise interativa, que permite a monitorização das aplicações em tempo de execução, recolhendo informação sobre o seu modelo de trabalho e comportamento e realizando testes automatizados utilizando agentes ou sensores durante a fase de avaliação da qualidade das aplicações.
Quando este tipo de ferramentas é implementado nos processos adequados, a ação das equipas de segurança e desenvolvimento é unificada, os custos associados aos problemas de segurança são reduzidos ou eliminados, e a qualidade dos desenvolvimentos melhora em consistência.
Finalmente, na área da governação da segurança corporativa, não há dúvida de que a incorporação da segurança nos ciclos de desenvolvimento, no desenho das aplicações, requer um conjunto de ferramentas e controlos consistentes com os processos já definidos, e facilitará grandemente a tarefa das equipas responsáveis pela conformidade normativa e legal. Como qualquer outra área da governação da segurança, a estratégia de segurança em desenvolvimento deve estar alinhada com o resto da estratégia de segurança, e esta, com os objetivos da organização e os seus focos de negócio.
A transformação digital ou, como referimos na Izertis, a metamorfose que cada organização está a enfrentar, ou terá de enfrentar em algum momento para assegurar a sua sobrevivência, transforma a forma como as organizações irão trabalhar no futuro. A governação corporativa, especialmente nas áreas da segurança e da tecnologia da informação, determinará o sucesso de uma empresa.
A estratégia adequada, o aproveitar o conhecimento das empresas especializadas e ter, com a sua colaboração, um roteiro crítico, com marcos e métricas definidas para avaliar o seu desenvolvimento, serão os fatores-chave de sucesso para a implementação da segurança e privacidade a partir do desenho: Sec + DevOps.