
Conceber um Sistema Seguro: Princípios e Soluções de Identidade
Conceber um sistema seguro não se resume a firewalls — trata-se de arquitetura.
Esta análise detalha os 12 princípios de segurança inegociáveis (da Encriptação e Segurança de API à Recuperação de Desastres) e explica as diferenças práticas entre as principais ferramentas de gestão de identidade.
17
Fev

Conceber sistemas seguros é inegociável para proteger informação sensível, manter a confiança dos utilizadores e garantir a estabilidade da sua infraestrutura. A segurança deve ser implementada por defeito, não como uma reflexão posterior.
1. Princípios-Chave da Conceção de Sistemas Seguros
Uma estratégia de segurança robusta abrange toda a arquitetura e a cultura organizacional. Eis os principais pontos de conceção que programadores, arquitetos e responsáveis de produto devem priorizar:
Autenticação & Autorização: Verificar a identidade do utilizador (Autenticação) e confirmar a que recursos está autorizado a aceder (Autorização).
Encriptação: Proteger os dados tanto em trânsito (por exemplo, com TLS/SSL) como em repouso (por exemplo, encriptando campos da base de dados).
Gestão de Vulnerabilidades: Identificar proativamente e corrigir fragilidades de segurança no código e nas dependências.
Auditoria & Conformidade: Registar todas as ações relevantes e garantir que o sistema cumpre normas regulamentares (por exemplo, RGPD, HIPAA).
Segurança de Rede: Implementar firewalls, deteção de intrusões e segmentação da rede para isolar serviços.
Segurança de Terminais: Proteger endpoints (dispositivos dos utilizadores) contra malware e acessos não autorizados.
Respostas de Emergência: Definir processos claros para lidar com e mitigar rapidamente incidentes de segurança.
Segurança de Contentores: Analisar imagens de contentores para detetar vulnerabilidades e aplicar o princípio do menor privilégio na execução dos contentores.
Segurança de API: Implementar limitação de taxa, validação de entradas e verificações de autorização adequadas para todos os endpoints de API.
Gestão de Fornecedores Terceiros: Avaliar serviços externos para garantir que cumprem os seus padrões de segurança.
Recuperação de Desastre (DR): Planear a cópia de segurança dos dados e o restauro do sistema em caso de falha catastrófica.

2. Soluções de Gestão de Identidade e Acesso
Quando um utilizador inicia sessão num website, a sua identidade e direitos de acesso devem ser geridos de forma consistente. Eis como várias soluções padrão o fazem:
Sessões e Cookies
Uma Sessão é uma abordagem no lado do servidor para gerir identidade.
Como Funciona: O servidor armazena os dados de identidade e o estado do utilizador. Emite ao browser um ID de Sessão único, normalmente contido num Cookie HTTP. O browser envia este pequeno cookie em cada pedido subsequente, permitindo ao servidor consultar o estado armazenado.
Compromisso: É Stateful (o servidor tem de manter o estado), o que simplifica a lógica no lado do servidor, mas torna o escalonamento horizontal mais difícil. Os Cookies têm limitações quando usados em diferentes dispositivos e domínios.
Tokens e JWT (JSON Web Tokens)
Um Token é um método generalizado em que a informação de identidade é codificada e enviada diretamente para o browser ou cliente. O servidor não precisa de armazenar a sessão.
Como Funciona:
Token: O cliente recebe uma cadeia opaca que representa a sua identidade. O cliente envia este token para autenticação em pedidos futuros. Estes tokens precisam de ser protegidos (encriptados/desencriptados).
JWT (JSON Web Token): Isto normaliza o formato do token. O token é um pequeno objeto JSON assinado digitalmente pelo servidor. Contém três partes: Header, Payload (claims como ID do utilizador, expiração) e Signature.
Compromisso: Os tokens são Stateless (o servidor apenas verifica a assinatura do token), o que é excelente para escalonamento horizontal e microserviços. No entanto, os JWT não podem ser revogados instantaneamente e devem ser protegidos, pois contêm dados do utilizador.
SSO (Single Sign-On)
SSO é uma solução empresarial focada na experiência do utilizador e na eficiência.
Como Funciona: Utiliza um Fornecedor de Identidade (IdP) central e de confiança. Depois de um utilizador iniciar sessão no IdP, esse único login concede acesso a vários serviços ou aplicações independentes, sem voltar a introduzir credenciais.
Caso de Utilização: Ideal para aplicações internas empresariais e grandes plataformas SaaS que detêm vários serviços relacionados. Protocolos comuns incluem SAML e OpenID Connect (que assenta no OAuth 2.0).
OAuth 2.0
OAuth 2.0 é um framework de Autorização, não um protocolo de autenticação (embora seja frequentemente usado como tal através do OpenID Connect).
Como Funciona: Permite que uma aplicação de terceiros (o Cliente) obtenha acesso limitado aos recursos de um utilizador (por exemplo, as suas fotos no Google) sem nunca fornecer ao cliente a palavra-passe do utilizador. O utilizador concede permissão através de um fluxo seguro de redirecionamento, e o Cliente recebe um Access Token com âmbitos específicos.
Caso de Utilização: "Iniciar sessão com Google" ou permitir que um serviço de impressão aceda aos seus ficheiros do Dropbox. Delega permissões de forma segura.
Login por Código QR
Este é um método inovador de autenticação sem palavra-passe.
Como Funciona: A aplicação apresenta um Código QR que codifica um token único, aleatório e sensível ao tempo. Um dispositivo móvel, que já está autenticado, lê o código, enviando o token de volta ao servidor. O servidor faz a correspondência do token com a sessão de browser em espera e inicia a sessão do utilizador.
Caso de Utilização: Login móvel simples e seguro que evita a necessidade de escrever palavras-passe num computador.

