Boas práticas de RLS no Supabase
Ativar a RLS é só metade do trabalho. Políticas permissivas ou incorretas deixam os dados expostos mesmo com a RLS "ligada". Estas são as práticas que fazem a segurança em nível de linha do Supabase realmente proteger seus dados.
Passo a passo
- 1
Negue por padrão, libere explicitamente
Ative a RLS em cada tabela para que o acesso seja negado por padrão e, então, adicione políticas restritas. Nunca use uma política "true" / de permitir tudo em tabelas com dados privados.
- 2
Delimite as políticas ao usuário
Use auth.uid() para limitar as linhas ao seu dono, por exemplo USING (auth.uid() = user_id). Escreva políticas separadas por operação (select/insert/update/delete) e use WITH CHECK nas escritas.
- 3
Proteja-se contra escalonamento de privilégios
Mantenha a chave service_role apenas no servidor — ela ignora a RLS. Não exponha views ou funções SECURITY DEFINER que vazem dados contornando suas políticas.
- 4
Teste como anônimo e como usuário
Verifique se requisições anônimas não retornam nada e se um usuário não consegue ler nem escrever as linhas de outro. Rode novamente o verificador de RLS grátis para confirmar.
Quer ver isso verificado, não só corrigido?
Corrigir é só o primeiro passo. Uma revisão do ClearedToShip confirma que a correção realmente se sustenta e te dá uma liberação assinada e com seguro para lançar. Entre no acesso antecipado: