Reglas de acceso en la exportación

Una exportación de Postgres incluye políticas de row-level security que reproducen qué filas puede leer cada uno de tus usuarios. Las aplicas tú mismo, y cubren solo la lectura.

Qué reproducen las políticas

El paquete de exportación incluye policies.sql, que configura row-level security en las tablas exportadas. Un usuario ve una fila cuando es suya, cuando es pública, cuando se le concedió explícitamente o cuando depende de algo que ya puede ver. Ese último caso alcanza un nivel, a través de una referencia que lleva acceso de lectura. Las concesiones explícitas viajan en su propia tabla, que las políticas consultan y que los usuarios no pueden leer directamente.

Dentro de Fóir las reglas se aplican en la base de datos, compiladas por Demesne contra una única tabla de registros. La exportación tiene una tabla por modelo, así que las mismas reglas se escriben de nuevo para esa forma.

Aplicarlas

Ejecutas el archivo con psql después de cargar los datos. Aplicar el paquete mediante el comando de exportación no lo ejecuta. A partir de ahí el contrato es un único ajuste de sesión, request.jwt.claims, que lleva el id del usuario. Sin claims establecidos, quien llama es anónimo y ve exactamente las filas públicas. Prueba con el authenticated rol: el rol que restauró las tablas es su propietario, y el propietario de una tabla omite row-level security.

Lo que no se transfiere

Permisos a nivel de campo, alcances de API y las reglas de escritura se quedan atrás. Un usuario que puede ver una fila en la base de datos restaurada ve todas sus columnas, así que ocultar un campo pasa a ser tarea de tu aplicación, de una concesión por columna o de una vista. Las políticas dan a quienes llaman anónimos y con sesión iniciada solo acceso de lectura, y el acceso de tu equipo a la consola no se exporta.

Qué se prueba

Nuestro conjunto de pruebas exporta un proyecto con datos de ejemplo, lo restaura en una segunda base de datos, aplica las políticas y exige los mismos ids de fila para el mismo usuario en ambos lados. Eso prueba la traducción, y nada comprueba las políticas en tu propia base de datos restaurada. No afirmamos que las reglas restauradas coincidan en un proyecto que use organizaciones.

Lee el detalle

La sección de reglas de acceso de la guía de exportación muestra cómo aplicar las políticas, establecer los claims de un usuario y probar con el rol correcto.