Built for you

For security data analysts
who own the dataset behind the metric, the dashboard, and the audit answer

Security data analysts inside vulnerability management, AppSec, SecOps, and GRC functions own the dataset, the schema, the cohort logic, the longitudinal read, and the export discipline that produce the metrics the CISO reports, the dashboards the steering committee reads, the audit-evidence packs the surveillance auditor pulls, and the trend lines the operating committee debates. SecPortal pairs a typed findings record with CVSS 3.1 vector, severity band, status state, owner-of-record, source archetype, asset reference, and override register, scan execution records with module set and a structured diff endpoint, an append-only activity log with actor and timestamp on every state change, exception records with structured decision chains, retest records linked to the original finding, scanner imports for Nessus and Burp Suite and custom CSV, compliance tracking that maps findings to frameworks, AI-assisted reporting, role-based access control, and plan-driven CSV export of the activity trail, so the analyst queries one record per question rather than reconciling five exports per metric.

No credit card required. Free plan available forever.

A typed dataset, a structured diff, and an activity trail an analyst can actually query

Security data analysts inside vulnerability management, AppSec, SecOps, and GRC functions own the dataset, the schema, the cohort logic, the longitudinal read, and the export discipline that produce the metrics the CISO reports, the dashboards the steering committee reads, the audit-evidence packs the surveillance auditor pulls, and the trend lines the operating committee debates. The work runs against findings consolidation, CVSS distribution, SLA aging cohorts, scan-over-scan deltas, exception register cohorts, and per-source archetype slices, and the analyst typically reconstructs each cohort from a scanner CSV, a ticketing export, a spreadsheet, a shared drive, and a meeting minute. Every cycle the same reconciliation happens, the same data-quality gap persists, and the same leadership number disagrees with the same operator number.

SecPortal gives security data analysts one workspace for a typed findings record with CVSS 3.1 vector and severity band and status state, an append-only activity log with actor and timestamp on every state change, a structured scan diff endpoint that returns new, fixed, and unchanged findings between any two executions, structured exception records with linked finding and expiry, retest records paired to the original finding, cross-source consolidation with merge identity, cross-framework compliance mapping, AI assisted reporting against the live dataset, role-based access control, and plan-driven CSV export of findings, activity, and exception records. The analyst queries one record per question rather than reconciling five exports per metric, the leadership number reconciles with the operator number, and the longitudinal read survives staff rotation because the schema carries the discipline.

Dataset capabilities security data analysts use day to day

Typed findings record with CVSS, severity, status, owner, and source

Every finding carries the parsed CVSS 3.1 vector, the calculated base score, the severity band, the status state (open, in_progress, resolved, verified, reopened), the named owner, the engagement, the engagement type, the source archetype (external scan, authenticated scan, code scan, manual entry, bulk import), the asset reference, the framework mapping, and the override decision link on the record. The cohort query is a structured query against a typed schema rather than a regex pass over scanner exports.

Append-only activity log with actor, entity, timestamp, and action

Every finding update, scan run, retest run, exception decision, evidence upload, override change, comment, credential lifecycle event, document upload, and team change is recorded with the actor, the entity, the timestamp, and the action. Plan retention covers 30, 90, or 365 days, and CSV export of the trail is available. The longitudinal queue-shape query reads from the same record the live operations runs on.

Scan execution records with structured diff endpoint

Each scan execution is its own record with target, module set, started-at, completed-at, and per-module result. The diff endpoint returns new findings, fixed findings, and unchanged findings between any two executions on the same target, identifies which modules ran in one execution but not the other, and annotates every recurring finding with its current override status. Scan delta cohorts read from one query rather than a hand-built spreadsheet.

Structured exception records with linked finding and expiry

Exceptions are captured on the same engagement as the finding they cover with linked finding, severity, compensating controls, residual likelihood, residual impact, business rationale, named approver, expiry date, and review cadence. The exception register reads as a queryable cohort: count by control, count by expiry window, count by residual likelihood and impact, and count by source archetype of the underlying finding.

Retest records paired to the original finding rather than as new records

When a fix is verified, the retest run pairs to the same finding rather than opening a new record. The aging clock keeps running on the original capture date, and the activity log records who verified what against which retest run with timestamp and rationale. The cohort of verified-by-retest finds is distinct from the cohort of resolved-by-claim finds because the record carries the distinction.

