Pergunta de entrevista para Desenvolvedor Backend

Como você projeta autorização para um sistema em que as permissões variam por time, recurso e plano?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Separe autenticação de autorização, depois escolha um modelo: controle de acesso baseado em papéis é simples e funciona quando as permissões se agrupam em um punhado de papéis, enquanto regras baseadas em atributos servem para condições sobre o recurso, como dono, time ou plano. Aplique tudo num único lugar, idealmente uma camada de política que os handlers chamam, mantenha as checagens perto dos dados para que uma query não vaze linhas, e registre cada decisão para auditoria.

Por que os entrevistadores perguntam isso

O entrevistador quer saber se você espalharia ifs pelos controllers ou projetaria algo revisável. Ele quer ouvir sobre centralizar política, negar por padrão, e o bug clássico de autorização quebrada em nível de objeto, em que um endpoint checa que o usuário está logado mas não que o registro pertence a ele. Multi-tenancy deixa isso mais afiado, já que um filtro faltando vaza dados de outro cliente.

Como estruturar sua resposta

  • Separe autenticação de autorização explicitamente.
  • Escolha um modelo e justifique pelo agrupamento real das permissões.
  • Coloque a aplicação numa única camada, negando por padrão.
  • Cubra checagens em nível de objeto e auditabilidade.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Autenticação responde quem você é e acontece uma vez na borda; autorização responde o que você pode fazer e acontece a cada requisição contra um recurso específico. Como modelo, eu começo por papéis porque são fáceis de raciocinar e fáceis de explicar para o suporte, depois adiciono condições de atributo onde papéis sozinhos não dão conta, coisas como: este usuário está no plano que inclui exportações, ou este registro pertence ao time dele. O que importa mais do que o modelo é que exista exatamente um lugar que decide. Eu quero uma função de política por tipo de recurso que os handlers chamam, negando por padrão, para que adicionar um endpoint novo que esqueça a checagem seja uma omissão visível e não um buraco silencioso. Em qualquer coisa multi-tenant eu também empurro o filtro de tenant para a camada de dados, para que uma query fisicamente não consiga retornar linhas de outro tenant, porque contar com todo desenvolvedor lembrando de uma cláusula where falha mais cedo ou mais tarde. E toda decisão é registrada com sujeito, recurso e resultado, já que a primeira pergunta em qualquer incidente é quem podia ver o quê.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • O que é autorização quebrada em nível de objeto, e como você testa isso?
  • Como você trataria permissões que um administrador do cliente pode configurar?
  • Onde você faz cache de decisões de autorização sem que fiquem desatualizadas?

Mais perguntas para Desenvolvedor Backend

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot