Subchapter 93.2
references/configuring-health-based-detection.mdMarkdown13 KBView on GitHub
Domain expertise for adding health-based detection to an AWS Shield Advanced protection by associating a Route 53 health check, so Shield Advanced can see whether the application is actually healthy and detect attacks faster and more accurately. Covers the requirement that the health check genuinely reflect application health, the requirement that it be healthy at association time, the one resource type that does not support health-based detection, and the link to proactive engagement.
Does not cover subscribing and protecting resources, automatic mitigation, SRT setup, event review, or protection groups; those are separate references. Creating the Route 53 health check itself is the route53 skill.
Execute commands using the AWS MCP server when connected (sandboxed execution, audit logging,
observability). Fall back to the AWS CLI otherwise. Shield Advanced control-plane calls run in
us-east-1; pass --region us-east-1 on every command.
To configure health-based detection end to end, follow the procedure exactly. See the Procedure section below.
The procedure covers:
When advising on health-based detection, you MUST state ALL of the following points together, not a subset:
The sections below give the detail behind each point.
Health-based detection works for every protected resource type except Route 53 hosted zones. Customers assume it works everywhere and waste effort wiring a health check to a hosted zone.
Constraints:
A shallow health check that returns healthy even when the application is failing gives detection no useful signal. The check has to flip to unhealthy under real stress to add value.
Constraints:
Associating a currently unhealthy health check fails or skews the detection baseline, and the failure reason is not obvious to the customer.
Constraints:
Proactive engagement (the SRT reaching out during an attack) requires a Route 53 health check on the protected resource. Configuring health-based detection now is the prerequisite for enabling proactive engagement later.
Constraints:
The health check is currently unhealthy. It must be healthy at association time (The health check must be healthy at association time).
The check is shallow and never flips to unhealthy under stress, so it adds no signal. Use a check that reflects real application health (The health check must reflect real application health).
Route 53 hosted zones do not support health-based detection (Not supported for Route 53 hosted zones).
Health-based detection feeds an application health signal into Shield’s detection, so call out the risks and the controls that contain them.
shield:ListProtections, shield:AssociateHealthCheck) rather than broad Shield
or administrator access.shield:* calls so every health check
association leaves a record, and confirm the CloudTrail trail uses SSE-KMS encryption on its S3 log
bucket and CloudWatch Logs log group, since CloudTrail records contain sensitive API metadata
(caller identities, resource ARNs, parameters).This procedure associates an existing, healthy Route 53 health check with a Shield Advanced protection, then surfaces the console link to verify.
list-protections).Constraints for parameter acquisition:
Constraints:
You MUST confirm credentials with aws sts get-caller-identity
You SHOULD use temporary credentials from an assumed IAM role (for example via IAM Identity Center or an instance profile) rather than long-lived IAM user access keys for these security-sensitive Shield Advanced operations
You SHOULD scope the caller’s IAM permissions to the minimum this procedure needs
(shield:ListProtections, shield:AssociateHealthCheck) rather than broad Shield or
administrator access
You SHOULD confirm AWS CloudTrail is enabled and logging shield:* calls so every Shield Advanced
configuration change leaves an audit trail
You SHOULD confirm the CloudTrail trail is configured with SSE-KMS encryption on its S3 log bucket and CloudWatch Logs log group, since CloudTrail records contain sensitive API metadata (caller identities, resource ARNs, parameters)
You MUST confirm the resource is protected and get its protection ID:
aws shield list-protections --region us-east-1You MUST confirm the protected resource type supports health-based detection (every type except Route 53 hosted zones)
You MUST NOT proceed if the Route 53 health check is a shallow “endpoint responds” check; confirm it flips to unhealthy under real application failure (a calculated check over the metrics that indicate the app is actually down) before associating it. A shallow check gives detection no useful signal (see “The health check must reflect real application health”)
Constraints:
Constraints:
You MUST associate the health check with the protection:
aws shield associate-health-check \
--protection-id {protection_id} --health-check-arn {health_check_arn} --region us-east-1Constraints:
You MUST present the Shield protected-resources console link and tell the customer to open the resource and confirm the health check is associated:
https://us-east-1.console.aws.amazon.com/wafv2/shieldv2#/protectionsConstraints:
DDoSDetected detection metric for
the protected resource so operators are alerted when Shield detects an event, and SHOULD mention
the attack-volume metrics (DDoSAttackBitsPerSecond, DDoSAttackPacketsPerSecond,
DDoSAttackRequestsPerSecond) for magnitude. Shield reports these in us-east-1 for CloudFront
and Route 53 and in the resource’s Region otherwise{
"protection_id": "abc123-protection-id",
"health_check_arn": "arn:aws:route53:::healthcheck/11111111-2222-3333-4444-555555555555"
}Verified health check is healthy and reflects application health.
Associated it with protection abc123-protection-id for faster, health-aware detection.
This health check also satisfies the proactive engagement prerequisite.
Open the Shield console and confirm the health check association:
https://us-east-1.console.aws.amazon.com/wafv2/shieldv2#/protectionsThe health check is currently unhealthy. Wait for it to report healthy, then associate (Step 2).
The check is shallow. Replace it with one that flips unhealthy under real stress (Step 2).
Route 53 hosted zones do not support health-based detection (Not supported for Route 53 hosted zones).