Proposal: lint for RLS policies whose role lacks the table privilege (policy_without_privilege)
Los mantenedores suelen responder en 1 día
@larik15 ya está trabajando en esto.
Desde el 5/10/2026.
Evaluación
- Dificultad
- 1/5
- Tiempo estimado
- Menos de una hora
- Aptitud para principiantes
- 1/100
Línea de trabajo
The issue describes a tested implementation, but a linked open pull request (#197) already carries the work. Review that PR for the lint, docs, tests, and expected output; the proposed lint is done when its behavior and output match the issue and the test suite passes on the stated PostgreSQL versions.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What the lint catches
A permissive RLS policy for anon or authenticated on a table in an exposed schema, where that role has no table privilege for the policy's command (SELECT/INSERT/UPDATE/DELETE). Postgres checks privileges before RLS, so the policy never takes effect and API requests fail with 42501 permission denied instead of being filtered by the policy. Proposed as an INFO-level lint, 0031_policy_without_privilege.
Why it matters now
Supabase no longer grants anon/authenticated privileges on new public tables automatically: for new projects since 2026-05-30, and for all projects on 2026-10-30 (changelog). A migration that creates a table and its policies but no GRANT now ships a policy that silently does nothing, and none of the existing lints flag a policy that has no effect because the targeted role lacks the table privilege. I searched open and closed issues and PRs in this repo and found nothing covering this.
Status
A tested implementation is ready (lint, docs, tests, expected output). The full suite passes on supabase/postgres 15.14.1.169 and 17.6.1.169. I'll open a PR linking this issue right after filing it. Happy to adjust the approach or renumber if you prefer.
- Lenguaje dominante
- PLpgSQL
- Estrellas
- 284
- Forks
- 110
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de supabase/splinter
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 69/100
supabase/splinter#206 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
0002_auth_users_exposed false positive: pg_depend join lacks a refclassid filter (cross-catalog OID collision)Posiblemente ocupada @tushardev-365 la tomó hace 96 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 40/100
supabase/splinter#210 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
0030_autovacuum_disabled misses tables where autovacuum_enabled is set to off, 0 or noPosiblemente ocupada @RaphaelFakhri la tomó hace 8 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
0028/0029 silently report zero findings for projects using a custom PostgREST request rolePosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
Todos los issues de supabase/splinter
Issues similares
-
"Sync columns from source" fails on ClickHouse tables with ALIAS, MATERIALIZED or DEFAULT columnsPosiblemente ocupada @bmuraykhi la tomó hoy. Abierto#bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ClickHouse/clickhouse-go#2093 ·
Los mantenedores suelen responder en 1 día
-
Missing index on table_movies.movie_file_id: every movie ffprobe cache lookup is a linear scanAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
morpheus65535/bazarr#3699 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
pocoproject/poco#5626 ·
Los mantenedores suelen responder en 2 días
-
[Bug]: prisma_migration --skip_server_startup crashes with ImportError when psycopg cannot load libpq (unguarded import in ensure_request_log_indexes)Posiblemente ocupada @chamanswami555 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
BerriAI/litellm#49680 · 1 comentario ·
Los mantenedores suelen responder en 1 día