Securing Self-Hosted BI Tools: A Change-Control SOP
Why this matters right now
On August 11, 2026, CISA added a Metabase SQL injection to its Known Exploited Vulnerabilities catalog. CVE-2026-72898 carries a CVSS score of 10.0, needs no authentication, and was confirmed exploited in the wild, with a federal remediation deadline of August 14. We covered the incident-response side in last week’s recap. The part that should worry a change advisory board is not the patch. It is the question of why a business-intelligence dashboard was reachable from the open internet in the first place.
Self-hosted BI and analytics tools such as Metabase, Grafana, Apache Superset, and Redash are stood up by data teams to answer questions fast. They connect to production databases, warehouses, and object stores, and they store those connection credentials so dashboards keep refreshing. A compromise of the BI layer is therefore a compromise of every data store it touches. Yet these tools are frequently deployed outside the change process, never entered into the configuration management database, and left on a public IP with a default configuration. This piece is a change-control standard operating procedure for pulling them back inside the fence.
What makes a BI tool a Tier 0 asset
The reason a dashboard tool deserves crown-jewel treatment is the credential store. Superset’s own documentation is blunt about it: the application secret key “is used to sign all session cookies” and to “encrypt sensitive information in the metadata database, including database connection credentials,” and the docs warn that reusing that key across instances “can lead to a full authentication bypass if a cookie is compromised” (Apache Superset security guide). Metabase stores the same class of secrets, which is why its documentation ships environment variables to encrypt the application database and pin certificates (Metabase environment variables).
That is the asset-criticality argument in one line. If the BI tool is breached, the attacker inherits read access, and sometimes write access, to whatever the analysts could query. A change-risk model that scores this system as a low-impact internal reporting app is mis-scoring it. Score it by blast radius, the same way you would treat a shared service account. Our change risk score tool will push the tier up automatically once you tag the data stores it reaches.
Why these tools end up exposed
Exposure is rarely a decision. It is a default. Metabase’s Docker image sets the listen interface to 0.0.0.0, meaning the container “listens on all network interfaces,” while the plain JAR defaults to localhost (Metabase environment variables). Drop that container on a host with a public IP and no firewall, and the admin console is on the internet with no further action. Superset’s documentation states plainly that “running Superset without HTTPS/TLS is not secure” and that it should “always be deployed behind a reverse proxy or load balancer configured for HTTPS termination” (Apache Superset security guide) — guidance that a quick docker run skips entirely.
Authentication defaults compound it. In Superset, the Flask-Talisman security-header layer “is disabled by default” and must be explicitly enabled (Apache Superset security guide). In Grafana, the hardening guide notes that the secure cookie attribute is off unless you set cookie_secure = true, because “the default value is false” (Grafana security hardening). None of these are vendor negligence. They are convenience defaults meant for a laptop, shipped to production by a team moving quickly. The chart below scores the out-of-the-box posture across four common tools, read straight from each vendor’s documentation.

