Skip to main content

CSP Finding Schema Reference

Last Updated: 2026-02-26 Purpose: Maps each cloud provider's native security finding fields to the cspm-aggregator normalized Finding struct. Used to validate normalizer correctness and track API schema drift.


Normalized Finding Struct

FieldTypeSource: AWSSource: AzureSource: GCP
finding_idstringId (ARN)id (ARM path)name (resource path)
finding_id_shortstringSHA-256 dedupe hashSHA-256 dedupe hashSHA-256 dedupe hash
cspstring"aws""azure""gcp"
account_idstringAwsAccountIdsubscriptionId (parsed from path)projects/{id} (parsed from resourceName)
resource_idstringResources[0].IdresourceDetails.IdresourceName
resource_typestringResources[0].TyperesourceDetails.ResourceTypeparsed from resourceName
regionstringRegion (auto-populated)parsed from resource (often empty)parsed from resourceName (zones/locations/regions)
titlestringTitledisplayNamecategory
descriptionstringDescription (max 1024)metadata.descriptiondescription
severityenumSeverity.Labelmetadata.severity (Critical/High/Medium/Low/N/A)severity (CRITICAL/HIGH/MEDIUM/LOW/UNSPECIFIED)
statusenumWorkflow.Status mappedstatus.code mapped (Unhealthy=ACTIVE)state mapped (ACTIVE/INACTIVE) + mute override
finding_classenumderived from Types[] + ProductArnMISCONFIGURATION (default for assessments)findingClass (direct mapping)
control_idstringProductFields.ControlId or GeneratorIdname (assessment GUID)category
standardstringparsed from ProductFields.StandardsArn"MCSB" (default)compliances[0].standard or "GCP-SHA"
compliance_standards[]stringCompliance.AssociatedStandards parsedmetadata.categories with MCSB prefixcompliances[] (standard + version)
remediation_urlstringRemediation.Recommendation.Urlmetadata.remediationDescriptionnextSteps (text)
risk_scorefloat64Criticality (0-100)risk.level mapped (High=80, Med=50, Low=20)attackExposure.score
ai_workloadboolkeyword detection in title/typekeyword detection + resource typevertexAi or notebook presence + keywords
first_seentimeFirstObservedAt (fallback: CreatedAt)status.firstEvaluationDatecreateTime
last_seentimeLastObservedAt (fallback: UpdatedAt)status.statusChangeDateeventTime

AWS Security Hub (ASFF)

Schema Version: 2018-10-08 (unchanged since launch) API: securityhub.GetFindings

Key Fields

ASFF FieldTypeNotes
IdstringProduct-specific finding identifier (ARN)
AwsAccountIdstring12-digit AWS account ID
AwsAccountNamestringAuto-populated (Nov 2023+), NOT updatable
TitlestringMax 256 chars
DescriptionstringMax 1024 chars
Severity.LabelenumINFORMATIONAL, LOW, MEDIUM, HIGH, CRITICAL
Severity.Normalizedint0-100 (deprecated, use Label)
Severity.OriginalstringNative severity from source product
Compliance.StatusenumPASSED, WARNING, FAILED, NOT_AVAILABLE
Compliance.SecurityControlIdstringCross-standard control ID (e.g., IAM.1)
Compliance.AssociatedStandardsarrayStandards that triggered this finding
Workflow.StatusenumNEW, NOTIFIED, SUPPRESSED, RESOLVED
RecordStateenumACTIVE, ARCHIVED
Resources[]arrayMax 32 items; Type, Id, Region, Tags, Details
GeneratorIdstringComponent that generated the finding
ProductArnstringARN of source product
ProductFieldsmapSolution-specific metadata (ControlId, StandardsArn, etc.)
Remediation.Recommendation.UrlstringLink to remediation docs
FirstObservedAttimestampWhen issue was first observed
LastObservedAttimestampWhen issue was most recently observed
DetectionobjectNEW Dec 2024 — GuardDuty Extended Threat Detection attack sequences

Severity Mapping

LabelNormalized RangeAuto-set
INFORMATIONAL00
LOW1-391
MEDIUM40-6940
HIGH70-8970
CRITICAL90-10090

