Identix: plataforma de gestão de identidades e acessos

Plataforma multi-inquilino de gestão de identidades e acessos (OAuth 2.0 / OpenID Connect), com consola de administração, autenticação de dois fatores e personificação auditada. Concebida, construída e mantida por um único engenheiro — incluindo a implementação em Kubernetes e o CI/CD — em 40 dias úteis, com Specification-Driven Development e um assistente de IA.

SecurityIAMOAuth 2.0JavaSpring BootReactKubernetes

Resumo executivo

40dias

de desenvolvimento efetivo

1engenheiro

orquestrado por IA

~92Klinhas

de código, Java e TypeScript

~1.700testes

automatizados, incl. ~420 de integração

237operações

API pública, documentada em OpenAPI

3pipelines

CI/CD para Kubernetes

O projeto

O Identix é um fornecedor de identidade alojado pelo próprio cliente. A empresa instala-o na sua infraestrutura, e uma única instalação serve muitas aplicações independentes (inquilinos), cada uma com os seus utilizadores, funções, definições de início de sessão e chaves de assinatura. Palavras-passe, chaves e dados pessoais nunca saem da infraestrutura do operador.

A identidade é a parte mais sensível de qualquer sistema em matéria de segurança: um erro neste ponto expõe todas as aplicações que dela dependem. Por isso, o projeto tinha de conciliar uma funcionalidade ampla com uma arquitetura de segurança capaz de resistir a um exame rigoroso. Foi concebido e construído, e é mantido, por um único engenheiro.

O que foi construído

Servidor de autorização — OAuth 2.0 e OpenID Connect sobre Spring Authorization Server, com emissor e chaves de assinatura próprios para cada inquilino, rotação de tokens de atualização e revogação imediata de tokens.

  • Isolamento rigoroso entre inquilinos — cada pedido fica circunscrito ao seu inquilino, e testes de arquitetura automatizados garantem o cumprimento desta regra
  • Utilizadores, funções, grupos e organizações, com importação e exportação em massa e política de palavras-passe por inquilino
  • Autenticação de dois fatores (TOTP) com códigos de recuperação
  • Personificação auditada — um administrador pode agir em nome de um utilizador, e cada uma dessas sessões fica registada
  • Webhooks assinados com HMAC para eventos do ciclo de vida dos utilizadores
  • Registo de auditoria — só admite novas entradas, é separado por inquilino e oferece ao operador uma vista transversal a todos os inquilinos
  • Exportação e importação da configuração dos inquilinos entre instalações

Consola de administração — React e TypeScript, em inglês e russo, adaptada do computador ao telemóvel, com um portal para programadores integrado: guias de integração e documentação interativa da API.

API pública — 237 operações, integralmente descritas em OpenAPI.

Infraestrutura — três serviços em Kubernetes com charts Helm, PostgreSQL e Redis, e três pipelines de CI/CD no GitLab que compilam, testam e implementam cada serviço. Basta a falha de um único teste para bloquear a implementação.

Segurança desde a conceção

A arquitetura separa zonas de confiança. O servidor de autorização público não tem acesso à base de dados nem guarda chaves privadas: todos os dados e todas as assinaturas de tokens ficam num serviço interno, acessível apenas dentro do cluster. As chaves de assinatura são guardadas cifradas e só são decifradas em memória; assim, o comprometimento do nó público não expõe chaves nem dados.

A segurança fez parte do método desde o início, não foi acrescentada no fim:

  • Modelo de ameaças elaborado com STRIDE: ativos protegidos, perfis de atacante, fronteiras de confiança e uma contramedida para cada ameaça
  • Documentação de segurança para auditores, com os controlos mapeados para o OWASP ASVS de nível 2 e para as boas práticas do IETF relativas a OAuth 2.0 e JWT
  • Auditoria de segurança concluída com êxito; todas as constatações foram corrigidas

O método

Um engenheiro no papel de arquiteto e de orquestrador de IA, a trabalhar segundo o Specification-Driven Development. O trabalho começou com uma especificação escrita (requisitos, modelo de dados, invariantes de segurança), e cada decisão relevante ficou documentada num registo de decisão de arquitetura (ADR) antes da implementação.

Os agentes de IA geraram código, testes e documentação a partir dessa especificação; o engenheiro reviu cada alteração, respondeu pela arquitetura e pelo modelo de segurança e assumiu a responsabilidade por cada commit. A infraestrutura (manifestos de Kubernetes, charts Helm, pipelines de CI/CD) foi construída pela mesma pessoa e da mesma forma.

O desenvolvimento não foi contínuo: o projeto avançou por etapas, com pausas entre elas. Contando apenas os dias em que houve efetivamente trabalho, a plataforma exigiu 40 dias úteis.

Tecnologias utilizadas

Java 23Spring Boot 3.5Spring Authorization ServerPostgreSQLRedisFlywayReact 19TypeScriptAnt DesignViteJUnit 5TestcontainersArchUnitVitestPlaywrightDockerKubernetesHelmGitLab CI/CDKaniko

Comparação com o desenvolvimento tradicional

Equipa tradicional típica (estimativa) Este projeto (orientado por IA)
Prazo 6–9 meses 40 dias úteis
Equipa 4–6 engenheiros 1 engenheiro
Infraestrutura e CI/CD Engenheiro de DevOps à parte Incluídas, o mesmo engenheiro
Segurança Modelo de ameaças e auditoria muitas vezes adiados Modelo de ameaças STRIDE, auditoria concluída
Documentação Escrita a posteriori, quando existe Especificação e ADR desde o primeiro dia
Testes automatizados Variável ~1 700

Conclusões

A gestão de identidades e acessos não é um terreno óbvio para demonstrar entregas rápidas: alia um vasto conjunto de funcionalidades a requisitos de segurança intransigentes. O Identix mostra que o método também resulta aqui.

Um engenheiro. 40 dias úteis. Um servidor de autorização multi-inquilino, uma consola de administração, uma API pública com 237 operações, cerca de 1 700 testes automatizados, Kubernetes e CI/CD, e uma arquitetura de segurança sustentada por um modelo de ameaças e por uma auditoria concluída.

O fator decisivo não foi a velocidade de geração de código, mas a disciplina que a rodeia: primeiro a especificação, decisões documentadas, cada alteração revista. É isso que torna o sistema sustentável e que permitiria a outra equipa assumi-lo.

A sua especificação, um preço fixo, um sistema em funcionamento.

  1. 01 NDA assinado Antes de discutirmos qualquer pormenor. A sua ideia fica protegida.
  2. 02 Conversa inicial · 30 min Apenas com um engenheiro sénior — sem comerciais nem intermediários.
  3. 03 Orçamento por escrito · 24 h Âmbito fixo, preço fixo ou tempo e materiais — a escolha é sua.
  4. 04 Início no prazo de 48 horas Se houver sintonia, podemos começar de imediato.
Agendar conversa inicial → 30 minutos · gratuito · NDA primeiro