Cross-source consolidation with merge identity

When two scanners flag the same hostname, URL, parameter, method, CWE, or CVE on the same asset, the merge collapses them into the canonical entry with both source links preserved on the record. The deduplicated count, the canonical-entry count, the raw-source count by scanner, and the merged-cluster count read from the same schema, so the dashboard count and the operator count reconcile.

Compliance mapping as a per-finding attribute, not a separate spreadsheet

Compliance tracking maps findings, controls, and engagement records against ISO 27001 Annex A, SOC 2 Trust Services Criteria, PCI DSS requirements, NIST SP 800-53 control families, NIST CSF 2.0 functions, Cyber Essentials, and the other supported frameworks on the same record. The per-framework slice runs as a record query rather than a parallel evidence pack rebuilt each cycle.

Plan-driven CSV export of findings, activity, and the engagement record

CSV export of the findings table, the activity table, the exception register, and the engagement record is available so the per-audience export is a column projection against a stable schema rather than a fresh transformation pipeline each cycle. The auditor pack, the cyber insurance pack, the parent-company GRC pack, and the regulator pack regenerate from the same workspace.

AI-assisted reporting that drafts from the live dataset

AI-assisted reporting regenerates executive summaries, programme-status writeups, remediation roadmaps, and compliance summaries from the live finding, scan, and exception state on demand. The analyst edits drafts rather than writes from blank, and the steering committee deck reads from the same record the cohort queries return.

Analytical disciplines that hold up between cycles

A cohort definition that survives the next cycle operates on a small set of habits. SecPortal makes each one a record-level query rather than an analyst tribal-knowledge convention.

  • Treat the finding record schema as the source of every metric. Open by severity, mean time to remediate by severity band, SLA breach by source archetype, CVSS distribution by engagement, and exception count by control all read from one query rather than five reconciled exports. The dashboard number, the operator number, and the leadership number reconcile because they share one schema.
  • Preserve the scanner-supplied CVSS alongside any environmental and temporal recalibration on the engagement record. The supplied-severity distribution and the recalibrated-severity distribution are two defensible cohorts rather than one histogram nobody trusts, and the recalibration rationale lives in the activity log with actor and timestamp.
  • Run the deduplicated count as a structured query against merge identity (hostname, URL, parameter, method, CWE, CVE) rather than as a hand-pruning exercise. The dashboard count, the operator count, and the engineering count reconcile because the merge identity travels on the record.
  • Read the longitudinal queue shape from the activity log rather than from reconstructed scanner exports. The cycle-over-cycle open, close, reopen, and exception decisions sit on one record with timestamps, so the audit committee timeline does not rebuild from chat history each surveillance cycle.
  • Anchor every cohort definition to the record schema rather than to a regex against export filenames. The per-source-archetype slice, the per-engagement-type slice, the per-framework slice, and the per-owner slice all defend in front of leadership because the source identity is a typed field rather than a filename convention.
  • Surface data-quality completeness as part of the cohort query rather than as a silent exclusion. Findings missing the CVSS vector, findings missing the CWE, findings missing the named owner, findings missing the asset reference, findings missing the framework mapping, and findings stuck in in_progress without an evidence attachment all read from a structured query rather than from analyst tribal knowledge.
  • Run the SLA aging cohort against the timestamped record rather than against a hand-built spreadsheet. Days-open, days-past-deadline, days-since-last-state-change, and days-since-last-evidence-attachment all read from the activity log, and the cohort definition survives staff rotation because the schema carries the discipline.
  • Treat exception expiry as a query against the structured exception register rather than as a calendar reminder nobody renewed. The exception that should renew this cycle, the exception that should retire this cycle, and the exception whose underlying finding got reopened all surface from one cohort query.

From cohort question to per-audience pack on one engagement record

