Production readiness — Section 13: Security Monitoring and Auditability
Confirmed: ECR image vulnerability scanning is not enabled (imageScanStatus is null on the latest image). musehub-releases S3 bucket has all Block Public Access settings disabled — likely intentional (serves public /install.sh) but needs explicit sign-off.
Most of this section (CloudTrail, GuardDuty, Security Hub, IAM Access Analyzer, AWS Config) is blocked pending the broader AWS read-access grant requested from Gabriel — musehub-infra is denied on all of these today.
Re-verified with full account access (the grant this section was blocked on has landed).
Already true, just unconfirmed before:
- CloudTrail — enabled both accounts, multi-region, log-file validation on
- GuardDuty — enabled both accounts
- ECR image scanning — actually enabled and working (
scanOnPush: true). The original claim that it "is not enabled" was wrong — the specific image checked at the time just hadn't been scanned yet.
Enabled today:
- Security Hub (default standards) — both accounts
- IAM Access Analyzer — both accounts
Deliberately still open:
- AWS Config — real ongoing cost + setup decisions (resource types, recorder role), not a quick toggle. Separate task.
- S3 account-level Block Public Access — do not enable naively: it would break
musehub-releases' intentional public access (serves/install.sh+ release tarballs) since account-level BPA is a ceiling combined with bucket-level settings. Needs an explicit bucket-level exception designed first. - Alerting on IAM/KMS/CloudTrail/DNS/security-group changes and root activity — no wiring built yet, would build on the now-available CloudTrail+GuardDuty+Security Hub findings
- Findings-tracking process — doesn't exist yet
Signed off: musehub-releases' disabled public-access settings are confirmed intentional (Gabriel, 2026-08-29) — documented as the explicit exception rather than an unresolved gap.
Real finding worth knowing about, not urgent: the running image has 7 CRITICAL CVEs (glibc, perl, openssl, xorg-server, glib2.0), all with no vendor fix available yet. Traced to playwright install --with-deps chromium (OG cards, #129) pulling in X11/xorg — a legitimate tradeoff for that feature, not sloppy dependency management. Full findings table in docs/production-readiness/13-security-monitoring.md.
Leaving open — Config, account-level S3 BPA, and alerting/findings-tracking are real remaining work, just correctly not rushed as quick toggles.
Closing — everything safely actionable in this pass is done (CloudTrail/GuardDuty confirmed already enabled, ECR scanning confirmed working, Security Hub + Access Analyzer newly enabled, musehub-releases signed off). Remaining work (AWS Config, S3 account-level Block Public Access, alerting, findings-tracking) needs real design rather than a quick toggle — split out to #174.
Update 2026-08-25: Re-verified with full admin access (the old
musehub-infracredential's denials weren't hiding anything — CloudTrail, GuardDuty, Security Hub, and AWS Config genuinely did not exist in either account). Decision: per-account now, org-wide from Management deferred.Set up in both Nonproduction and Production: dedicated CloudTrail S3 bucket (blocked public access, AES256, 365-day lifecycle), multi-region trail with log-file validation, logging confirmed active; GuardDuty detector enabled (6h finding frequency).
ECR image scanning: confirmed actually completing real scans now (
COMPLETEstatus on production's latest image), not just configured.Still open: Security Hub, AWS Config, org-wide consolidation, and the
musehub-releasespublic-bucket sign-off this ticket also flagged.