O que o Shield testa no seu projeto Supabase

As 10 verificações rodam depois de cada deploy, com a chave anônima do serviço.

Como o Shield testa a RLS

Para cada tabela, o Shield envia um PATCH e um DELETE como este.

SB-004
# O filtro usa um id que não existe, então nenhuma linha é alterada.
# O Shield conta 401, 403 ou o código 42501 como bloqueio e 204 como operação aceita.

curl -s -w '\n%{http_code}\n' \
  -X PATCH "$SUPABASE_URL/rest/v1/<tabela>?id=eq.__veloz_audit_nonexistent__" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ANON_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Prefer: return=minimal' \
  -d '{}'

As 10 verificações de Supabase

SB-001Baixo

Schema da API fechado para a chave anônima

Pede a raiz da API REST (/rest/v1/) com a chave anônima e falha se a resposta trouxer o documento OpenAPI com as tabelas, colunas e funções expostas.

Ver detalhes →
SB-002Médio

Cadastro por e-mail exige confirmação

Lê as configurações públicas de autenticação (/auth/v1/settings) e falha quando o cadastro está aberto, o login por e-mail está ativo e novas contas são confirmadas sem validar o e-mail.

Ver detalhes →
SB-003Médio

Lista de buckets do Storage fechada para a chave anônima

Pede a lista de buckets (/storage/v1/bucket) com a chave anônima e falha se a resposta trouxer pelo menos um bucket.

Ver detalhes →
SB-004Crítico

RLS bloqueia UPDATE e DELETE pela chave anônima

Envia PATCH e DELETE para cada tabela com o filtro id=eq.__veloz_audit_nonexistent__, que não corresponde a nenhuma linha, e confere se o banco recusa a operação por permissão.

Ver detalhes →
SB-005Crítico

RLS bloqueia INSERT pela chave anônima

Envia um INSERT para cada tabela com um id sentinela e uma coluna que não existe, e confere se o banco recusa a operação por permissão.

Ver detalhes →
SB-006Baixo

Chave anônima com validade de até 10 anos

Decodifica o JWT da chave anônima e falha se a validade (exp menos iat) passar de 10 anos ou se o token não tiver data de expiração.

Ver detalhes →
SB-007Alto

Funções de rede fora do alcance da chave anônima

Chama por RPC, com a chave anônima, funções das extensões http, pg_net e dblink, e falha se alguma delas puder ser executada.

Ver detalhes →
SB-008Médio

CORS da API não libera credenciais para qualquer origem

Envia um preflight (OPTIONS) para /rest/v1/ com a origem https://evil.example e falha se a resposta permitir credenciais e aceitar qualquer origem (*) ou repetir a origem recebida.

Ver detalhes →
SB-009Alto

Tabela auth.users fora do alcance da chave anônima

Pede /rest/v1/users com o cabeçalho Accept-Profile: auth, que seleciona o schema auth, e falha se a resposta for 200.

Ver detalhes →
SB-010Informativo

Total de linhas no cabeçalho Content-Range

Pede a tabela users com Prefer: count=exact e informa se a resposta traz o total de linhas no cabeçalho Content-Range.

Ver detalhes →

A auditoria roda nos serviços da Veloz

A equipe da Veloz ativa o Shield por projeto.

Fazer deploy