Deriving monitoring requirements

Lesson 1 of 4 in Monitoring and Alerting.

Nobody passes this domain by memorising which service emits which log. The exam asks you to look at a described workload and say what must be watched, how loudly, and who acts — and then to pick the cheapest architecture that delivers it. So start where the workload is, not where the service catalogue is.

Four questions, in order, produce a monitoring requirement:

  1. What is worth attacking here? A payments API has cardholder data and an outbound path to the internet. A data-science account has credentials, large buckets and expensive compute. The assets decide the threats.
  2. What would that attack look like in telemetry? Credential theft shows up as an instance role used from an unfamiliar network. Exfiltration shows up as unusual egress volume, or as long random DNS labels. Mining shows up as compute cost and outbound connections to pools. Each threat has a signal shape, and the shape decides the instrument.
  3. How fast must someone know? This is the real severity question. “Root user signed in” needs a page in minutes. “An S3 bucket lacks a lifecycle policy” needs a ticket this sprint. Severity is a promise about response time, not a feeling about badness.
  4. Who acts, and can a machine do it? If the answer is always the same three API calls, write the automation and let the human review the result. The exam’s strong preference — on every form — is central aggregation plus automated response over per-account dashboards and human triage.
Four shapes a security signal takes. Choosing the wrong instrument is the most common design error in this domain.
InstrumentReadsTypical latencyRight when…Blind to

Metric alarm

a CloudWatch metric (numeric, time-series)

seconds to minutes

the signal is a quantity crossing a line — egress bytes, failed logins per minute, concurrent sessions, cost

anything that is not already a number; alarms cannot read text

Log metric filter → alarm

text arriving in a CloudWatch log group

near real time, after ingestion

the signal is a line in a log — ConsoleLogin by the root user, an UnauthorizedOperation error, a CloudTrail configuration change

logs created before the filter existed — filters are never retroactive

EventBridge rule

structured events from AWS services and your apps

near real time

the signal is a state change you want to act on — a finding arriving, a Config rule going non-compliant, an instance changing state

anything that never emits an event; and it is a router, not a detector

Finding

a detection service’s own analysis (GuardDuty, Inspector, Macie, Security Hub controls)

minutes, service-dependent

you want judgement, not raw data — “this is credential exfiltration”, severity attached, resource named

the specific thing your business cares about that no AWS detector models

Three of those four converge on one place. A GuardDuty finding, a Security Hub control failing, a Config rule going non-compliant, a CloudWatch alarm changing state, a Macie finding — all of them appear as EventBridge events. That is why EventBridge is the spine of every answer in this domain rather than one service among many: it is the only component that sees every signal type and can fan one signal out to several fates at once — notify a human, open a ticket, invoke a Lambda, start a Step Functions runbook, or forward the event to an event bus in the security account.

Two layers sit on top of it, and the exam distinguishes them. Amazon SNS is the fan-out primitive: one topic, many subscribers (email, HTTPS, SQS, Lambda), with the topic policy as the access control and server-side encryption available on the topic. AWS User Notifications is the human-facing console layer: notification configurations with email, chat and mobile-push delivery, plus one inbox that spans accounts and Regions. Route machine consumers through EventBridge and SNS; route people through User Notifications or a chat channel. A question that says “a central place for engineers to read notifications from many accounts” is pointing at User Notifications; one that says “trigger a remediation function” is pointing at EventBridge.

Three details about User Notifications are worth holding, because they are where the service surprises people. A notification configuration is a container of event rules, each naming a service, its event types and the Regions to watch, with an optional JSON event-pattern filter for anything finer (no wildcards). Aggregation is on by default — events combine into one notification over a 5-minute or 12-hour window, or you turn it off — which matters when an exam stem complains about either alert noise or a delay between an event and the email. And notification hubs are an account-level choice of up to three Regions where notification data is stored, processed and replicated; you must pick at least one before any configuration exists.

That last one carries a residency trap: whichever hubs you choose, the configuration's data is also stored in us-east-1, which is the default Region for the service, and replicated from there to the Regions you configured rules for. A requirement phrased as “notification metadata must remain inside the EU” is therefore not satisfiable by selecting an EU-only notification hub. Related: email delivery runs through Amazon SES API endpoints, which do not exist in every Region, so events originating in an unsupported Region have their email routed via us-east-1 — or you decline to configure email for those events at all.

The detection spine — one router, many fates

  1. Workload + accounts

    Resources, API activity, network flows, DNS queries, application logs.

  2. Signals

    Metrics, log lines, service events, and findings from GuardDuty, Inspector, Macie and Security Hub controls.

  3. Security Hub (aggregate)

    Findings from every integrated service and partner, across accounts and Regions, in one normalized view.

  4. EventBridge

    The router. Rules match on event pattern — service, finding type, severity, account, resource tag — and send to several targets at once.

  5. Page a human

    SNS topic → on-call, or AWS User Notifications → chat. Reserved for severities with a minutes-level response promise.

  6. Open a ticket

    Systems Manager OpsCenter or an external tracker, for findings that need work but not a pager.

  7. Automate the fix

    Lambda or a Step Functions runbook calling an SSM Automation document — then write the outcome back as a finding note.

  8. Keep the evidence

    Security Lake or an S3 archive, so the same signal is still queryable in six months.

Note the last edge on that diagram: the automation writes its result back. A remediation pipeline that fixes things silently is indistinguishable from one that is broken, so the loop closes — update the finding’s workflow status, annotate it, and alarm on remediations that failed. “Did the fix run?” is a monitoring requirement of its own.

Resource health checks are the part of this lesson people skip, and they carry more security weight than their name suggests. A Route 53 health check can watch an endpoint (HTTP, HTTPS or TCP, from many AWS locations), can be calculated from other health checks, or can simply track a CloudWatch alarm — which means any metric you can alarm on becomes a health signal that can drive DNS failover. Load balancer target health gives you the same visibility inside a VPC. The security reading: availability loss is often the first observable symptom of an attack — a resource exhaustion attempt, a deleted security group rule, a certificate that expired because nobody was alarming on it — and a health check that goes unmonitored turns an incident into an outage. Two practical cautions: a health-check endpoint is internet-reachable by design, so it must not leak version numbers or internal hostnames; and health checks test reachability, not correctness, so pair them with a metric or log signal that proves the thing is actually working.

A four-tier stack of illustrative severity levels, read bottom-up, each labelled with the response time it promises and the channel that keeps that promise. Bottom: Low, roughly 30 days, delivered as a dashboard item in the next review — missing tags and cosmetic posture drift. Second: Medium, roughly 24 hours, delivered as a tracked ticket — a Config rule going non-compliant, a certificate approaching expiry, a reconnaissance finding. Third: High, roughly one hour, delivered as a business-hours page plus a ticket — a public bucket holding classified data, a trail that stopped logging, a new administrative principal. Top, emphasized: Critical, roughly 15 minutes, delivered by paging someone awake — root user sign-in, confirmed credential exfiltration, ransomware indicators. The point of the figure is that the delivery channel is derived from the promised response time, not chosen by taste, and that an instrument incapable of that latency disqualifies itself.

Severity is a promise about response time. Write the promise down first, then choose the instrument that can keep it. (illustrative — source: SCS-C03 exam guide — “Design and implement monitoring and alerting solutions for an AWS account or organization”)

Key terms: Metric filter, AWS User Notifications, Delegated administrator, AWS Security Hub (CSPM)

Interactive checkpoint quiz (2 questions) — open this page in a browser to take it.