Apache Superset Security Review
Superset’s Alpha role reaches every data source by default, ahead of any row-level rule scoped to a narrower one. We test your roles, row-level security, guest tokens and SQL Lab access. CREST-certified testers, fixed price from £3,280 for a 2-day single-instance scope, quoted within 24 hours.
- Unlimited retesting
- Unlimited pre-retesting
- No hidden fees
“I would highly recommend EJN Labs to any organisation seeking reliable, detailed, and well-managed penetration testing services, particularly for government or enterprise-level projects.”
“There wasn’t another company we could find that could deliver what we needed in the timeframe we needed. The client loved it, and we got instant ROI from the engagement.”
Apache Superset ships five built-in roles, Admin, Alpha, Gamma, Public and sql_lab, and Superset’s own documentation confirms Alpha users have access to all data sources by default, independently of any Row Level Security rule written for a narrower one.
Superset ships five built-in roles, and Row Level Security only reaches the ones a rule actually names
Superset’s security documentation sets out five built-in roles: Admin, who has all possible rights including granting or revoking access from other users; Alpha, who has access to all data sources but cannot grant or revoke access from others; Gamma, who can only see data sources they have been given access to through a complementary role; Public, the most restrictive role, built for anonymous dashboard viewers; and sql_lab, which grants SQL Lab access on top of whichever of the other roles a user already holds. Admin access to all databases is granted by default, while Alpha and Gamma both need database access assigned individually for SQL Lab. We map who actually holds each role against who the business meant to give broad, all-data-source access to, since granting Alpha to a reporting user hands them every connected data source, not just the ones their dashboards use.
Row Level Security in Superset runs through filters assigned to a dataset and a set of subjects, users, FAB groups or roles, and the documentation sets out two filter types: a Regular filter applies its clause only to the subjects it names, while a Base filter applies to everyone except the subjects named, making it the pattern for a deny-by-default baseline. Multiple filters on the same dataset are combined before the query runs, and Superset’s own worked example is explicit that filters sharing a group key are OR’d together while different group keys, including no group key at all, are AND’d, so a Finance filter and a Marketing filter on the same group key still let either team through, but an unrelated filter with its own group key narrows the result further. This is the same layer we review on our Tableau and Snowflake row-level security reviews, and we test whether every RLS rule’s group key and assigned subjects actually cover every role that can otherwise reach the dataset, Alpha’s default access included.
Embedding a dashboard for your own customers needs the EMBEDDED_SUPERSET feature flag enabled, and Superset’s embedding documentation and its REST API schema confirm the guest token your backend requests from /api/v1/security/guest_token/ carries a required resources array naming the dashboard, an optional user object, and a required rls array of clauses that scope what the embedded viewer sees, alongside a lifetime set by GUEST_TOKEN_JWT_EXP_SECONDS, five minutes by default. We test whether every guest token your application mints actually carries the rls clause it should for that customer, and whether the Allowed Domains list Superset checks against the request’s Referer header is configured tightly enough to stop a token being replayed from an origin it was never meant for.
SCOPE
What we review in a Superset instance
Built-in roles: Admin, Alpha, Gamma, Public and sql_lab
Superset’s documentation confirms Admin has all possible rights, Alpha has access to all data sources but cannot grant or revoke access, Gamma can only see data sources granted through a complementary role, Public is the most restrictive role for anonymous viewers, and sql_lab grants SQL Lab access on top of a user’s other roles. We test who actually holds each role against who the business meant to have all-data-source access.
Gamma data source access: the complementary role workflow
Giving a Gamma user access to specific datasets means creating a second, complementary role in Security > List Roles and attaching the relevant tables to it, since Gamma alone grants no data source access at all. We test whether every complementary role actually names only the tables a Gamma user was meant to see, and whether an old complementary role still grants a table nobody re-checked.
Row Level Security: Regular filters versus Base filters
Superset’s documentation sets out two RLS filter types: a Regular filter applies its clause only when the querying user matches an assigned subject, while a Base filter applies to everyone except the assigned subjects, the pattern used for a deny-by-default baseline such as a clause of 1 = 0 with the Admin role exempted. We test which type is behind every RLS rule in scope and whether a Base filter’s exempted subjects still match who should see unfiltered data, the same subject-and-clause model we test on a Tableau site’s row-level security.
Row Level Security: group keys and how filters combine
Superset’s own worked example confirms RLS filters sharing the same group key are combined with OR, while different group keys, including filters with no group key at all, are combined with AND, so two unrelated filters without a shared group key can silently produce a WHERE clause that returns no rows. We test the actual group key behind every RLS rule on a dataset, and whether the combined clause still returns the rows a role is meant to see.
Guest tokens: resources and rls scoping for embedded dashboards
Superset’s guest token API requires a resources array naming the dashboard being embedded and an rls array of clauses that scope the embedded viewer’s data, alongside an optional user object carrying a name, and the EMBEDDED_SUPERSET feature flag has to be enabled before any of this is reachable. We test whether every guest token your backend mints actually carries the rls clause meant for that customer, and whether a token minted for one customer’s resources could be reused against another’s.
Guest token issuance, expiry and Allowed Domains
Guest tokens must be minted server-side from a service account by calling /api/v1/security/guest_token/, never from client-side code, and Superset’s documentation states they expire after GUEST_TOKEN_JWT_EXP_SECONDS, five minutes by default, while a dashboard’s Allowed Domains setting is checked against the request’s Referer header before an embed is served, with an empty list allowing any origin. We test where the guest token endpoint is actually called from, how long a token stays valid, and whether Allowed Domains is configured or left open.
Database connection credentials in the metadata database
Superset’s own security guidance calls SUPERSET_SECRET_KEY the most critical security setting in a deployment, since it both signs session cookies and is the key material used to encrypt sensitive information in the metadata database, including database connection credentials. We test how SUPERSET_SECRET_KEY is generated, stored and rotated, since anyone who recovers it can decrypt every connected database’s stored credentials.
SQL Lab: per-database access and arbitrary SQL execution
The sql_lab role grants access to SQL Lab itself, but Superset’s documentation is explicit that Alpha and Gamma users each need database access granted individually beyond that, while Admin has access to every database by default, and Superset’s hardening guidance recommends the database connection use a dedicated, least-privilege account with no INSERT, UPDATE, DELETE or administrative rights. We test which users can reach which connected databases through SQL Lab, and what the underlying database account configured in Superset can actually do once a query runs.
CSRF protection and security headers
Superset enables Flask-WTF’s CSRF protection by default (WTF_CSRF_ENABLED = True) with a one-year token lifetime, but its hardening guidance states Talisman, which sets the Content-Security-Policy and other security headers, ships disabled by default from Superset 4.0 onward and has to be explicitly turned on in superset_config.py. We test whether CSRF protection is actually enforced across the endpoints in scope, and whether Talisman and its Content-Security-Policy have been enabled and configured.
Granular export controls versus the legacy CSV permission
Superset’s granular export controls, gated behind the GRANULAR_EXPORT_CONTROLS feature flag, replace the single legacy can_csv permission with three independent permissions, can_export_data, can_export_image and can_copy_clipboard, and its documentation confirms an API request without the matching permission returns a 403 rather than the export. We test whether the flag and its three permissions are actually enforced per role, or whether every role still inherits the old blanket can_csv behaviour from before an upgrade.
OUR PROCESS
Apache Superset Security Review: From Scope to Attestation
Role and Access Mapping
We list every user’s assigned roles against Admin, Alpha, Gamma, Public and sql_lab, every complementary role’s attached tables, and the current state of EMBEDDED_SUPERSET, GRANULAR_EXPORT_CONTROLS and Talisman.
Row-Level Security and Guest Token Testing
Every RLS rule’s filter type, group key and assigned subjects are tested against real logins, and every guest token flow is tested for its resources, rls clauses, expiry and Allowed Domains configuration.
Credential, SQL Lab and Export Permission Testing
We test how database connection credentials and SUPERSET_SECRET_KEY are protected, what each role’s SQL Lab and connected-database access actually allows, and whether export permissions are enforced per role.
Reporting and Retest
Executive summary, technical report with CVSS scores and reproduction steps, a walkthrough call, free retest after remediation and an attestation letter.
CREDENTIALS
Verified Accreditations Auditors Accept
Every credential below is independently verifiable. UK procurement teams, FCA supervisors, ISO 27001 / SOC 2 auditors, and cyber insurance underwriters all recognise these standards.
GET YOUR QUOTE
Get a CREST Superset pen test quote in 24 hours
A fixed-price quote back in one business day, from a named CREST assessor. No sales pipeline, no chasing.
- CREST and IASME accredited. Testing your auditors and clients already recognise.
- Fast-track testing within 24 hours where required. Free retest of every fix included.
- Live findings via your client portal, not a four-week PDF.
- Fixed price from £3,500 for a single-role, single-app scope, agreed up front. Most engagements run £5,000 and up. No day-rate surprises.
Under NDA Further named references available on a scoping call.
- We reply within one business day with a fixed-price quote from a named CREST assessor.
- You approve the scope and we book a start date, usually within 24 hours.
- Live findings land in your client portal as we test, with a free retest of every fix.
Get your fixed pen test quote in 24 hours
Quote request received
We will reply within one business day with your fixed-price quote from a named CREST assessor.
Your data stays with us. No newsletter signup.
or book a 20-min scoping call first
We reply within one business day. Your data stays with us. No newsletter signup.
COMPLIANCE READY
Reports Mapped to Every Framework
Findings are written so your team can reference the report against each framework without translation work.
ISO 27001:2022
Annex A.8.8 management of technical vulnerabilities plus A.5.15-5.18 and A.8.2-8.5 access control validation.
SOC 2 Type I & II
CC6 logical access, CC7 system operations, CC8 change management evidence.
PCI DSS
Requirement 11.4 application penetration testing across cardholder data environments, including ecommerce penetration testing for online retail platforms.
FCA SYSC
SYSC 4.1.1R, 6.1.1R, 13 mapped to each finding for FCA-regulated firms.
UK GDPR
Article 32 effectiveness testing, customer-data security controls, ICO-acceptable evidence.
Cyber Essentials Plus
Direct certification through our IASME body status, single-vendor delivery.
PRICING
Transparent Apache Superset Security Review Pricing
Pricing depends on the number of roles, integrations and environments in scope. See our pricing page for how we quote.
2 to 3 testing days
Single user role, basic CRUD application, marketing website with auth. Around 5 working days from kickoff to report.
Get a fixed quote3 to 5 testing days
Multi-role SaaS, business application with payment integration. Around 8 to 12 working days from kickoff to report.
Get a fixed quote5 to 7 testing days
Multi-tenant platform, complex authorisation matrix, integration-heavy applications. Around 15 to 20 working days from kickoff to report.
Get a fixed quoteSECTORS
Sectors We Test Superset For
Sector-specific scoping for regulated UK organisations.
Fintech & FCA-Regulated
FCA SYSC, Open Banking FAPI 1.0, PSD2 SCA, payment-flow scrutiny, KYC/AML testing.
Fintech sector pageSaaS Companies
SOC 2 Type I & II evidence, multi-tenant boundaries, role escalation, customer-tenant isolation.
SaaS sector pageLaw Firms
SRA Cyber Standard, privileged data, conveyancing fraud defence, partner-tier procurement.
Law firm sector pageHealthcare
NHS DTAC, DSP Toolkit v6, UK GDPR Article 32, EHR systems, telehealth platforms.
Healthcare sector pageInsurance
FCA / PRA Operational Resilience, cyber underwriting, claims data, broker portals.
Insurance sector pagePublic Sector
CCS / G-Cloud framework, NCSC-aligned, citizen-facing services, PSN-compliance scrutiny.
Public sector pageWHY EJN LABS
What You Get From Apache Superset Security Review
Six concrete differentiators competitors don’t all match.
CREST-Certified Testers, Verifiable
Every test by a CREST-certified pen tester (CRT, CCT APP, CCT INF where applicable). Verify our company status at crest-approved.org.
24-Hour Startup, Where Required
From signed scope to active testing in a single business day for incident response, audit deadlines, or regulator-driven timelines.
Live Findings, Not 4-Week PDFs
Critical issues reported during testing through your client portal. Your team remediates while testing continues.
Audit-Ready Reports
Executive summary plus full technical report with CVSS scores and explicit framework mappings (ISO 27001, SOC 2, PCI DSS, FCA SYSC).
Free Retests, Standard
Verify remediation of every finding before close-out. Letter of attestation for audit submission included. Most competitors charge £1,500-£3,000 per retest.
UK-Based CREST Testers
Every engagement performed by vetted, UK-based CREST-certified testers, matched to your needs, security clearance, and compliance scope.
FAQ
Frequently Asked
What access do you need?
Admin access to the Superset instance under test, plus a login for each role, Admin, Alpha, Gamma, Public, sql_lab and any complementary or custom roles, that Row Level Security or dataset permissions are meant to restrict. Where dashboards are embedded for your customers, a service account able to request guest tokens speeds up confirming what we find.
Will you touch our live data?
We test read-only against production by default. Where proving a Row Level Security gap, a guest token’s rls scope or an export permission needs real records, we agree a specific dataset or test instance with you first, and anything we create during testing is documented and removed afterwards.
Is this hosted on our infrastructure or a vendor’s?
Apache Superset is open-source software you deploy yourself, whether self-hosted or run through a managed provider, so there is no single vendor operating the platform the way there is for a SaaS BI tool. We scope and test whichever deployment you run, and if a third party manages your hosting, we confirm its current customer testing terms with you during scoping.
Does this cover the underlying database engines Superset connects to?
No. This page is scoped to Superset’s own roles, permissions, Row Level Security, guest tokens, SQL Lab access and configuration. A connected data warehouse or database is a separate scope, and pairs well with our Snowflake or database security review.
What is out of scope?
The underlying host, container platform or infrastructure Superset runs on, denial-of-service testing, and the connected database engines themselves are all out of scope here. We test Superset’s own application layer: roles, RLS, guest tokens, SQL Lab and configuration.
Is penetration testing our own Superset deployment something we need permission for?
Apache Superset is self-hosted open-source software, so authorisation to test it is yours to give directly rather than a vendor’s. If a managed hosting provider operates the instance on your behalf, we confirm that provider’s current customer testing terms with you during scoping before testing starts.
How long does a Superset review take?
A single instance with a handful of roles, connected databases and RLS rules typically sits in our 2-day single-instance scope. Multiple embedded customer deployments, a large number of custom roles or several connected databases extend it, and we confirm the exact day count once we’ve seen the instance.
Are your testers CREST certified?
Yes. Every Superset engagement is carried out by UK-based, CREST-certified testers, and your report and attestation letter are recognised by auditors and insurers accordingly.
20+ CREST-accredited testing services in one place
Web, mobile, API, cloud, AI, infrastructure, red team. Pick the test that fits your environment.
Get a fixed price for your Superset instance
Superset’s Alpha role reaches every data source by default, ahead of any row-level rule scoped to a narrower one. We test your roles, row-level security, guest tokens and SQL Lab access. CREST-certified testers, fixed price from £3,280 for a 2-day single-instance scope, quoted within 24 hours.



