Arreglaré tu error 403 rls en la carga de almacenamiento de supabase en 24 horas


Acerca de este Servicio
Traducción automática
Tu carga devuelve 403 y el mensaje dice política de seguridad a nivel de fila. La política parece correcta. Normalmente lo es.
Lo que realmente está pasando es una de seis cosas: la solicitud llega sin sesión, por lo que se considera anónima, la inserción se juzga por WITH CHECK y no USING, el prefijo del camino no es lo que espera la política, las cargas upsert y resumibles necesitan también una política de UPDATE, las URLs firmadas necesitan SELECT, o falta una concesión debajo de la política y devuelve el mismo 403.
Encuentro cuál es, lo arreglo y lo demuestro: la misma carga desde tu propio cliente, antes y después, con la respuesta impresa junto a ella.
Obtienes la migración, una línea sobre qué fue realmente lo que falló, y una revisión de qué aún bloquea a un extraño, para que la solución no abra silenciosamente tu bucket a todos.
Envíame el error exacto, el SQL de la política, el nombre del bucket y cómo está creado tu cliente. Una copia de staging o un rol de solo lectura es suficiente. No necesito tu clave de rol de servicio.
Construyo un POS multitenant en Supabase, con unas 90 migraciones, en tiendas reales. Tres revisiones de seguridad encontraron seis fallos reales, todos después de políticas que estaban correctas tal cual estaban escritas.
Conoce a Basel Draz
Supabase RLS and privilege audits
- DeEgipto
- Miembro desdefeb 2024
- Responde aprox. en:11 horas
Idiomas
Árabe, Inglés
Traducción automática
Mi porfolio
FAQ
Traducción automática
¿Puedes simplemente hacer que mi bucket sea público y listo?
No. Eso elimina el error al quitar la seguridad, y tampoco ayuda con las cargas, ya que un bucket público aún necesita una política de INSERT. Si el bucket realmente debe ser público te lo diré y toma dos minutos, pero no lo haré en silencio para cerrar un ticket.
¿Necesitas mi clave de rol de servicio?
No, y preferiría que no. Un rol de solo lectura, o una copia de staging con el mismo esquema, es suficiente para encontrar la causa. Cuando se necesita escribir, te envío la migración y tú la ejecutas. Puedes revocar lo que me diste en cuanto terminemos.
Uso Clerk o un JWT personalizado, no Supabase Auth. ¿Eso cambia algo?
Está cubierto, y es una de las causas más comunes. La reclamación que lee tu política a menudo no es la reclamación que realmente lleva el token, por lo que auth.uid() regresa null o incorrecto y cada carga falla mientras que el inicio de sesión en sí parece estar bien.
¿Qué pasa si el problema resulta no ser almacenamiento en absoluto?
Te lo digo, con la consulta que lo muestra, y tú decides si continuar. No inventaré una causa de almacenamiento para justificar la orden, y si no hay nada aquí que valga la pena pagar, lo diré antes de que gastes más.

