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 Serverofficial · 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 CLIofficial

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)
MCPExample 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.

TerminalLoad 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_dailyone row per monitor per daysnapshot_date, monitor_id, control_id, framework, status, owner
drata_controlsone row per controlid, name, frameworks, is_ready, owner
drata_personnelone row per personperson_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 ratePassing controls over monitored controls, per framework.Use the latest test per control; snapshot daily.
MFA adoption rateActive users with a strong second factor enrolled.Report the factor mix, not just the total.
Vulnerability SLA complianceFindings remediated within policy windows.A standing control in most frameworks.
Open critical vulnerabilitiesOpen 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 frameworkPostgreSQL

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 ownerPostgreSQL

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 departmentPostgreSQL

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.