AWS Security Services: mapping the landscape
coreintermediateAWS splits security into narrow services, each solving one problem: KMS and Secrets Manager protect secrets and keys, WAF and Shield stop external attacks, GuardDuty/Inspector/Macie/Detective find threats and vulnerabilities, and CloudTrail/Config/IAM Access Analyzer record and audit what already happened. You do not need every feature of all thirteen — you need to recognize which category a new problem falls into, then pick the one service built for it.
Think of it as
Sort every AWS security service into one of three questions it answers. "How do I keep this secret or key safe?" — KMS, Secrets Manager, Parameter Store. "How do I stop an attacker from getting in, or notice one who did?" — WAF, Shield, GuardDuty, Inspector, Macie. "How do I prove what happened and who has access to what?" — CloudTrail, Config, Security Hub, Detective, IAM Access Analyzer. A new requirement almost always maps cleanly to one of the three questions, which narrows thirteen names down to two or three real candidates.
What we're doing: Given a new requirement, pick the right service instead of reaching for the one you remember best.
- 1
- The requirement names an action (rotate) — that keyword alone rules out Parameter Store, which has no built-in rotation.
- 4
- The requirement names the HTTP request itself as the attack surface — that is WAF's domain, not Shield's.
- 7
- The requirement asks "who did this" — that is an activity log question, which is what CloudTrail exists for, not a configuration-state question.
Why this works: The fastest way to choose correctly among thirteen services is to restate the requirement as one of the three questions (protect / stop / detect / audit) and let that narrow the field before comparing feature lists.
Reaching for GuardDuty or Security Hub to fix a problem they only report on
Wrong
Better
What you see: A team believes it is protected because a detection dashboard is green, but an actual SQL-injection or volumetric attack still reaches the application unmodified — GuardDuty and Security Hub only ever generate a finding, they never block a request.
Why: Detection services (GuardDuty, Security Hub, Inspector, Macie, Detective) all answer "did something bad happen or could it" — none of them sit in the request path. Only WAF and Shield actively intervene in traffic; conflating "we have visibility" with "we are protected" leaves the actual attack surface unchanged.
- Protect secrets & keys
- KMS — Encryption keys
- Secrets Manager — Rotating credentials
- Parameter Store — Config values
- Stop external attacks
- WAF — Layer 7 HTTP rules
- Shield — Layer 3/4 DDoS
- Detect threats & weaknesses
- GuardDuty — Threat detection
- Inspector — Vulnerability scans
- Macie — Sensitive-data discovery in S3
- Investigate & audit
- Security Hub — Aggregates findings
- Detective — Root-causes a finding
- CloudTrail — Who called what, when
- Config — Resource state over time
- IAM Access Analyzer — External/unused access
The 13 services, by the problem each one solves
Together
Remember: Sort by the question, not the name: protect a secret or key (KMS, Secrets Manager, Parameter Store), stop an attack in the request path (WAF, Shield), detect a threat or weakness (GuardDuty, Inspector, Macie), or investigate/audit what already happened (Security Hub, Detective, CloudTrail, Config, IAM Access Analyzer). Detection services report; only WAF and Shield actually block traffic.

