ClearedToShip
high

Boas práticas de RLS no Supabase

O problema

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. 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. 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. 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. 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:

Varredura gratuita de prontidão para o lançamento
Quero minha varredura grátis