Pular para o conteúdo
⚙️ HOW-TO

Configurar MFA por role/tenant

Exija autenticação de múltiplos fatores para admins sem impactar usuários comuns.

Tipos de MFA disponíveis

  • TOTP (Time-based One-Time Password): app autenticador (Google Authenticator, Authy). Recomendado para admins. Não requer número de telefone.
  • SMS OTP: código enviado por SMS. Requer número de telefone verificado. Disponível nos planos Pro e Scale.
  • Email OTP: código enviado por email. Menor fricção, mas menos seguro que TOTP. Disponível em todos os planos.

Enforcement por role

Você pode exigir MFA apenas para usuários com determinadas roles — por exemplo, admin — sem obrigar usuários comuns. Isso é feito via a configuração security.mfa_required_roles do projeto.

Via Admin UI

  1. Acesse Auth → Security no projeto desejado.
  2. Em MFA Enforcement, ative a opção Exigir MFA por role.
  3. Adicione as roles que devem ter MFA obrigatório (ex: admin, finance).
  4. Clique em Salvar.

Via API

bash — configurar MFA obrigatório para role "admin"
curl -X PATCH https://superdb.com.br/platform/v1/projects/meu-projeto/security \
  -H "Authorization: Bearer $PLATFORM_ADMIN_JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "mfa_required_roles": ["admin"],
    "mfa_allowed_methods": ["totp", "email_otp"]
  }'

Fluxo do usuário com MFA obrigatório

  1. Usuário faz login com email/senha ou OAuth normalmente.
  2. O sistema verifica se a role do usuário exige MFA.
  3. Se sim e o usuário ainda não tem MFA configurado, é redirecionado para o fluxo de enroll.
  4. Após enroll, o usuário insere o código TOTP ou OTP.
  5. Sessão é criada com aal (Authentication Assurance Level) = aal2.

Troubleshooting

Usuário bloqueado sem dispositivo MFA

Se o usuário perdeu o dispositivo TOTP e não tem recovery codes, um platform_admin pode resetar o MFA manualmente:

bash — resetar MFA de um usuário
curl -X DELETE \
  https://superdb.com.br/platform/v1/projects/meu-projeto/users/{user_id}/mfa \
  -H "Authorization: Bearer $PLATFORM_ADMIN_JWT"

Após o reset, o usuário poderá fazer login normalmente e será solicitado a reconfigurer o MFA.

MFA não está sendo exigido mesmo configurado

Verifique se a role do usuário está exatamente como definido em mfa_required_roles. Roles são case-sensitive. Use o SQL Editor para verificar: SELECT role FROM proj_<slug>.user_roles WHERE user_id = '...';

Essa página ajudou?