🔒 Dashboard Security Guide¶
Configuração de Acesso Seguro¶
O dashboard possui duas camadas de segurança que funcionam de forma independente:
1️⃣ IP Whitelist (Recomendado para uso fixo)¶
2️⃣ API Key (Fallback para acesso móvel)¶
🚀 Setup Rápido¶
Opção A: Apenas API Key (Mais Simples)¶
Já configurado! Sua API key está no .env.local:
Como usar:
- Em localhost (desenvolvimento):
- Funciona automaticamente sem key
-
Acesse:
http://localhost:3000/dashboard -
Em produção (Vercel):
- Adicione
?apiKey=SUA_KEYna URL -
Exemplo:
https://codeslick.dev/dashboard?apiKey=c9fa6315e5a9569a49652f8a882831529f2e6a5ca127d1b6fb7177249322deb2 -
Usando header (mais seguro):
Opção B: IP Whitelist + API Key (Mais Seguro)¶
1. Descubra seu IP público:
Ou visite: https://www.whatismyip.com/
2. Adicione ao .env.local:
# Se tiver apenas 1 IP
DASHBOARD_ALLOWED_IPS=203.0.113.45
# Se tiver múltiplos IPs (casa + trabalho)
DASHBOARD_ALLOWED_IPS=203.0.113.45,198.51.100.23
3. Teste localmente:
4. Deploy no Vercel:
Adicione as variáveis de ambiente no Vercel:
1. Vá para: https://vercel.com/seu-projeto/settings/environment-variables
2. Adicione:
- DASHBOARD_API_KEY = c9fa6315e5a9569a49652f8a882831529f2e6a5ca127d1b6fb7177249322deb2
- DASHBOARD_ALLOWED_IPS = seu.ip.aqui
🔐 Segurança em Produção¶
✅ Boas Práticas¶
- Nunca comite
.env.localno Git (já está no.gitignore) - Guarde a API key num gestor de passwords (1Password, Bitwarden)
- Use IP Whitelist sempre que possível
- Rotacione a key periodicamente (a cada 6 meses)
🔄 Como Gerar Nova API Key¶
Copie o output e atualize:
- .env.local (local)
- Vercel Environment Variables (produção)
🌐 Cenários de Uso¶
Cenário 1: Apenas você, IP fixo (casa/escritório)¶
✅ Mais seguro ✅ Sem necessidade de lembrar keys ❌ Não funciona em outras redesCenário 2: Acesso de qualquer lugar¶
DASHBOARD_ALLOWED_IPS= # Vazio
DASHBOARD_API_KEY=c9fa6315e5a9569a49652f8a882831529f2e6a5ca127d1b6fb7177249322deb2
Cenário 3: Máxima Segurança (Recomendado)¶
DASHBOARD_ALLOWED_IPS=ip.casa,ip.trabalho
DASHBOARD_API_KEY=c9fa6315e5a9569a49652f8a882831529f2e6a5ca127d1b6fb7177249322deb2
🛠️ Troubleshooting¶
Erro: "Unauthorized" no Dashboard¶
1. Verifique se o .env.local tem a key:
2. Verifique seu IP atual:
3. Teste com a API key na URL:
http://localhost:3000/dashboard?apiKey=c9fa6315e5a9569a49652f8a882831529f2e6a5ca127d1b6fb7177249322deb2
4. Verifique os logs do servidor: O erro mostrará seu IP atual e o motivo da rejeição.
Erro: "Dashboard security not configured"¶
Isso significa que:
- DASHBOARD_API_KEY está vazio
- DASHBOARD_ALLOWED_IPS está vazio
- E você está em produção (não em development)
Solução: Adicione pelo menos uma das variáveis.
📊 Como Funciona (Técnico)¶
Fluxo de Autenticação¶
Request → Dashboard Auth Middleware
↓
Check #1: IP Whitelist
✅ IP permitido? → Allow
❌ IP não permitido → Check #2
↓
Check #2: API Key
✅ Key válida? → Allow
❌ Key inválida → Deny (401)
Headers Suportados¶
O middleware verifica IP nesta ordem:
1. x-forwarded-for (Vercel, Cloudflare)
2. x-real-ip (Nginx)
3. cf-connecting-ip (Cloudflare)
Modo Development¶
Em NODE_ENV=development, o dashboard sempre permite acesso de:
- 127.0.0.1
- ::1
- localhost
Mesmo sem configurar segurança.
🔑 Sua API Key Atual¶
⚠️ IMPORTANTE: Esta key dá acesso total ao dashboard. Guarde com segurança!
Bookmark sugerido (salve no browser):
https://codeslick.dev/dashboard?apiKey=c9fa6315e5a9569a49652f8a882831529f2e6a5ca127d1b6fb7177249322deb2
📝 Changelog¶
2025-10-05¶
- ✅ Implementado IP Whitelist
- ✅ Implementado API Key authentication
- ✅ Suporte para múltiplos IPs
- ✅ Fallback automático (IP → Key)
- ✅ Auto-allow localhost em dev
- ✅ Gerada API key segura (256-bit)
🔒 Dashboard protegido sem dependência de Clerk!