Standard ARN Patterns

StandardARN Contains
FSBPaws-foundational-security-best-practices
CIS v1.2cis-aws-foundations-benchmark/v/1.2.0
CIS v3.0cis-aws-foundations-benchmark/v/3.0.0
CIS v5.0cis-aws-foundations-benchmark/v/5.0.0 (Oct 2025)
PCI DSS v3.2.1pci-dss/v/3.2.1
PCI DSS v4.0.1pci-dss/v/4.0.1 (Dec 2024)
NIST 800-53nist-800-53/v/5.0.0
NIST 800-171nist-800-171/v/2.0.0 (May 2025)

Changes Since Mid-2025

  • Detection object — GuardDuty attack sequence graph (actors, endpoints, signals)
  • CodeRepository resource type — Inspector code repo scanning (Aug 2025)
  • CIS v5.0.0 (40 controls), PCI DSS v4.0.1, NIST 800-171 Rev 2 standards
  • No Bedrock/Q dedicated resource types (AI findings via GuardDuty ProductArn)
  • WorkflowState deprecated (use Workflow.Status)
  • Network object retired (use Action)

Azure Defender for Cloud

Stable API: 2020-01-01 Preview API: 2025-05-04-preview (adds risk object) Resource Graph Table: securityresources where type == "microsoft.security/assessments"

Key Fields

FieldTypeNotes
idstringFull ARM resource ID
namestringAssessment GUID
properties.displayNamestringRecommendation title
properties.status.codeenumHealthy, Unhealthy, NotApplicable
properties.status.firstEvaluationDatedatetimeRequires $expand=statusEvaluationDates or ARG
properties.status.statusChangeDatedatetimeLast status transition
properties.metadata.severityenumLow, Medium, High, Critical (2024+)
properties.metadata.descriptionstringRecommendation description
properties.metadata.remediationDescriptionstringFix steps
properties.metadata.categoriesarrayCompute, Networking, Data, IdentityAndAccess, IoT, AppServices, Container
properties.metadata.threatsarrayaccountBreach, dataExfiltration, elevationOfPrivilege, etc.
properties.metadata.userImpactenumLow, Moderate, High
properties.metadata.implementationEffortenumLow, Moderate, High
properties.resourceDetails.IdstringTarget resource ARM ID
properties.resourceDetails.ResourceTypestringARM resource type
properties.resourceDetails.sourceenumAzure, OnPremise, OnPremiseSql, Aws, Gcp
properties.riskobjectNEW 2025-05-04-preview — attack path context

Severity Values

ValueSinceNotes
LowLaunchMinor issues
MediumLaunchModerate risk
HighLaunchSignificant risk
Critical2024Immediately exploitable, high-impact (CVSS 9.0+)
N/ALaunchNot applicable — normalize to LOW

Changes Since Mid-2025

  • Critical severity level added (2024, now established)
  • risk object — attack path graph, risk factors, risk level (2025-05-04-preview)
  • AI assessments — 20+ new recs for Azure AI Foundry, Bedrock, Vertex AI
  • MCSB v2 AI domain — 7 new controls (AI-1 through AI-7)
  • Multi-cloud resourceDetailssource: Aws and source: Gcp with native IDs
  • assessmentType enum expanded — BuiltInPolicy, DynamicBuiltIn, ManualBuiltIn, etc.
  • K8S alert resourceIdentifiers changed to native cloud IDs (Oct 2025)
  • SQL hardening — 80+ new recommendations (Feb 2026, Preview)

GCP Security Command Center

v1 API: securitycenter.googleapis.com/v1 v2 API: securitycenter.googleapis.com/v2 (adds /locations/{loc} in paths) CLI: gcloud scc findings list

Key Fields

