Appearance
AWS Security Hub Finding Triage
Purpose: Triage workflow for AWS Security Hub findings across all 7 Cirius AWS accounts.
Audience: Rory Console: AWS Management account (206820231356) → Security Hub
Overview
Security Hub aggregates findings from multiple sources across all 7 AWS accounts into the Management account. Cirius uses NIST 800-53 R5 as the primary posture standard, enabled org-wide.
Important: AWS Security Hub has no native HIPAA standard. For HIPAA-specific assessments use AWS Audit Manager with the HIPAA-Omnibus-Jan-2013 framework (also in Management account). Security Hub NIST 800-53 R5 covers the same security controls with broader coverage.
Accounts:
| Account | ID | Primary use |
|---|---|---|
| Management | 206820231356 | Org root — Security Hub aggregator |
| Backup | 863609217450 | Veeam backup targets |
| Dev | 040067931468 | Development |
| Identity | 414134953818 | IAM Identity Center |
| Logging | 038901680748 | CloudTrail, S3 archive, syslog VM |
| Networking | 238342914131 | Palo Alto firewall infrastructure |
| Prod | 807267566999 | DR workloads, Cloud PC |
Accessing Security Hub
- Sign into AWS Console as Rory's IAM Identity Center user:
https://d-xxxxxxxxxx.awsapps.com/start - Switch to the Management account (
206820231356) with SecurityAudit or similar role - Navigate to Security Hub → ensure region is us-east-1 (aggregation region)
- Findings → filter Record state = ACTIVE
Findings from all 7 member accounts roll up here via the org integration.
Finding Lifecycle
NEW (automated detection)
│
├─ Remediated → RESOLVED (update manually or via Config re-evaluation)
│
└─ Accepted risk → SUPPRESSED (document in risk-acceptance-register.md)Do not leave findings in NEW/ACTIVE indefinitely — active findings in Security Hub are direct audit evidence of unresolved controls.
Triage Workflow
Step 1 — Filter to actionable findings:
- Status: ACTIVE
- Severity: CRITICAL, HIGH (review MEDIUM monthly, LOW quarterly)
Step 2 — For each finding:
- Read the finding title and description — understand which control failed
- Click the finding → Resources tab — identify the specific resource (ARN)
- Determine which AWS account owns the resource — note the account ID
- Cross-reference with Terraform state:bashIf the resource is in Terraform state, the fix goes in Terraform. If not managed, import first.
cd ~/src/aws-infra terraform state list | grep <resource-name> - Check
compliance/risk-acceptance-register.md— is this already a documented accepted risk? - Remediate or suppress (below)
Step 3 — After remediation:
Wait up to 24 hours for Security Hub to re-evaluate. For faster re-evaluation:
- AWS Config → Rules → find the relevant rule → Actions → Re-evaluate
Severity Response SLAs
| Severity | Remediate By |
|---|---|
| CRITICAL | 7 days or add to risk-acceptance-register.md with justification |
| HIGH | 30 days |
| MEDIUM | 90 days (reviewed monthly) |
| LOW | Quarterly review |
Suppressing a Finding (Accepted Risk)
When a finding cannot be remediated (architectural limitation, compensating control in place):
- In Security Hub: finding → Actions → Suppress → add a note explaining why
- Document in
compliance/risk-acceptance-register.md:- Finding title
- Control ID (e.g., NIST 800-53 R5 / SC-28)
- Reason for acceptance
- Compensating controls in place
- Rory's written acceptance
- Review date
Never suppress a CRITICAL without a written entry in the risk acceptance register.
Common CRITICAL Findings and Resolutions
| Finding | Typical Cause | Resolution |
|---|---|---|
| S3 bucket server access logging should be enabled | New bucket created without logging config | Add logging block in Terraform S3 resource |
| CloudTrail should be enabled in all regions | New region used without CloudTrail | Enable via Terraform in CloudTrail stack in Logging account |
| Root account MFA should be enabled | MFA not configured | Enable MFA in root account (all 7) — break-glass accounts must have TOTP in Keeper |
| Root account should not have access keys | Root access keys exist | Delete root access keys immediately via IAM Console → root account |
| Security Hub should be enabled | Member account not onboarded | Enable via Terraform in aws-infra Security Hub module |
| VPC flow logs should be enabled | New VPC without flow log config | Add aws_flow_log resource in Terraform |
| IAM password policy should meet minimum requirements | Org-level password policy not set | Configure in IAM Identity Center settings |
| EBS volumes should be encrypted | New EC2 instance without encrypted EBS | Update Terraform to set encrypted = true and kms_key_id on all EBS volumes |
Integration With SecOps
The aws_security_hub_agent.py in ops-automation queries Security Hub every 4 hours and posts HIGH/CRITICAL findings to SecOps. The primary triage workflow is in SecOps — findings appear there with context from other agents.
Go directly to Security Hub console for:
- Mass remediation across many findings
- Investigation of a specific finding in detail
- Suppression with notes
- Verifying re-evaluation after a fix
AWS Audit Manager (HIPAA)
For HIPAA audit preparation:
- AWS Console → Management account → Audit Manager
- Assessments → find the HIPAA-Omnibus-Jan-2013 assessment
- Review controls with FAILED status
- Evidence is collected automatically from AWS Config rules — download evidence for the relevant controls for the audit PBC package
Audit Manager evidence maps directly to HIPAA control requirements. Use it alongside compliance/soc2-pbc-guide.md for audit prep.
Related Documents
compliance/risk-acceptance-register.md— accepted risk documentationaws/aws-network-topology.md— AWS account and network overviewrunbooks/aws-account-access.md— how to switch between AWS accountsrunbooks/aws-iam-identity-center.md— IAM Identity Center operationscicd/oidc-authentication.md— how GitHub Actions authenticate to AWS