Metabase Production External Clients Best Practices 2025

Published
Length
3 min read

Luis Felipe Dias

All posts

To follow metabase production external clients best practices 2025, isolate tenant data and restrict database roles. You should also use signed embeds and read replicas to protect live systems. Many teams start by linking one shared database user to their reporting app. Then they build dashboards and share links with outside customers. When database roles are too broad, one bad query can expose private records. A heavy report can also slow down the main production database for everyone. Core a

AWS IAM Best Practices + External Secrets Operator (K8s): the complete guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free white paper. No spam. Unsubscribe anytime.

To follow metabase production external clients best practices 2025, isolate tenant data and restrict database roles. You should also use signed embeds and read replicas to protect live systems. Many teams start by linking one shared database user to their reporting app. Then they build dashboards and share links with outside customers. When database roles are too broad, one bad query can expose private records. A heavy report can also slow down the main production database for everyone.

Core architecture for metabase production external clients best practices 2025

A safe setup starts at the database level before you build any charts. Never point your reporting tool at the main database that runs your app. Instead, route all reporting traffic to a read-only replica database. This step keeps slow chart queries from locking up customer writes.

Next, create a specific database role just for external reporting. Give this role permission to read only the tables needed for public dashboards. Block access to internal system tables, password hashes, and audit logs. If your database supports row-level rules, turn them on for this role.

Inside the reporting app, use signed embedding or sandboxed user groups for customers. Signed embeds let your main app pass a tenant ID inside a token. The reporting tool reads this token and filters every chart for that specific customer. External users should not get full accounts with open query builders. Give them locked dashboards where they can only change safe filter boxes.

What native controls solve and what gaps remain

Native permissions and signed embeds do a great job of controlling dashboard views. They decide which customer logs in and which charts appear on the screen. Row-level filters also help separate one customer's rows from another customer's rows.

Still, native app settings leave a major gap at the database wire level. The reporting tool still connects to your database using one shared service account. From the database point of view, every query comes from that single account. If an internal builder makes a mistake on a shared chart, data leaks happen.

AWS IAM Best Practices + External Secrets Operator (K8s): architecture patterns and best practices

Continue reading? Get the full guide.

Free. No spam. Unsubscribe anytime.

Native setups also decide who logs in, not what individual statements do in flight. They do not inspect raw SQL results before those results leave the database. If a table holds emails, phone numbers, or card numbers, the query pulls them. A misconfigured filter or custom question can expose those fields to outside viewers. Also, database logs will only show the shared app user, not the actual person. When an audit happens, you must dig through two separate log systems to match queries.

Managing internal builders who manage external dashboards

External client dashboards do not build themselves. Your internal analysts and engineers must write the SQL and test the views. Often, teams give these builders direct credentials to the production replica to test queries. Shared database passwords sitting on staff laptops create a huge risk for customer data.

To keep client data safe, apply strict controls to your internal chart builders too. Remove static database passwords from local machines and use identity-based logins instead. Make sure every query run during dashboard testing links back to a single person. Masking rules that rewrite emails, card numbers, and national IDs in results also help. This approach lets analysts build and test external reports without exposing raw customer details.

Govern statements and responses across databases and APIs

Good config and scoped roles are needed setup. They do not check single queries in flight or mask sensitive fields in returned rows. Across Postgres, MySQL, SQL Server, MongoDB, ClickHouse, Kubernetes APIs, SSH, and internal HTTP endpoints, hoop.dev sits inline in the protocol beside each supported service as an open-source proxy, a sidecar for your database or API. For every query or command an AI agent or engineer runs against production, hoop.dev decides to pass, mask, block, or hold it for human approval.

First, hoop.dev guardrails block banned queries before they run or hold risky ones for review, and hoop.dev data masking rewrites matched sensitive values in responses in memory. Furthermore, hoop.dev holds SOC 2 Type II and is open source on GitHub.

Frequently asked questions

Should external clients use the same database user as internal analysts?

No, external dashboards should use a strict, read-only database role with narrow table permissions. Internal analysts need separate access that maps to their own individual user identities.

How do we stop external client queries from slowing down our main app?

Point your reporting tool at a dedicated read replica instead of your primary database. You can also set query timeout limits on the database role used for reports.

How can we hide sensitive fields like emails or card numbers in shared reports?

Limit the database role to views that leave out sensitive columns when possible. For dynamic queries, use runtime masking to rewrite emails, phone numbers, and card numbers in results.

Save the open-source gateway.

hoop is MIT-licensed infrastructure for controlling how AI agents reach production data. Star hoophq/hoop so you can inspect it, deploy it, or share it when your team starts governing agent access.