Multi-tenant SaaS
Isolate every customer's data with a tenant_id predicate that composes across teams — no forked tables, no nightly ETL hacks.
Loading DXData
Governance & compliance
Row, column, and table-level policies. Audit every query. SOC 2, HIPAA, and PCI DSS templates out of the box.
// the tension
Governance is usually bolted on after a breach scare. The security team builds a spreadsheet of who can see what, the data team writes one-off views to hide the sensitive columns, and the audit team stitches logs together at quarter-end. Everyone agrees the policies are right. Nobody trusts the system to enforce them.
DXData moves governance into the query path. Policies are code, not documents. Access decisions happen in the planner, before rows leave the warehouse. Every query — allowed or denied — writes a tamper-evident audit entry. The same rules that keep auditors happy also keep your analysts fast.
Match on department, team, clearance, or any claim your IdP supplies. No static group sprawl.
One policy language covers every scope. Enforcement happens at query time, not ingest.
Every query is hash-chained and exportable to your SIEM. Seven-year retention by default.
// access.abac
DXData policies match on the attributes you already trust — department, team, clearance, project, tenant — pulled straight from your IdP. No duplicated group hierarchies, no manual user management.
Policies live in your repo, flow through code review, and deploy through the same CI your engineers already use. The platform compiles them into plan-time predicates, so enforcement is free at runtime.
3 of 5 rows returned · policy: rls.team_scope
// access.rls
RLS policies translate to predicates the Trino planner injects into every query. Forbidden rows are never scanned, never cached, and never handed to the client — not even in aggregates unless the policy explicitly allows it.
Because enforcement happens at query time rather than ingest, you can change who sees what without rewriting tables or backfilling years of history.
// access.masking
Pick a masking mode per column: deterministic hash for joins, partial reveal for support workflows (last four digits, domain only), or full redaction for the auditor-facing view. The planner rewrites the select-list; your SQL does not change.
Masks are composable with RLS and ABAC, so you can grant broader row access while keeping specific columns private — or vice versa — without inventing two-dimensional policies by hand.
// compliance.templates
Start from a pre-built bundle for SOC 2, HIPAA, GDPR, PCI DSS, ISO 27001, or FedRAMP. Each bundle ships with the classification rules, policy skeletons, audit exports, and evidence queries that framework asks for, mapped to the DXData catalog.
Bundles are opinionated, not opaque. You can customize any control, and DXData tracks exactly which policy satisfies which clause — useful the next time an auditor asks.
hash-chained · retained 7 years · exportable to SIEM
// audit.trail
Every query — read, write, denied, or schema change — writes a hash-chained audit entry. Entries are immutable, signed, and retained for seven years by default. You can extend retention or pin a snapshot for a litigation hold with one command.
The audit stream exports to Splunk, Datadog, Elastic, and any S3-compatible sink using a schema designed for SIEM pipelines. A Sigma rule pack for common violation patterns ships out of the box.
// catalog.classification
DXData auto-classifies columns as PII, PHI, Financial, or Internal on every catalog sync, using a combination of schema hints, sample-based heuristics, and policy-defined patterns. Reviewers can override any tag; overrides stick across schema changes.
Classifications drive everything downstream — default masking, audit routing, and the evidence artifacts your compliance bundles produce.
// identity
Connect your IdP once and DXData stays in sync. SCIM provisioning creates and deprovisions users automatically, pushes group memberships into policy attributes, and keeps offboarding the same day the HR system does.
// compliance
// where it fits
Isolate every customer's data with a tenant_id predicate that composes across teams — no forked tables, no nightly ETL hacks.
Care-team attributes decide who sees which chart. Break-glass access is logged, time-boxed, and routed to compliance for review.
Regulator-ready audit trails, 7-year retention, and SIEM-native export for every query that touches regulated data.
// questions we get
Policies are additive: a query is allowed only if every matching policy allows it. Conflicts are resolved deterministically by specificity, and the audit log records exactly which policies fired. Platform teams can publish shared policies as modules that product teams import.
Audit writes are asynchronous, hash-chained, and offloaded to a dedicated log stream. Latency impact is typically under 2 ms per query. Enforcement decisions happen in the planner, so we skip scanning forbidden partitions entirely — many queries actually get faster.
Break-glass grants are time-boxed roles that require a second approver, produce a highlighted audit entry, and auto-expire. You can scope them to a specific resource and require a justification string that flows into the audit event.
Yes. The audit stream exports to Splunk, Datadog, Elastic, and any S3-compatible sink in real time, with a JSON schema designed to be ingested without custom parsers. A Sigma rule pack for common policy-violation patterns ships with the platform.
// keep exploring
Every column classified, every lineage edge documented — the substrate policies run on.
ExploreSee which policies fired, which queries were denied, and where the audit stream is headed.
ExplorePolicy evaluation runs in the Trino planner, so RLS and masking cost nothing at runtime.
Explore// ship faster, stay safe
Pair your data with the policies, audit trail, and compliance coverage your security team would write if they had the time.
No credit card. Policies are yours to keep on export.