Metabase con PostgreSQL: permisos, consultas y CSV

Cómo armar tableros con Metabase y PostgreSQL sin mezclar sucursales, SQL libre, descargas y permisos de gerencia.

ULTIMA MILLA · Técnico · 26 de jul de 2026 · 4 min de lectura

Metabase con PostgreSQL: permisos, consultas y CSV

El tablero falla cuando ventas y gerencia calculan margen con filtros distintos. Metabase puede mostrar una sola versión de la consulta, pero la decisión de permisos empieza en PostgreSQL y termina en grupos, colecciones y descargas. Para pymes con sucursales, clientes o unidades de negocio, esta guía explica dónde vive el dato, quién lo consulta, quién exporta CSV y qué prueba detecta una fuga antes de producción.

Dónde aparece el dato que cada área lee distinto

El problema operativo aparece cuando cada área copia una consulta y cambia un filtro sin avisar. En un estudio contable de San Rafael, el objeto que marca la escena es una impresora con cuatro cierres mensuales apoyados encima, cada uno con una columna llamada margen. La cifra que corrige el hábito llega de Stack Overflow 2025: 26.083 personas respondieron el bloque de bases de datos y PostgreSQL quedó arriba en preferencia y continuidad desde 2023. Ese dato global no convierte a PostgreSQL en respuesta automática; confirma que las bases relacionales siguen siendo el lugar común donde equipos distintos pueden auditar definiciones. El antagonista es la consulta copiada que nadie revisa. Si una bodega de Luján, una ferretería con dos cajas y una firma de servicios usan la misma tabla de ventas, la diferencia debe estar en permisos y filtros, no en archivos sueltos. La primera decisión es escribir la definición de cada métrica: margen, cobrado, pendiente, anulado, facturado, devengado. Después se define qué columna identifica sucursal, cliente, asesor o unidad. Recién ahí se arma el tablero. La técnica sirve cuando reduce discusiones: la misma pregunta debe devolver el mismo número para el mismo rol.

Cómo funciona por dentro

El flujo mínimo tiene siete pasos. Primero, la aplicación o el ERP carga ventas, pagos, notas de crédito y clientes. Segundo, PostgreSQL guarda registros estructurados, usuarios, estados y auditoría. Tercero, una vista SQL prepara la definición de margen o cobranza con nombres entendibles. Cuarto, el usuario de Metabase se conecta con permisos de lectura y sin permisos de escritura. Quinto, Metabase organiza preguntas, modelos y tableros en colecciones. Sexto, el administrador bloquea el grupo All Users y da permisos por grupo, siguiendo la documentación de permisos de datos. Séptimo, cada tablero deja historial de cambios, suscripción, descarga permitida o bloqueada y responsable de revisión. Metabase recibe consultas, tablas, atributos de usuario y grupos; entrega preguntas, modelos, gráficos y exportaciones. PostgreSQL recibe operaciones de negocio y políticas de acceso; entrega filas autorizadas y auditoría consultable. El backup recupera base, configuración de Metabase y la consulta aprobada. Si falla Metabase, el tablero queda fuera de línea pero la base conserva los datos. Si falla la política en PostgreSQL, el tablero puede mostrar filas de otra sucursal.

Qué se instala o configura primero

La pila concreta usa PostgreSQL, Metabase, usuario SQL de solo lectura, proxy TLS, backup de base, copia de configuración y monitoreo. Metabase 61, listado en los releases oficiales, sumó gobierno de funciones de IA, límites y uso; en pymes alcanza con separar primero datos, grupos y descargas. La licencia puede ser USD 0 si se usa la edición abierta. Las funciones avanzadas de seguridad por fila y columna pertenecen a planes pagos, según la documentación del producto, por lo qué conviene presupuestarlas aparte. Un piloto chico cuesta entre USD 60 y USD 180 por mes de infraestructura, equivalentes a ARS 91.200 y ARS 273.600 al dólar oficial de venta de ARS 1.520. Ese rango cubre VM, backup, monitoreo y pruebas; no incluye licencia comercial ni horas de modelado. El plazo razonable es de dos a cinco semanas si ya existen datos limpios. El primer entregable verificable es un tablero de cobranza con cuatro grupos: gerencia, ventas, administración y auditoría. Gerencia ve todo. Ventas ve su cartera. Administración exporta CSV. Auditoría lee definición, fecha y responsable. UMSA suele empezar por ese corte porque fuerza a nombrar permisos antes de diseñar gráficos. El tablero que importa es el que alguien puede revisar con una consulta y una restauración.

Dónde se rompe y cómo probarlo

El primer riesgo aparece con SQL libre. El indicio es un usuario que puede escribir una consulta nativa sobre tablas completas. La prueba toma un usuario de ventas, intenta consultar otra sucursal y confirma bloqueo. La documentación de Metabase sobre seguridad de filas y columnas advierte que las preguntas SQL requieren cuidado especial cuando hay datos restringidos. El segundo riesgo aparece con políticas incompletas. El indicio es una tabla protegida y otra tabla auxiliar abierta. La prueba revisa joins, tablas de clientes, usuarios y zonas. En PostgreSQL, las políticas de seguridad por fila se aplican por tabla y por comando, así que cada acceso debe revisarse. El tercer riesgo aparece con CSV sin dueño. El indicio es una descarga enviada por chat. La prueba crea un tablero de muestra, deshabilita descarga para ventas y registra una exportación permitida para administración. El cuarto riesgo aparece con backup parcial. El indicio es una base recuperada sin preguntas, colecciones ni usuarios de Metabase. La prueba restaura PostgreSQL y configuración de Metabase en un entorno separado. PostgreSQL enumera tres enfoques de respaldo en su capítulo de backup y restauración: dump SQL, copia de archivos y archivado continuo. La elección se prueba con una operación real. El quinto riesgo aparece con métricas sin definición escrita. El indicio es un gráfico correcto que nadie puede explicar. La prueba imprime la consulta, fecha, dueño y regla de cálculo debajo del tablero. Un tablero útil deja menos margen para discutir el número y más espacio para revisar la decisión que el número pide.

Para seguir leyendo