The analyst loop runs as pull, calibrate, validate, deliver, and audit. SecPortal runs that loop against the typed record so the cohort answer, the deck the leadership reads, and the CSV pack the auditor pulls all share one source.

  1. 1Open an engagement per analytical workstream (the cycle metric pack, the audit-committee longitudinal read, the steering committee cohort review, the insurance renewal data request, the parent-company GRC roll-up, the regulator data response, the data-quality completeness sweep). Attach the cohort definitions, the query templates, the metric calibration notes, the per-audience export specification, and the analytical glossary as documents on the engagement record. The analytical programme reads from one workspace rather than from a folder of personal notebooks.
  2. 2Pull the cohort from the typed findings record. Severity band, status state, owner-of-record, engagement type, source archetype, asset reference, CVSS vector, framework mapping, and override link are all structured fields on the record. The cohort query returns the row count, the per-band counts, the per-source counts, the per-engagement counts, and the per-framework counts in one shape rather than five reconciled exports.
  3. 3Read the scan-over-scan delta from the diff endpoint rather than from a hand-built export. The diff returns new findings, fixed findings, unchanged findings, the module coverage delta, and the override-annotated change set between any two scan executions on the same target. The week-over-week new finding count, the fixed finding count, and the module coverage drift all read from one query.
  4. 4Read the longitudinal cycle-over-cycle shape from the activity log. Every state change, every retest run, every exception decision, every evidence upload, and every override change carries the actor, the entity, the timestamp, and the action. The audit-committee timeline, the SLA aging cohort, the exception expiry queue, and the data-quality completeness sweep read from the same timestamped record.
  5. 5Run the data-quality completeness pass as part of the cohort query. Findings missing the CVSS vector, findings missing the CWE, findings missing the named owner, findings missing the asset reference, findings missing the framework mapping, findings stuck in in_progress without an evidence attachment, and findings without a retest after the engineering claim of fix all surface as structured queries with explicit completeness flags rather than as silent exclusions.
  6. 6Generate the per-audience CSV pack from the stable record schema. The auditor pack, the cyber insurance carrier pack, the parent-company GRC pack, the sector regulator pack, the steering committee data pack, and the operating committee data pack all derive from the findings table, the activity table, the exception register, and the engagement record. The per-audience pack is a column projection rather than a fresh transformation pipeline.
  7. 7Hand the analytical narrative to AI-assisted reporting on the same engagement record the cohort query reads from. Executive summaries, programme-status writeups, remediation roadmaps, and compliance summaries draft from the live data, so the leadership deck and the operator queue read the same numbers and the analyst spends the cycle on calibration rather than copy-paste.
  8. 8Route analytical access through role-based access control and multi-factor authentication. Security data analysts can be scoped to the engagements they need, the audit observers read the leadership view without seeing the full operational backlog, and the steering committee participants read the regenerated deck rather than the raw record. The access model is enforced on the workspace rather than asserted in a kickoff slide.

Where the analyst view connects to the rest of the workspace

Most security data analyst teams adopt SecPortal in three phases: bring scanner output, pentest findings, and manual entries onto one typed record so the cohort query is a record query rather than a regex pass over filenames; layer in the activity-log and the scan diff endpoint so the longitudinal read survives staff rotation and tool migration; then operationalise the exception register and the data-quality completeness sweep so the audit-committee timeline reads from the same record the live operations runs on. The relevant feature, workflow, and research pages explain each phase in detail.

Where the analyst function hands off to the rest of the security team

The security data analyst sits inside a wider SecOps shape. The per-finding triage queue sits with the analyst tier, the rule-and-content lifecycle sits with the detection engineering tier, the programme plan sits with the security program manager, the vulnerability backlog sits with the vulnerability management programme, and the leadership readout sits with the CISO. SecPortal lets all five roles read from the same engagement record while running the cohort query, the rule replay, the programme milestone, the SLA enforcement, and the leadership deck against their own surface.

  • The per-finding triage queue that consumes the analyst cohort decisions sits on the SecPortal for SOC analysts page. The analyst signs off on the close decision and the data analyst reads the closed cohort against the SLA aging surface.
  • The detection-engineering tier that writes the rule against the technique the analyst cohort surfaces as a missed-coverage gap sits on the SecPortal for detection engineering teams page. The rule, the replay, and the post-deployment outcome all land on the same engagement record the data analyst queries the coverage cohort from.
  • The programme plan, the RAID log, and the cross-team RACI live with the SecPortal for security program managers page. The analyst cohort feeds the programme metric, and the programme metric feeds the steering committee narrative.
  • The vulnerability backlog, the SLA enforcement, and the prioritisation function live with the SecPortal for vulnerability management teams page. The analyst SLA aging cohort and the deduplicated count read from the same record the vuln-mgmt programme operates on.
  • The CISO and security leadership view that consumes the analyst metric pack sits on the SecPortal for CISOs and security leaders page. The board cohort, the audit committee timeline, and the operating committee trend line all read from the same record the analyst pulls the cohort query against.
  • The GRC and audit-evidence side that consumes the per-framework slice sits on the SecPortal for GRC and compliance teams page. The per-framework cohort, the exception register, and the activity-log timeline all satisfy multiple audit packs from one record.

