Proposal: lint for RLS policies whose role lacks the table privilege (policy_without_privilege)
I maintainer di solito rispondono entro 1 giorno
@larik15 ci sta già lavorando.
Dal 5/10/2026.
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 1/100
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- PLpgSQL
- Stelle
- 284
- Fork
- 110
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di supabase/splinter
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
supabase/splinter#206 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
0002_auth_users_exposed false positive: pg_depend join lacks a refclassid filter (cross-catalog OID collision)Forse già presa @tushardev-365 l’ha presa 99 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 40/100
supabase/splinter#210 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
0030_autovacuum_disabled misses tables where autovacuum_enabled is set to off, 0 or noForse già presa @RaphaelFakhri l’ha presa 11 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
-
0028/0029 silently report zero findings for projects using a custom PostgREST request roleForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di supabase/splinter
Issue simili
-
bug cluster redis-compat
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
canton-network/splice#8342 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
parse-community/parse-server#10871 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
daniel-pimenta-cc/ledor#58 ·