Drata × Metabase

How to build Drata dashboards in Metabase

Drata is a compliance automation platform that continuously monitors controls and collects evidence across SOC 2, ISO 27001, GDPR, and 20+ frameworks. Metabase is where you turn those security signals into shared, trustworthy dashboards. This guide covers two complementary paths: a lightweight MCP + CLI route that pulls live data with the Drata MCP Server and loads a CSV into Metabase with the Metabase CLI, and a durable pipeline route that syncs Drata findings into a database so you can build dashboards anyone can read.

Heads up: Metabase connects to databases and warehouses — it does not ship a native Drata connector, and a BI warehouse is the wrong home for raw security telemetry. Sync findings, entities, and daily rollups — vulnerabilities, detections, control results, auth summaries — and leave the event firehose in Drata.

How do you connect Drata to Metabase?

Most teams combine both routes: use MCP and CLI uploads for a fast first pass, then move recurring security reporting to a warehouse-backed model.

1 · MCP + CLI route (AI-assisted)

Live data in, quick analysis out

Pair the Drata MCP Server with the Metabase CLI. Use MCP for live lookups, write a scoped result to CSV, then load it into Metabase as a ready-to-query table and model.

Best for
  • Quick lookups such as "show me pass rate by framework"
  • Loading a Drata export into Metabase in seconds
  • Spot-checks and one-off analyses without a warehouse
Trade-offs
  • Great for exploration, not governed security reporting
  • Use read-only, minimally scoped credentials — security tools especially
  • CSV uploads are snapshots — refresh or move to the pipeline for history
2 · Pipeline route (warehouse-backed)

Durable dashboards with history

Sync Drata findings and metadata into a database or warehouse with a connector, custom pipeline, or API, then point Metabase at it.

Best for
  • Drata posture reporting leaders and auditors depend on
  • Joining Drata data with assets, HR, ticketing, or other security tools
  • Long-run trends for pass rate by framework and failing monitors with owner
Trade-offs
  • You own the refresh schedule and the snapshot cadence
  • Sync findings, entities, and daily rollups — not the raw event firehose
  • Metric definitions must be consistent across tools and teams

What can you analyze from Drata data in Metabase?

  • Pass rate by framework — built from monitoring test results and the related controls, frameworks, personnel data your sync exposes.
  • Failing monitors with owner — built from monitoring test results and the related controls, frameworks, personnel data your sync exposes.
  • Personnel onboarding compliance — built from monitoring test results and the related controls, frameworks, personnel data your sync exposes.
  • Vendor risk review status — built from monitoring test results and the related controls, frameworks, personnel data your sync exposes.
  • Evidence freshness — built from monitoring test results and the related controls, frameworks, personnel data your sync exposes.

Which Drata dashboards should you build in Metabase?

For: Compliance leads

Posture overview

How close you are to a clean audit, today.

  • Control pass rate by framework (bar)
  • Failing controls (number + trend)
  • Tests failing more than 14 days (table)
  • Audit readiness by framework (number)
For: Control owners

Remediation queue

Failing controls, with names attached.

  • Failing controls by owner (table)
  • Newly failing this week (table)
  • Time to fix failed controls (line)
  • Evidence past its freshness window (table)
For: People ops and IT

Personnel compliance

The human-side controls auditors always check.

  • Security training completion (number)
  • MFA adoption (number + trend)
  • Background checks pending (table)
  • Offboarding tasks overdue (table)
For: Leadership and board

Trust reporting

Compliance posture as a business trendline.

  • Pass-rate trend by framework (line)
  • Open vendor reviews (number)
  • Framework coverage map (table)
  • Quarter-over-quarter posture change (bar)

How do you use the Drata MCP Server with the Metabase CLI?

Pair the Drata MCP Server with the Metabase CLI for fast, hands-on analysis. MCP is useful for scoped lookups and summarized exports; the Metabase CLI's upload command loads CSV data into Metabase and creates a ready-to-query table and model.

Example workflow

  • Ask the MCP server for the current monitoring test results with framework, status, and owner.
  • Export the result as CSV, keeping stable IDs, severities, statuses, owners, and timestamps.
  • Run mb upload csv to load it into Metabase as a table and model, then build questions and dashboards on top.

Be honest about the limits

  • MCP lookups are excellent for exploration, not scheduled reporting.
  • A CSV upload is a snapshot; refresh it with mb upload replace or move to the pipeline for real history.
  • Compliance platforms report current state — daily snapshots are required for pass-rate trends.
  • mb upload csv needs an uploads database configured under Admin → Settings → Uploads.

How do you set up Drata MCP and the Metabase CLI?

Drata MCP Server official · beta

Transport
Hosted remote MCP via Streamable HTTP
Auth
OAuth, scoped by OAuth scopes and Drata role permissions
Best for
Live scoped lookup and export

Metabase CLI official