SecPortal is built for security data analysts who want one platform for the full pull-calibrate-validate-deliver-audit loop: a typed finding record with CVSS 3.1 vector and severity band and status state, an append-only activity log with actor and timestamp, a structured scan diff endpoint returning new and fixed and unchanged findings between any two executions, structured exception records with linked finding and expiry, retest records paired to the original finding, cross-source consolidation with merge identity, cross-framework compliance mapping, AI-assisted reporting against the live dataset, role-based access control, multi-factor authentication, and plan-driven CSV export of findings, activity, and exception records. The leadership number reconciles with the operator number, the cohort definition survives staff rotation, and the analyst spends the cycle on calibration rather than copy-paste.

If your function sits closer to the export pipeline that ships the typed record into the enterprise data warehouse and the BI layer than to the cohort query inside the workspace, the sister page SecPortal for security data engineering teams covers the documented export contract, the schema contract per export class, the warehouse asset dimension source, the named-service-account discipline, and the data classification cadence the warehouse loader runs against on the same operational record the analyst queries cohorts from.

The problems you face

And how SecPortal solves each one.

Every quarterly board metric is rebuilt from a fresh export. Open findings by severity comes from one scanner CSV, mean time to remediate comes from a ticketing export, SLA breach count comes from a spreadsheet, CVSS distribution comes from a SAST dashboard, and exception count comes from a shared drive. The analyst spends three days reconciling totals before the deck can start

Findings consolidate on one record with the CVSS 3.1 vector, the parsed base score, the severity band, the status state (open, in_progress, resolved, verified, reopened), the engagement, the source archetype (external scan, authenticated scan, code scan, manual entry, bulk import, third-party pentest), the named owner, the SLA window, the override decision link, the asset reference, the framework mapping, and the activity trail in one structured shape. Open by severity, MTTR by severity band, SLA breach by source archetype, CVSS distribution by engagement, and exception count by control all read from one query rather than five reconciled exports.

Deduplicated count and raw count never reconcile, so the dashboard shows one number, the scanner shows another, and the engineering team defends a third. The leadership view does not match the operator view, and the analyst becomes the human reconciliation layer between them

When two scanners flag the same hostname, URL, parameter, method, CWE, or CVE on the same asset, the merge collapses them into the canonical entry with both source links preserved on the record. The deduplicated count, the canonical-entry count, the raw-source count by scanner, and the merged-cluster count all read from the same record. The dashboard number, the operator number, and the engineering number reconcile because they share one schema rather than three.

CVSS distribution reads as a meaningless histogram because scanner-supplied critical against an internal admin panel behind a VPN sits next to scanner-supplied critical against an internet-facing login form, and the analyst cannot defend the recalibrated cohort against the original supplied cohort without reconstructing both from chat history

Every finding stores the original scanner-supplied CVSS 3.1 vector alongside any environmental and temporal recalibration done on the engagement record. The activity log records the recalibration with the actor, the timestamp, and the rationale. The analyst can produce one query that returns supplied-severity distribution, recalibrated-severity distribution, and the per-recalibration audit trail without rebuilding either cohort by hand. The CVSS slice is a defensible cohort rather than a histogram nobody trusts.

SLA aging analysis is a manual spreadsheet exercise. The analyst exports the open queue, manually classifies each finding into an SLA bucket, computes the days-past-deadline by hand, and reproduces the cohort each cycle because nothing in the source tools persists the bucket assignment

Findings carry the severity-driven SLA window and the open or in_progress or resolved or verified or reopened state from the moment they land. Days-open, days-past-deadline, days-since-last-state-change, and days-since-last-evidence-attachment all read from the timestamped record. The SLA aging cohort runs as a structured query against the workspace rather than as a hand-built spreadsheet, and the cohort definition survives staff rotation and tool migration because the record carries the discipline rather than a tabbed spreadsheet.

