Performance, escalabilidade e usabilidade são alguns dos fatores que equipes de desenvolvimento normalmente consideram ao planejar a arquitetura de um software. No entanto, outro aspecto importante, mas frequentemente negligenciado, é a segurança na arquitetura de software. Neste artigo, exploraremos por que é essencial considerar a segurança ao pensarmos na arquitetura de software.
Arquitetura de Software
“Architecture is about the important stuff. Whatever that is” – Ralph Johnson [1]
Ralph Johnson, autor referência no campo da arquitetura de software, possui algumas definições da mesma. Em uma delas, ele afirma que “Arquitetura são as decisões que você gostaria de poder acertar cedo em um projeto”. Com essa definição, Johnson dá ênfase à importância de se tomar decisões corretas cedo no processo de concepção de software, e que isso pode impactar o sucesso do projeto.
Em outra definição dada por Ralph Johnson, o autor afirma que arquitetura de software é “As coisas importantes, seja lá o que elas forem”, realçando a necessidade de times de desenvolvimento identificarem os aspectos mais críticos de um sistema, e priorizá-los de acordo com sua importância.
Martin Fowler, outra voz importante no campo da arquitetura de software, reverbera a visão de Ralph Johnson e diz acreditar que o cerne de se pensar em arquitetura de software está em decidir o que é importante, e gastar energia para manter esses elementos protegidos e em boas condições. Fowler diz que esse foco no que é realmente importante é o que separa boas arquiteturas das inadequadas e medíocres.
Essa visão compartilhada de Martin Fowler e Ralph Johnson é crucial para podermos garantir a sustentabilidade de um projeto de software a longo prazo.
A Segurança na Arquitetura de Software
É pertinente que pensemos em segurança como um aspecto primordial durante a fase de design de um software. Como vimos anteriormente, tomar decisões importantes logo no início do processo de elaboração da arquitetura é um fator determinante para garantir que o projeto cresça de maneira sustentável.
Ao identificar e endereçar potenciais riscos de segurança logo nessa fase de elaboração, times de desenvolvimento conseguem evitar alguns ataques que poderiam causar dano ao negócio.
Essa perspectiva é muito forte dentro do campo de Application Security (AppSec, ou Segurança de Aplicações, em português). Atividades como análise de superfície de ataque e Modelagem de Ameaças demonstram isso na prática, por conseguir ajudar a melhorar a segurança da arquitetura através de uma abordagem estruturada de identificação e mitigação de riscos logo na fase de design da aplicação.
A OWASP, através do SAMM (Modelo de Maturidade de Segurança em Desenvolvimento de Software), reforça essa visão, compartilhando da perspectiva de Martin Fowler e Ralph Johnson e enfatizando a importância de incluir a segurança desde o início de um projeto de software, em vez de tratá-la como uma reflexão tardia.
Por fim, vale ressaltar que as equipes de desenvolvimento não devem pensar na segurança de sua arquitetura somente na etapa de design do software. Esse será um esforço contínuo, e a arquitetura precisará ser revista e atualizada regularmente para mantê-la segura e saudável.
Referências[1] FOWLER, Martin. Software Architecture Guide. Martinfowler.com, 1 Ago. 2019. Disponível aqui. Acesso em: 8 Feb. 2023.