Install
npm install -g @metabase/cli
Auth
mb auth login
Load data
mb upload csv --file data.csv
Requires
An uploads database (Admin → Settings → Uploads)
MCP Example MCP client config
{
  "mcpServers": {
    "drata": {
      "url": "https://mcp.drata.com/mcp/"
    }
  }
}

Regional endpoints: https://mcp-euc1.drata.com/mcp/ (EU) and https://mcp-apse2.drata.com/mcp/ (APAC). The server supports read and write operations — grant read-only scopes for analysis work.

Terminal Load a Drata CSV with the Metabase CLI
# Install the Metabase CLI
npm install -g @metabase/cli

# Log in (opens your browser; requires Metabase v62+)
mb auth login --url https://your-metabase.example.com

# Load a monitoring-test-results export — creates a table AND a model
mb upload csv --file drata-monitoring-test-results.csv --collection root

# Refresh that same table later from a new export
mb upload replace <table-id> --file drata-monitoring-test-results.csv

Can you generate a Drata dashboard with AI?

Yes. Use the prompt below with any assistant that can run the Drata MCP Server and the Metabase CLI. It works end to end: if Drata tables already exist in Metabase it analyzes those; otherwise it pulls scoped, summarized data over MCP, loads it with mb upload csv, then builds the dashboard and caveats any metric that needs missing history.

Prompt for creating a Drata Compliance Overview dashboard
Create a polished Metabase dashboard for Drata compliance analytics.
Work end to end: get the data into Metabase if it isn't there yet, then build.

Goal: Help security and engineering leaders understand control pass rates, failing controls, personnel compliance, and audit readiness from Drata data.

Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for drata tables and
  models). If durable Drata data is already present — synced from a warehouse
  or uploaded earlier — use it and skip to Step 2.
- If nothing is there, pull a scoped, summarized export with the Drata MCP Server:
  monitoring test results, plus controls, frameworks, personnel.
  Prefer aggregated or entity-grain views over raw events. Write each result to a
  CSV, then load it with the Metabase CLI — run "mb upload csv --file <export>.csv"
  so each upload creates a table and a ready-to-query model. Use "mb upload replace
  <table-id> --file <export>.csv" to refresh an existing table instead of creating
  duplicates.

Step 2 — Inspect before querying:
Do not assume exact table or column names. Inspect available fields, severities,
statuses, timestamps, and whether snapshots or history exist before creating
duration or trend cards.

Important:
- Build on whatever data is present; don't claim Metabase connects natively to
  Drata — it reads a database or CLI-uploaded tables.
- Never try to load raw security telemetry or event firehoses into Metabase; use
  findings, detections, entities, and daily rollups.
- Only compute durations (time to remediate, time to triage, time to detect)
  when the required timestamps exist.
- Exclude test environments and suppressed or accepted-risk items from headline
  cards, and keep them visible in a labeled register instead.
- A single CSV is a point-in-time snapshot: only build trend cards if there is a
  usable date column or multiple periods have been uploaded.

Dashboard title: Drata Compliance Overview

Sections:
1. Executive summary: Pass rate by framework; Failing controls; Tests failing
   >14 days; Personnel compliance; Vendor reviews open.
2. Controls: Pass rate by framework and category; newly failing this week.
3. Remediation: Failing controls by owner and age; time to fix.
4. Personnel: Training completion; MFA adoption; onboarding/offboarding tasks.
5. Trend: Daily snapshot history of pass rate by framework.

Filters: Date range, Severity, Status, Team or owner, Environment or asset group.

Output: Build the dashboard if you have permission; otherwise provide the exact
questions, SQL, model definitions, and layout. Include caveats for any metric
that cannot be calculated from the available data.

How do you sync Drata data into a database or warehouse?

For dashboards that need history and reliability, land Drata findings and metadata in a database first, then connect Metabase to that database.

Connector options

  • Managed ETL — use a connector when one covers the objects you need.
  • Custom pipeline — use the Drata Public API for control over fields, snapshot cadence, and refresh schedule.
  • MCP + CSV — use this for quick exploration and one-off slices.

Sync monitors, controls, personnel, and vendors with Fivetran's Drata connector or API scripts. Snapshot monitor results daily — like every compliance platform, Drata reports current state.

Notes

  • Decide the snapshot cadence first (daily is the norm for security data) — posture trends only exist if you build the history.
  • Land raw entity tables first, then build clean Metabase models on top.
  • Normalize framework, control, status, owner, and tested-at fields.

How should you model Drata data in Metabase?

Core tables

TableGrainKey columns
drata_monitor_results_daily one row per monitor per day snapshot_date, monitor_id, control_id, framework, status, owner
drata_controls one row per control id, name, frameworks, is_ready, owner
drata_personnel one row per person person_id, department, training_complete, mfa_enrolled, device_compliant, offboarded_at