Scan-over-scan deltas live in the analyst head. Every recurring scan run feels like a new attack surface to leadership because the new findings, fixed findings, unchanged findings, and module coverage delta between this run and the prior baseline are reconstructed in conversation each cycle

The scan comparison and diff endpoint returns new, fixed, and unchanged findings between any two scan executions on the same target, identifies which scanner modules ran in one execution but not the other, and annotates every recurring finding with its current override status. The analyst pulls scan delta cohorts directly from the workspace rather than rebuilding them in a spreadsheet. The week-over-week new finding count, the fixed finding count, the module coverage drift, and the override-annotated change set read from one query.

The audit committee asks for a longitudinal read across the cycle: how many findings opened, how many closed, how many reopened, how many got an exception, how many came in from each source archetype, and how the queue changed shape. The analyst rebuilds the timeline from scanner exports and ticket comments each surveillance cycle

The activity log records every finding update, scan run, retest run, exception decision, evidence upload, override change, comment, credential lifecycle event, document upload, and team change with the actor, the entity, the timestamp, and the action. Plan retention covers 30, 90, or 365 days, and CSV export keeps the trail reproducible at audit time. The longitudinal queue-shape read runs against the same record the live operations runs on rather than against a reconstruction the analyst rebuilt by hand.

Cross-source archetype analysis (external vs authenticated vs code scan vs third-party pentest vs manual entry vs bulk import) is hard to defend because the source is encoded in the file name rather than on the record, and the analyst writes ad-hoc regex against export filenames each cycle to slice the cohort

Each finding carries the engagement, the engagement type, the scanner module or import source, and the import method on the record. External scan findings, authenticated DAST findings, SAST findings, SCA findings, manually logged third-party pentest findings, Nessus and Burp Suite imports, and custom CSV imports all carry a structured source identity. The per-source-archetype slice is a record query rather than a regex against filenames, so the per-source cohort defends in front of leadership rather than collapsing under questions.

Exception register analysis is impossible because exceptions live in a narrative document, the decision rationale lives in a meeting minute, the linked finding is named by free text, the residual risk is asserted by paragraph, and the expiry is tracked in a calendar reminder nobody renewed

Exceptions are captured as structured records on the same engagement as the finding they cover, with linked finding, severity, compensating controls, residual likelihood, residual impact, business rationale, named approver, expiry date, and review cadence. The exception register reads as a queryable cohort: count by control, count by expiry window, count by residual likelihood and impact, count by source archetype of the underlying finding. The analyst defends the exception posture in one query rather than narrative excavation.

CSV exports for the auditor, the cyber insurance carrier, the parent-company GRC team, and the sector regulator each need a slightly different shape, and the analyst writes a fresh export script each cycle because the source tool does not let the analyst control the column set

CSV export of the activity trail is plan-driven and structured to the record schema. The findings table, the activity table, the exception register, and the engagement record are all available in their native shape, so the per-audience export is a column projection against a stable schema rather than a fresh transformation pipeline each cycle. The auditor pack, the insurance pack, the GRC pack, and the regulator pack regenerate from the same workspace.

Data quality is a tribal-knowledge discipline. The analyst knows that some findings are missing CVSS vectors, some are missing CWE references, some are missing the asset reference, some are missing the owner-of-record, and some are missing the framework mapping, and the cohort queries silently exclude those rows because the analyst has no way to surface the completeness gap

The structured finding record makes data-quality completeness a record-level query. Findings missing the CVSS vector, findings missing the CWE, findings missing the named owner, findings missing the asset reference, findings missing the framework mapping, findings stuck in in_progress without an evidence attachment in the activity window, and findings without a retest after the engineering claim of fix all surface as a structured query rather than as a silent silent-exclusion bias. The dataset reads with its own completeness audit attached.

Query the security programme from one record

A typed findings record with CVSS, severity, status, owner, source archetype, and asset reference; a structured scan diff endpoint; an append-only activity log; structured exception records; retest records paired to original findings; cross-framework compliance mapping; and plan-driven CSV export, on one workspace. Free plan available.

No credit card required. Free plan available forever.