FieldTypeNotes
namestringResource path (v1: org/src/finding, v2: org/src/loc/finding)
canonicalNamestringStable cross-version name
categorystringFinding category (e.g., PUBLIC_BUCKET_ACL)
severityenumCRITICAL, HIGH, MEDIUM, LOW, SEVERITY_UNSPECIFIED
stateenumACTIVE, INACTIVE
findingClassenum10 values (see below)
muteenumMUTED, UNMUTED, UNDEFINED
muteInfoobjectv2 only — static + dynamic mute records
resourceNamestringFull GCP resource name
descriptionstringHuman-readable description
nextStepsstringRemediation guidance (text)
createTimetimestampWhen finding was created in SCC
eventTimetimestampWhen triggering event occurred
compliances[]arrayStandard, version, control IDs
mitreAttackobjectMITRE ATT&CK tactics and techniques
vulnerability.cveobjectCVE details with CVSS v3
attackExposureobjectv2 — score, exposed resource counts, state
toxicCombinationobjectv2 — attack exposure score + related findings
chokepointobjectv2 — convergence of attack paths
securityPostureobjectv2 — posture drift details
vertexAiobjectv2 — Vertex AI dataset/pipeline context
notebookobjectv2 — Colab/Workbench notebook context
kubernetesobjectGKE context (pods, nodes, roles, bindings)

Finding Class Values (10 total)

ValueSourceNotes
FINDING_CLASS_UNSPECIFIEDDefault/unset
THREATETD, CTD, VMTD, AETDActive threats
VULNERABILITYSHA, Container scan, AgentlessSoftware CVEs
MISCONFIGURATIONSHA, GKE Posture, DSPMConfig weaknesses
OBSERVATIONCIEM, auditInformational
SCC_ERRORSCC internalService errors
POSTURE_VIOLATIONSecurity PostureDrift from posture (GA 2024)
TOXIC_COMBINATIONAttack pathCombined attack path (GA 2025)
SENSITIVE_DATA_RISKDSPMData risk (GA 2025)
CHOKEPOINTAttack pathAttack convergence point (GA 2025)

Changes Since Mid-2025

  • v2 API path format — adds /locations/{loc} segment
  • 4 new findingClass values — POSTURE_VIOLATION, TOXIC_COMBINATION, SENSITIVE_DATA_RISK, CHOKEPOINT
  • toxicCombination + chokepoint objects — composite attack path findings
  • attackExposure — risk scoring with exposed resource counts (GA 2025)
  • vertexAi + notebook objects — AI workload context
  • securityPosture — posture drift details
  • dataAccessEvents[] / dataFlowEvents[] — DSPM events
  • Agent Engine Threat Detection — 11+ new categories for AI agent runtime
  • Cloud Run Threat Detection — 16 runtime detectors (Preview)
  • AlloyDB misconfiguration detectors (GA 2025)
  • Compliance Manager — new standards: HIPAA, SOC2, CSA CCM, GDPR
  • Security marks no longer affect SHA detection (Apr 2025)

Normalized CSV Export Format

The normalized output includes all Finding struct fields as CSV columns. URLs are stored as plain strings — CSV handles them natively per RFC 4180.

finding_id,finding_id_short,csp,account_id,resource_id,resource_type,region,title,description,severity,status,finding_class,control_id,standard,compliance_standards,remediation_url,risk_score,ai_workload,cbu,tier,env_type,owner,first_seen,last_seen,asana_task_id,remediation_sla,delta_status,days_open

Severity Normalization Rules

CSPRaw ValueNormalized
AWSINFORMATIONALLOW
AWSLOW/MEDIUM/HIGH/CRITICALAs-is (uppercase)
AzureLow/Medium/High/CriticalUppercase
AzureN/A or emptyLOW
GCPSEVERITY_UNSPECIFIEDLOW
GCPLOW/MEDIUM/HIGH/CRITICALAs-is

Status Normalization Rules

CSPRaw ValueNormalized
AWSWorkflow.Status=NEW or NOTIFIED, RecordState=ACTIVEACTIVE
AWSWorkflow.Status=RESOLVEDRESOLVED
AWSWorkflow.Status=SUPPRESSEDSUPPRESSED
Azurestatus.code=UnhealthyACTIVE
Azurestatus.code=HealthyRESOLVED
Azurestatus.code=NotApplicableSUPPRESSED
GCPstate=ACTIVEACTIVE
GCPstate=INACTIVERESOLVED
GCPmute=MUTED (overrides state)SUPPRESSED