Modeling advice

  • Build a clean control_results_daily model with common columns across tools, so multi-source dashboards don't fork definitions.
  • Separate entity tables (assets, users, controls) from findings, events, and daily snapshot tables.
  • Exclude test environments and suppressed or accepted-risk items from headline metrics; keep them in a labeled register instead.
  • Use stable IDs for asset, user, and finding joins; display names change.

Which Drata metrics should you track in Metabase?

MetricDefinitionNotes
Control pass rate Passing controls over monitored controls, per framework. Use the latest test per control; snapshot daily.
MFA adoption rate Active users with a strong second factor enrolled. Report the factor mix, not just the total.
Vulnerability SLA compliance Findings remediated within policy windows. A standing control in most frameworks.
Open critical vulnerabilities Open criticals — the number auditors ask about first. Keep the accepted-risk register separate and labeled.

What SQL powers Drata dashboards in Metabase?

These assume a cleaned analytical model in a warehouse (PostgreSQL dialect). Adjust table and column names to match your pipeline.

Control pass rate by framework PostgreSQL

Latest test result per control, rolled up per framework.

WITH latest AS (
  SELECT DISTINCT ON (control_id, framework)
    control_id, framework, status
  FROM control_results_daily
  ORDER BY control_id, framework, snapshot_date DESC
)
SELECT
  framework,
  COUNT(*) AS monitored_controls,
  COUNT(*) FILTER (WHERE status = 'passing') AS passing,
  ROUND(
    100.0 * COUNT(*) FILTER (WHERE status = 'passing')
    / NULLIF(COUNT(*), 0), 1
  ) AS pass_rate_pct
FROM latest
GROUP BY framework
ORDER BY pass_rate_pct ASC;
Controls failing for 14+ days, with owner PostgreSQL

The remediation queue with accountability attached.

WITH history AS (
  SELECT
    control_id,
    framework,
    owner,
    MAX(snapshot_date) FILTER (WHERE status = 'passing') AS last_passed_on,
    MIN(snapshot_date) FILTER (WHERE status = 'failing') AS first_failed_on
  FROM control_results_daily
  WHERE snapshot_date >= CURRENT_DATE - INTERVAL '90 days'
  GROUP BY control_id, framework, owner
  HAVING BOOL_AND(status = 'failing') FILTER (
    WHERE snapshot_date >= CURRENT_DATE - INTERVAL '14 days'
  )
)
SELECT
  control_id,
  framework,
  owner,
  -- The current streak starts the day after the most recent pass, so a
  -- control that failed, was fixed, then broke again isn't aged from the
  -- older failure. Never passed in the window: fall back to first failure.
  COALESCE(last_passed_on + 1, first_failed_on) AS failing_since,
  CURRENT_DATE - COALESCE(last_passed_on + 1, first_failed_on) AS days_failing
FROM history
ORDER BY days_failing DESC;
Personnel compliance by department PostgreSQL

Training and MFA completion from people records.

SELECT
  department,
  COUNT(*) AS people,
  ROUND(100.0 * COUNT(*) FILTER (WHERE training_complete)
    / NULLIF(COUNT(*), 0), 1) AS training_pct,
  ROUND(100.0 * COUNT(*) FILTER (WHERE mfa_enrolled)
    / NULLIF(COUNT(*), 0), 1) AS mfa_pct
FROM people_compliance
WHERE offboarded_at IS NULL
GROUP BY department
ORDER BY mfa_pct ASC;

What are common mistakes when analyzing Drata in Metabase?

Syncing the raw security-event firehose into the warehouse. → Land findings, detections, entities, and daily rollups. Raw telemetry belongs in Drata or a security data lake; the warehouse is for trends and joins.
Reporting posture without snapshot history. → Compliance tools show current state. Without daily snapshots there is no trend line — and the trend is what leadership actually asks for.
Averaging pass rates across frameworks. → A control can map to several frameworks, and frameworks differ in size. Report each framework against its own controls.
Building dashboards from live MCP lookups only. → MCP is useful for exploration; durable dashboards need a database-backed model with history.

Related analytics

Related dashboards

Related integrations

FAQ

Does Metabase connect natively to Drata?
No. Metabase reads databases and warehouses. Sync Drata findings and metadata into a database first, or upload a CSV with the Metabase CLI, then build Metabase models and dashboards on top.
Should Metabase replace Drata?
No — they answer different questions. Drata is built for hands-on security work: triage, investigation, and enforcement. Metabase is where you build governed, shareable reporting on top of the same records — the cross-tool view for leadership and the board that no single vendor console covers — and join them with HR, asset, and business data.
Why do I need daily snapshots of compliance data?
Because compliance platforms report current state, not history. Without a daily snapshot table you can say "87% of controls pass today" but not whether that's up or down from last quarter — which is the question leadership actually asks. Snapshot pass/fail per control per day from day one.
Does a Metabase dashboard replace audit evidence?
No. Evidence collection and auditor workflows stay in Drata. The dashboard is the management layer: trend lines, owner accountability, and cross-framework rollups that help you walk into the audit already knowing the answer.