AWS Security Hub, Decoded
A deep, engineer-level walkthrough of how AWS Security Hub aggregates, normalizes, correlates, and automates response across every account and region in an AWS organization — internals, trade-offs, and the patterns that separate a noisy dashboard from a real detection-and-response backbone.
If you’ve already worked with GuardDuty, Inspector, Macie, IAM Access Analyzer, and Config, you’ve noticed the problem Security Hub exists to solve: every one of those services speaks its own dialect, ships its own console, and generates its own stream of alerts. A 200-account organization running five detection services produces five different noise floors that no single security engineer can watch at once. Security Hub is AWS’s answer — not a new detector, but a normalization and orchestration layer that sits above all of them. This walkthrough assumes you already understand what each underlying service does; the focus here is what happens once their findings hit Security Hub, how that pipeline is built internally, where it breaks under scale, and how mature security teams actually operate it in production.
AAdvanced Core Concepts
Skipping the basics — this is the model experienced engineers actually reason with when they design a Security Hub deployment.
The AWS Security Finding Format (ASFF) is the real product
Security Hub’s core contribution isn’t detection — it’s a schema. Every finding, whether it originates from GuardDuty, Inspector, Macie, a third-party tool like Prisma Cloud, or a custom Lambda function, is translated into the AWS Security Finding Format before it lands in Security Hub. ASFF defines a fixed set of top-level fields: SchemaVersion, Id, ProductArn, GeneratorId, Types, Severity, Resources, Compliance, Workflow, and RecordState, among others. Once you understand ASFF, you stop thinking of Security Hub as “a dashboard” and start thinking of it as a schema-enforced event bus for security telemetry — the same mental model you’d apply to a well-designed microservices contract.
Think of ASFF the way you’d think of a universal power adapter. GuardDuty, Inspector, and a third-party scanner are appliances built in different countries with different plugs. ASFF isn’t another appliance — it’s the adapter socket that lets every one of them plug into the same wall outlet (Security Hub), so the outlet only has to understand one plug shape, not fifty.
Findings vs. Insights vs. Standards — three different abstractions
Advanced users need to keep three Security Hub abstractions distinct, because they’re queried and billed differently. A finding is a single normalized event about a single resource at a single point in time. An insight is a saved query that groups findings by an attribute (for example, “EC2 instances with more than 3 critical findings”) and tracks how that group changes over time — insights are aggregation views, not new findings. A standard (like CIS AWS Foundations Benchmark, PCI DSS, or AWS Foundational Security Best Practices) is a curated rule set that Security Hub runs against your environment, each rule producing its own control-level findings with a pass/fail/warning outcome. Engineers who conflate insights with standards routinely misconfigure Security Hub’s compliance scoring.
Cross-account and cross-region aggregation are two independent axes
Security Hub scales along two orthogonal dimensions. Cross-account aggregation uses AWS Organizations: you designate a delegated administrator account, and every member account’s findings replicate into it automatically once membership is enabled — no per-account IAM role juggling required, unlike the pre-Organizations invite/accept model. Cross-region aggregation is a separate mechanism: Security Hub findings are regional by default, so a second feature, “finding aggregation,” lets you nominate one aggregation Region that pulls findings from every other enabled Region into a single linked view. Teams that only configure one axis end up with a false sense of centralized visibility — for example, org-wide aggregation in us-east-1 while workloads quietly generate findings in eu-west-1 that never get pulled in.
ASFF Normalization
Every product’s raw output is mapped into a fixed schema before storage — this is what makes cross-product correlation possible at all.
Delegated Administrator
One member account (not necessarily the Organizations management account) is granted authority to view and act on findings across the whole org.
Finding Aggregation Region
A single Region designated to pull read-only copies of findings from every other linked Region for a unified view.
Automation Rules
Declarative, no-Lambda rules that match on finding criteria and automatically mutate fields like severity, workflow status, or notes.
IInternal Working
What actually happens between “GuardDuty detects an anomaly” and “a finding shows up correlated with three other signals in your Security Hub console.”
Security Hub does not poll other services. Integrated AWS services push findings to Security Hub via an internal service-to-service API call the moment they’re generated — this is why GuardDuty findings typically appear in Security Hub within seconds, not minutes. Third-party and custom products instead call the public BatchImportFindings API directly, which is the same mechanism Security Hub exposes to you for custom detections written in Lambda.
Once a finding arrives, Security Hub runs it through a normalization and deduplication pipeline. Deduplication uses a composite key derived from ProductArn, GeneratorId, and the resource identifier — if the same underlying issue is reported again (say, GuardDuty re-emits an ongoing port-scan finding), Security Hub updates the existing finding’s UpdatedAt and Count fields rather than creating a duplicate record. This is why a single EC2 instance under sustained attack shows one finding with an incrementing count, not thousands of rows.
After deduplication, findings pass through your account’s active automation rules, which are evaluated in a defined priority order and can auto-suppress, auto-escalate severity, or auto-annotate before a human ever sees the finding. Only after this pipeline completes does the finding become queryable through the console, the Findings API, or — critically — through the Amazon EventBridge default event bus, which is how most production automation actually consumes Security Hub output.
graph LR
A[GuardDuty] -->|push| N[ASFF Normalization]
B[Inspector] -->|push| N
C[Macie] -->|push| N
D[Config Rules] -->|push| N
E[Third-Party / Custom via BatchImportFindings] -->|push| N
N --> DEDUPE[Deduplication Engine]
DEDUPE --> RULES[Automation Rules Engine]
RULES --> STORE[(Security Hub Finding Store)]
STORE --> EB[Amazon EventBridge]
STORE --> CONSOLE[Security Hub Console / API]
EB --> SOAR[SOAR / Lambda / Step Functions]
EB --> TICKET[Ticketing Integration]
Fig 1 — Finding ingestion pipeline from source product to downstream automation
Automation rules run at ingestion time, in account, before cross-account aggregation copies the finding to the delegated administrator. A rule that suppresses a finding in the member account means the delegated admin never sees it at all — not even as “suppressed.” Central visibility and per-account automation rules are in tension by design.
DData Flow & Finding Lifecycle
Every finding carries two independent state machines, and confusing them is one of the most common operational mistakes on a Security Hub team. RecordState is set by the producing service and is either ACTIVE or ARCHIVED — it reflects whether the underlying condition still exists (for example, GuardDuty archives a finding once the malicious IP stops communicating). Workflow.Status, by contrast, is a human/automation-managed field with four values — NEW, NOTIFIED, SUPPRESSED, and RESOLVED — and it reflects where the finding sits in your team’s response process, entirely independent of whether AWS still considers the condition active.
Ingestion
Finding arrives via push integration or BatchImportFindings; RecordState set to ACTIVE, Workflow.Status defaults to NEW.
Triage
Analyst or automation reviews the finding, sets Workflow.Status to NOTIFIED once a ticket or alert has been raised.
Response
Remediation is applied (manually or via Systems Manager Automation / Lambda triggered off the EventBridge event).
Closure
Workflow.Status set to RESOLVED by the responder, or SUPPRESSED if it’s accepted risk or a known false positive.
Archival
Independently, the source product flips RecordState to ARCHIVED once it no longer detects the underlying condition, regardless of Workflow.Status.
Compliance-standard findings follow a related but distinct lifecycle keyed on Compliance.Status (PASSED, FAILED, WARNING, NOT_AVAILABLE), which is recomputed on a schedule — typically every 24 hours or on resource change for Config-backed checks — rather than being event-driven like GuardDuty findings. This scheduling difference is why a fixed misconfiguration can take up to a day to show as PASSED in your compliance score even though the resource itself was corrected immediately.
TAdvantages, Disadvantages & Trade-offs
Advantages
- Single ASFF schema lets you build one downstream pipeline (SIEM, ticketing, SOAR) instead of one per security product.
- Native Organizations integration removes cross-account IAM role sprawl for aggregation.
- Automation rules provide no-code triage logic, reducing custom Lambda maintenance for simple routing decisions.
- Continuous compliance scoring against CIS, PCI DSS, NIST 800-53, and the AWS Foundational Security Best Practices standard without third-party GRC tooling.
Disadvantages / Trade-offs
- Security Hub only stores and forwards findings — it does not eliminate the need for a SIEM if you need long-term retention beyond 90 days or complex correlation logic.
- Per-finding-ingestion pricing means noisy detectors (especially Config-backed standards checks at scale) can produce a non-trivial bill if left unmonitored.
- Automation rules evaluate per-account before aggregation, so org-wide suppression logic must be deployed consistently everywhere, typically via StackSets — a single missed account breaks the model.
- Not a real-time stream in the strictest sense for compliance checks, which run on a scan cadence rather than continuously.
PPerformance & Scalability
At organization scale — hundreds of accounts, multiple Regions, several enabled standards — the practical scalability question isn’t “can Security Hub handle the volume,” it’s “how do you keep the signal usable at that volume.” Security Hub itself is a managed, serverless service with no capacity you provision; the scaling concerns that matter operationally are API quotas, ingestion cost, and query performance at the aggregation point.
BatchImportFindings and BatchUpdateFindings both have request and item-count quotas per account per Region — a custom detector that fires per-object in an S3 bucket scan needs to batch findings (up to 100 per call) rather than calling the API once per object, or it will throttle well before it finishes a large scan. On the read side, the aggregation Region’s finding store becomes the hot path for every dashboard, insight, and SIEM poller in a large org; teams that query it with broad, unindexed filter combinations (for example, filtering only on free-text Description) see materially slower response times than teams that filter on indexed fields like ResourceType, SeverityLabel, or ComplianceStatus.
Netflix’s security engineering team, in public talks on their detection infrastructure, has described the same general pattern independent of specific tooling: centralized finding stores at scale require active suppression and grouping strategies, or analyst attention collapses under alert volume long before any API limit is hit. The lesson generalizes directly to Security Hub — the scalability bottleneck is almost always human triage capacity, not the service’s throughput.
HHigh Availability & Reliability
Security Hub is a Regional service built on AWS’s standard multi-AZ managed-service model — you don’t provision or manage redundancy yourself, and a single AZ failure within a Region has no visible effect on the service. The reliability question that actually requires design decisions is Regional and cross-account, not AZ-level.
Because finding aggregation designates exactly one Region as the aggregation target, that Region becomes a soft dependency for your org-wide view: if the aggregation Region has a service event, you temporarily lose the unified dashboard even though every source Region keeps ingesting and storing its own findings independently — nothing is lost, but visibility degrades to per-Region views until the aggregation Region recovers. The same logic applies to the delegated administrator account: if it’s suspended or removed from the Organization without a transition plan, aggregation breaks until a new delegated administrator is designated, which is an active configuration step, not automatic failover.
Reliability pattern used by mature security teams
Treat the delegated-administrator designation and aggregation-Region choice as infrastructure-as-code, not console clicks — deployed via StackSets or a Landing Zone Accelerator-style pipeline, so both can be reconstructed from source control if the account is ever compromised or replaced.
SSecurity of Security Hub Itself
Security Hub becomes one of the most sensitive services in your account inventory precisely because it aggregates evidence of everything else that’s gone wrong — which makes its own access control a high-value target. The delegated administrator account can view and, depending on permissions granted, act on findings across every member account, so an over-permissioned IAM principal in that single account effectively has organization-wide security visibility and remediation power.
The finer-grained control most teams under-use is resource-level and condition-based IAM policy on the Security Hub API itself — scoping securityhub:BatchUpdateFindings so that a given role can only change Workflow.Status, not Severity, prevents a compromised automation role from silently downgrading a critical finding rather than just closing tickets. Similarly, because findings frequently contain sensitive metadata — IP addresses, IAM principal ARNs, S3 object keys flagged by Macie — Security Hub data at rest is encrypted using AWS-owned or customer-managed KMS keys, and teams handling regulated data typically move to customer-managed keys specifically to control key rotation and access auditing independently of the default AWS-managed key policy.
Grant securityhub:BatchUpdateFindings only to the automation role that executes your remediation runbooks, and grant humans read access plus a narrowly scoped “add note / change workflow status” permission set — never blanket securityhub:* to an analyst role.
MMonitoring, Logging & Metrics
Security Hub’s own control-plane activity — enabling a standard, disabling an integration, updating a finding — is itself logged to AWS CloudTrail, which matters because it lets you detect an attacker attempting to suppress evidence of their own intrusion by disabling Security Hub or bulk-archiving findings, a real technique observed in incident response engagements. Treat CloudTrail events for securityhub:UpdateFindings, securityhub:DisableSecurityHub, and securityhub:BatchDisableStandards as security-relevant signals in their own right, not just audit trail noise.
For finding-level observability, the EventBridge integration is the real monitoring backbone: every finding creation and update emits an event on the default bus, which teams route into a SIEM (Splunk, Datadog, or Amazon Security Lake) for long-term retention and correlation beyond Security Hub’s own 90-day console retention window. Custom CloudWatch metrics aren’t natively emitted per finding, so teams that want dashboards of “findings by severity over time” typically build a small Lambda consumer off the EventBridge bus that writes custom metrics, rather than polling the Findings API on a schedule.
| Signal | Source | Primary Use |
|---|---|---|
| Finding created/updated events | EventBridge default bus | Real-time SOAR triggers, SIEM ingestion |
| Control-plane API calls | AWS CloudTrail | Detecting tampering with Security Hub itself |
| Compliance score changes | Standards subscription re-scan | Trend reporting, audit evidence |
| Custom detection metrics | Lambda consumer + CloudWatch | Dashboards, alarm thresholds |
DDeployment & Cloud Architecture
The production-grade deployment pattern for Security Hub in a multi-account organization follows a specific sequence: designate a delegated administrator account (commonly the same account used for GuardDuty and Config aggregation, often a dedicated “security-tooling” account rather than the Organizations management account itself); enable Security Hub organization-wide with auto-enable for new accounts so nothing joins the org unmonitored; choose and configure one finding-aggregation Region; and enable the standards (CIS, AWS FSBP, PCI DSS, NIST 800-53) centrally so every member account inherits the same compliance baseline rather than each team choosing its own.
graph TD
subgraph Org["AWS Organization"]
MGMT[Management Account]
MEM1[Member Account 1]
MEM2[Member Account 2]
MEM3[Member Account N]
end
MGMT -->|delegates admin| SEC[Security Tooling Account - Delegated Admin]
MEM1 -->|findings replicate| SEC
MEM2 -->|findings replicate| SEC
MEM3 -->|findings replicate| SEC
SEC -->|aggregates| REGION[Aggregation Region View]
SEC --> LAKE[Amazon Security Lake / SIEM]
SEC --> SOAR[Automated Remediation]
Fig 2 — Org-wide Security Hub deployment topology with a dedicated security tooling account
Teams running AWS Control Tower get much of this scaffolding pre-wired, since Control Tower’s Landing Zone natively provisions a delegated administrator pattern for its core security services. Increasingly, mature deployments also route Security Hub findings into Amazon Security Lake, which normalizes them further into the Open Cybersecurity Schema Framework (OCSF) alongside VPC Flow Logs, CloudTrail, and Route 53 resolver logs — extending correlation beyond what Security Hub’s own console can do, at the cost of an additional data pipeline to operate.
PDesign Patterns & Anti-patterns
Pattern
Automation-rule triage funnel: use automation rules purely for deterministic, low-risk decisions (auto-suppress known-safe findings, auto-tag by business unit), and reserve human-in-the-loop review for anything touching production-critical resources or high severity.
Why It Works
Keeps the automation layer auditable and simple, while ensuring judgment calls that carry real risk still get a human reviewer before closure.
Anti-pattern
“Enable everything, tune nothing” — turning on every available standard and every product integration org-wide without a suppression strategy, producing a finding volume so large that analysts stop opening the console entirely.
Consequence
Alert fatigue defeats the entire purpose of centralization; a critical finding becomes statistically indistinguishable from routine noise in the same feed.
Anti-pattern
Using Security Hub’s Workflow.Status as your only remediation tracking mechanism, with no ticketing integration — closure state lives only inside the console, invisible to broader engineering workflows and easily overwritten.
Consequence
No audit trail of who resolved what and why survives outside Security Hub itself, which becomes a compliance gap during an actual audit.
BBest Practices & Common Mistakes
Auto-enable for new accounts
Configure Security Hub, GuardDuty, and Config together so every new account joining the Organization is monitored from account creation, not after someone remembers to onboard it.
Route findings through EventBridge, not polling
Build automation and SIEM ingestion as EventBridge consumers rather than scheduled Findings API polls — lower latency and no risk of hitting read-side API quotas.
Ignoring RecordState vs. Workflow.Status
Filtering only on Workflow.Status = RESOLVED without checking RecordState leads teams to believe a threat is gone when the underlying condition may still be ACTIVE.
Treating compliance score as real-time
Standards checks run on a scan cadence; expecting instant score updates after a fix leads to false alarms during audits.
RReal-World & Industry Examples
Large regulated organizations — banks and healthcare providers with hundreds of AWS accounts across business units — commonly cite Security Hub’s PCI DSS and NIST 800-53 standard mappings as the mechanism that lets a central security team produce continuous, org-wide compliance evidence for auditors without manually collecting screenshots from every account owner each quarter, replacing what used to be a spreadsheet-driven, once-a-year exercise with a live, queryable score.
Amazon’s own internal security teams, in public re:Inforce presentations, have described using Security Hub’s custom finding ingestion (via BatchImportFindings) to fold proprietary internal detection tooling into the same ASFF pipeline as GuardDuty and Inspector — a pattern that generalizes well: any organization with an existing home-grown scanner can normalize its output into ASFF rather than building a second, parallel alerting system.
Media and streaming companies operating at Netflix- or Disney-scale infrastructure, where thousands of short-lived accounts and ephemeral workloads are the norm, lean heavily on the auto-enable-for-new-accounts pattern specifically because manual per-account security onboarding simply cannot keep pace with the rate of account creation in a modern microservices organization.
FFrequently Asked Questions
SSummary and Key Takeaways
Key Takeaways
- Security Hub’s core value is the ASFF schema — normalization is the product, not detection itself.
- RecordState (AWS-managed) and Workflow.Status (human/automation-managed) are independent lifecycles — conflating them is the single most common operational error.
- Cross-account aggregation (via a delegated administrator) and cross-Region aggregation (via a nominated aggregation Region) are two separate configuration axes that must both be deployed deliberately.
- Automation rules run per-account, at ingestion time, before cross-account replication — org-wide consistency requires infrastructure-as-code deployment, not manual per-account setup.
- At scale, the real bottleneck is analyst triage capacity, not API throughput — suppression strategy matters more than raw ingestion limits.
- EventBridge, not API polling, is the correct integration point for real-time automation and SIEM forwarding.
- Treat Security Hub’s own control-plane actions (disabling standards, bulk finding updates) as security-relevant CloudTrail signals in their own right.