Two patterns stand out. First, no tool in the set ships production HTTPS without you adding a reverse proxy. Second, single sign-on in the free self-hosted tier is inconsistent: Superset supports it through its Flask-AppBuilder auth layer, while Metabase gates SAML, JWT, and OIDC behind Pro and Enterprise plans, with SAML controlled by MB_SAML_ENABLED “available only on Metabase Pro and Enterprise plans” (Metabase environment variables). That licensing reality shapes your SOP: for a free-tier Metabase, SSO enforcement has to happen at the reverse proxy, not in the app.
The vendor-by-vendor weak spots
No tool here is a clean win, and a change board should name the gap in each before standardizing on one. Metabase’s biggest weakness for a security-conscious shop is that the identity controls that matter most, SAML and OIDC SSO plus password-login disable via MB_ENABLE_PASSWORD_LOGIN, sit behind the paid tier (Metabase environment variables), so the free edition leans on Google auth or proxy-level enforcement. Grafana’s weakness is that several hardening controls are opt-in text edits in grafana.ini: secure cookies, cookie_samesite = strict, and cookie prefixes are all off or loose by default and only take effect after a restart (Grafana security hardening).
Superset’s weakness is operational complexity. It refuses to start without a SECRET_KEY, which is a genuine strength, but its production checklist demands you also set SESSION_COOKIE_SECURE, SESSION_COOKIE_HTTPONLY, a short PERMANENT_SESSION_LIFETIME because “the default is 31 days, which is not recommended for production,” and a strict Talisman CSP (Apache Superset security guide). Miss one and you have a false sense of safety. Redash’s weakness is the thinnest built-in authentication story of the four, with SSO and MFA leaning heavily on an external identity proxy rather than native controls. The common thread: every one of these tools is only as safe as the configuration change you apply after install, which is exactly why the deployment belongs under change control.
What to do about it
Treat the BI tier as a standing change-managed control, not a one-time cleanup. The following SOP orders the work by risk reduction per hour of effort.
- Inventory and add to the CMDB. Find every self-hosted BI instance, including the “temporary” ones. Record which databases and warehouses each one holds credentials for. An asset the change process cannot see is an asset it cannot protect. If it is not a configuration item, it does not exist to your CAB.
- Get it off the public internet. Put the tool behind a reverse proxy or load balancer and restrict inbound access to your VPN or private network. For Metabase specifically, stop binding the container to
0.0.0.0on public hosts and front it with a proxy. This single change removes the unauthenticated-internet path that made CVE-2026-72898 so dangerous. - Enforce SSO at the strongest layer available. Where the tool supports SAML or OIDC natively, wire it to your identity provider and disable local password login. Where SSO is paywalled, as in free-tier Metabase, enforce authentication at the reverse proxy using an auth gateway so no unauthenticated request reaches the app.
- Set HTTPS and secure session cookies. Terminate TLS at the proxy, enforce HSTS, and set the secure, HttpOnly, and SameSite flags. Shorten session lifetime from the multi-week defaults, for example Superset’s recommended eight hours or Metabase’s
MB_SESSION_TIMEOUT. - Rotate and vault the application secret. Move the secret key out of config files into a secrets manager, and rotate it on a schedule and after any incident. Rotation invalidates all sessions, so run it as a scheduled change with a maintenance window.
- Bring upgrades under change control. A KEV-listed BI CVE should trigger your emergency-change path. Track the vendor’s advisory feed and pre-authorize a fast lane, the same pattern we described in the KEV emergency-change guide.
- Verify from the outside. After each change, confirm from an external network that the admin console is not reachable and that the login page enforces SSO. Add this check to your recurring cloud & SaaS reliability reviews.
Frequently asked questions
Is Metabase safe to run on the public internet if it is patched? Patching CVE-2026-72898 closes that specific hole, but a public admin console is still a standing risk surface for the next unauthenticated flaw. Metabase’s own documentation pushes reverse-proxy and HTTPS configuration for production (Metabase environment variables). Keep it behind SSO and off the open internet regardless of patch level.
Which self-hosted BI tool has the best default security? By the vendor documentation, Superset is the only tool here that refuses to start without a strong secret key and ships a mandatory secure-cookie checklist (Apache Superset security guide). Its weakness is configuration complexity: the secure defaults still require several manual settings, so a rushed deployment can miss them.
Do I need a paid tier to enforce SSO? It depends on the tool. Metabase gates SAML, JWT, and OIDC to its Pro and Enterprise plans (Metabase environment variables), so free-tier users enforce SSO at a reverse proxy instead. Superset supports SSO through its Flask-AppBuilder auth layer in the open-source edition.
Why is a BI tool a bigger risk than a normal web app? Because it stores live credentials to the databases it queries. Superset encrypts “database connection credentials” in its metadata database using the secret key (Apache Superset security guide), so a compromise of the BI tool can cascade into the connected data stores.
Should BI-tool deployments go through the CAB? Yes. A tool that holds credentials to production data is a Tier 0 asset. Its deployment, network exposure, and upgrades all change the organization’s risk posture, which is the definition of a change your board should see. Use the change risk score tool to set the tier by data-store blast radius.
How often should we rotate the application secret key? Superset recommends rotating “periodically, for example quarterly,” and “after any known or suspected security incident” (Apache Superset security guide). Because rotation invalidates every active session, schedule it as a change with a maintenance window rather than doing it ad hoc.
Does putting the tool behind a VPN replace SSO? No. A VPN limits who can reach the login page, but it does not authenticate the individual user to the tool or give you per-user audit trails. Layer both: network restriction to cut the attack surface, and SSO for identity and accountability.
Sources
- Apache Superset — Securing Your Superset Installation for Production
- Apache Superset — Configuring Superset (SECRET_KEY)
- Metabase — Environment variables (auth, HTTPS, sessions, proxy)
- Grafana — Configure security hardening
- Grafana — Configure authentication (auth proxy)
- CISA — Known Exploited Vulnerabilities Catalog
- Senserva — CVE-2026-72898 (Metabase) KEV detail and remediation date
Published August 17, 2026.