Superset Public Dashboard

Published
Length
3 min read

Luis Felipe Dias

All posts

You create a superset public dashboard by assigning view rights to the guest role. You also bind that role to the specific datasets behind your charts. Many teams grant broad database read rights to make the setup work fast. When permissions are too wide, anonymous visitors can read sensitive rows in your database. How a superset public dashboard works Apache Superset uses role-based access rules to manage who can view charts. For public sharing, the app maps anonymous visitors to a single bu

Public Key Infrastructure (PKI) + GitLab Security Dashboard: the complete guide

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

Free white paper. No spam. Unsubscribe anytime.

You create a superset public dashboard by assigning view rights to the guest role. You also bind that role to the specific datasets behind your charts. Many teams grant broad database read rights to make the setup work fast. When permissions are too wide, anonymous visitors can read sensitive rows in your database.

How a superset public dashboard works

Apache Superset uses role-based access rules to manage who can view charts. For public sharing, the app maps anonymous visitors to a single built-in public role. An admin must edit the app settings to activate this guest role. The admin then adds specific dataset permissions to that public role.

When a visitor opens the link, the app checks the public role permissions. If the role includes the dataset, the app runs the chart queries. The app uses the stored database credentials to fetch the data. Every visitor shares the exact same database user and role.

Teams also use embedded tokens to share charts inside other web apps. Even with tokens, the app still relies on that shared database account. The database sees every query coming from one static service account. It does not know which outside person opened the web page.

What native public roles solve and where they fall short

The native public role solves the basic problem of external chart sharing. Outside users do not need to log in or create an account. Your team does not have to manage hundreds of guest user accounts. You can publish metrics to partners or the public with one link.

Still, this setup leaves a major security gap at the database level. The native role only decides who can load the chart page. It does not inspect what individual queries do in flight. If a dataset includes private columns, the query can pull them into memory.

Url filters or chart tweaks can also expose data you meant to hide. If a table holds emails, phone numbers, or card numbers, those values stay at risk. A broad database account lets the app read every column in that table. The database log only shows the shared app user running those queries.

Public Key Infrastructure (PKI) + GitLab Security Dashboard: architecture patterns and best practices

Continue reading? Get the full guide.

Free. No spam. Unsubscribe anytime.

Why database role limits matter for shared charts

To reduce risk, teams often build separate summary tables for public views. Engineers copy safe data into a new table and remove private fields. This approach works, but it creates extra work for the data team. Every new chart needs a new pipeline and another copy of data.

Other teams create restricted database users just for public chart queries. Still, managing many database accounts across environments takes a lot of time. Static passwords in the reporting app also create a risk if leaked. Teams need a way to inspect queries and mask fields in results.

When masking rewrites matched fields in results, raw private fields stay protected. Even if a chart queries a wide table, national IDs get scrubbed. You can keep one clean dataset while protecting sensitive rows in flight.

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 runs beside each supported service as an open-source proxy, a sidecar for your database or API.

First, hoop.dev guardrails block banned queries before they run. Then hoop.dev data masking rewrites matched sensitive values in responses in memory. The audit trail records every statement and verdict per resource. Furthermore, hoop.dev holds SOC 2 Type II and is open source on GitHub.

Frequently asked questions

Can anonymous users run custom SQL on a superset public dashboard?

No, if you keep SQL Lab permissions off the public role. You must make sure the guest role only holds chart and dataset view rights.

Why does my public chart show a permission error to visitors?

The public role is likely missing read rights for the underlying dataset. You must attach every data source used on the page to that role.

How do I protect private fields like emails or card numbers in shared charts?

Remove private columns from the source view or use data masking in flight. Masking rewrites matched fields in results before the reporting app gets the data.

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.