Como evitar erros comuns ao criar um painel de administração SaaS? Iremos delinear algumas armadilhas e potenciais soluções especificamente para todos os construtores de SaaS por aí!
O que acontece quando se está a construir uma aplicação SaaS que tem mais do que alguns clientes? A dada altura, o inevitável acontece! O seu pessoal de vendas e de sucesso do cliente chega à equipa de desenvolvimento com requisitos como:
- Mostrar-me quais as contas ativamente utilizadas
- Permitir-me introduzir uma conta de cliente para apoio técnico
- Ativar ou desativar um sinalizador de caraterística específico para alguma conta
- Alguns utilizadores não conseguem iniciar sessão, pode dizer-me qual o método que utilizam para se autenticarem?
- Tenho um revendedor e ele precisa de aceder às suas subcontas
- Preciso de prolongar uma avaliação gratuita de uma conta
- Uma conta precisa de uma configuração específica que apenas os agentes de sucesso do cliente devem poder configurar
- Mostre-me o MRR total para um grupo específico de clientes.
Uma variedade de ferramentas pode cobrir alguns destes casos de utilização. As ferramentas PLG, como o Segment e o journy.io, podem acompanhar a atividade. Talvez utilize um serviço de sinalização de funcionalidades como o LaunchDarkly. O Stripe ou o Chargebee podem gerir alguns dos aspectos relacionados com a faturação. Entretanto, os problemas relacionados com a autenticação podem ser visíveis na sua conta Auth0. No entanto, é pouco provável que esteja a utilizar todas estas plataformas. Mesmo que esteja, é provável que não consiga abranger alguns casos de utilização.
A solução é construir um painel de administração personalizado. Parece haver algumas estruturas e serviços comerciais disponíveis para começar rapidamente. Mas como é que se escolhe um em vez de construir o seu próprio painel de raiz?
Evitar painéis de administração integrados na sua aplicação
Como primeiro princípio, defendemos que se evite qualquer painel de administração injetado no código da aplicação principal, como faz o ActiveAdmin. Isso tem muitas desvantagens:
- As novas rotas da API de administração podem provavelmente ser detectadas no código cliente da sua aplicação e os atacantes podem sondar ou atacar esta vulnerabilidade
- É provável que acabe por ter vários tipos de utilizadores dentro de uma base de código, o que complica as análises de controlo de acesso
- Adicionar funcionalidades de proteção adicionais, como restringir o acesso a partir de um único endereço IP, será muito mais difícil
- Se for detectado um problema crítico no código do painel de administração, é mais difícil colocá-lo offline sem colocar a aplicação offline.
As aplicações que não seguem este princípio têm mais hipóteses de acabar em histórias do Slashdot. Aqui está uma: https://yro.slashdot.org/story/23/01/09/221207/researchers-track-gps-location-of-all-of-californias-new-digital-license-plates. Em particular, esta história demonstra que é possível atualizar uma conta de utilizador para uma conta de super administrador que pode ver dados de outros utilizadores.
Escolha um painel de administração com um registo de auditoria das acções dos utilizadores
Caso tenha de ser dito, isso significa que os administradores terão de se autenticar com contas de utilizador separadas. (Não é possível iniciar sessão com uma palavra-passe partilhada utilizando support@app.io !). Qual é a vantagem disto? Se alguma definição de conta sensível for actualizada, pode descobrir mais tarde quem fez a alteração.
Aplicar pelo menos 2FA (ou 3FA) para autenticar utilizadores administrativos
Escolha uma solução de painel de administração que lhe permita adicionar factores extra para além da 2FA, como restrições de IP ou acesso através de outras soluções de confiança zero.

Bónus: Utilize os cabeçalhos da Política de Segurança de Conteúdos (CSP) para bloquear javascript desconhecido
O bloqueio de javascript desconhecido é fundamental, especialmente em portais de administração internos. Abaixo, um exemplo de como a Apple estava vulnerável a uma vulnerabilidade de injeção de correio eletrónico, que poderia ter sido resolvida com simples cabeçalhos CSP.
Este tweet fez-me lembrar uma altura em que estava a piratear no programa de recompensa de bugs da Apple. Encontrei, entre todas as coisas, uma citação de Harry Potter codificada em base64 numa página interna de depuração e administração de contas iCloud. É a primeira vez que partilho isto, pois já passaram mais de 90 dias ... https://t.co/CBc8QC5y3i pic.twitter.com/BNauDq7w01
- Sam Curry (@samwcyo) December 24, 2023
Considerações finais sobre a criação de um painel de administração seguro
Sim, é possível criar um painel de administração seguro para a sua aplicação. Terá de escolher uma estrutura para o ajudar ou uma solução SaaS ou low-code existente para o ajudar a começar. Desde que o mantenha separado da sua aplicação principal e que comunique com a sua aplicação principal através de APIs privadas, não deverá ter problemas.
O Aikido é uma ferramenta de segurança de aplicações tudo-em-um. Quer ver se a sua aplicação é segura? Comece a analisar gratuitamente.