Application security on AWS is the collection of managed AWS services that sit in front of, around, and inside your workloads to stop web attacks, detect threats, authenticate users, and keep secrets out of source code. For the SAA-C03 exam this means knowing which AWS service solves which problem: AWS WAF for HTTP-layer attacks, AWS Shield for volumetric and protocol DDoS, AWS Firewall Manager for centralized policy across many AWS accounts, Amazon GuardDuty for intelligent threat detection, Amazon Cognito for end-user authentication, and AWS Secrets Manager / AWS Systems Manager Parameter Store for credential storage. Application security on AWS is the Task 1.2 counterpart to the network-security topics you learned in VPC, and it shows up in roughly one out of every ten SAA-C03 scenario questions.
Domain 1 of SAA-C03 carries 30% exam weight, and application security is one of its most scenario-heavy subtopics. You will see phrases like "protect a public web application from SQL injection", "mitigate a volumetric DDoS against a CloudFront distribution", "detect compromised EC2 instances", "authenticate mobile app users with Google sign-in", or "store a database password outside the application code". Each of those phrases maps cleanly to one AWS application security service — this guide teaches you to make that mapping instantly.
What is Application-Level Security on AWS?
Application security on AWS protects the parts of your workload that sit above the network layer: the HTTPS request your users send, the API call your microservice makes, the credentials your application loads at startup, the sign-in screen your customers see. Network-layer security (security groups, network ACLs, NAT gateways) stops traffic by IP address and port; application security stops traffic by HTTP method, URL path, SQL keyword, TLS certificate, OAuth token, or behavioral anomaly.
AWS application security services fall into four broad buckets that you should be able to recite:
- Edge protection at the request layer — AWS WAF filters HTTP/HTTPS requests; AWS Shield absorbs DDoS floods; AWS Firewall Manager enforces WAF and Shield policies across many AWS accounts.
- Threat detection and response — Amazon GuardDuty correlates AWS CloudTrail, VPC Flow Logs, DNS logs, and Amazon EKS audit logs to flag compromised resources; Amazon Macie discovers sensitive data in Amazon S3; AWS Security Hub aggregates findings.
- Identity for customer-facing applications — Amazon Cognito provides sign-up, sign-in, and federated identity for your end users (not your workforce — that belongs to AWS IAM Identity Center).
- Secrets and credential management — AWS Secrets Manager stores and rotates credentials; AWS Systems Manager Parameter Store stores plain and encrypted configuration.
- AWS WAF: a managed web application firewall that inspects HTTP/HTTPS requests at Amazon CloudFront, Application Load Balancer, Amazon API Gateway, Amazon Cognito, AWS App Runner, and AWS Verified Access.
- AWS Shield: the AWS DDoS protection service; Shield Standard is automatic and free, Shield Advanced is a paid subscription with enhanced protections.
- Amazon GuardDuty: an intelligent threat detection service that analyzes logs and emits findings with Low/Medium/High severity.
- Amazon Cognito: an identity service for the end users of your application; user pools handle authentication (directory), identity pools handle authorization to AWS resources (federation).
- AWS Secrets Manager: a dedicated secrets storage service with automatic rotation.
- Reference: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
Why application security matters for SAA-C03
Application security questions on SAA-C03 are almost always scenario questions: "your web application experiences repeated SQL injection attempts — which AWS service blocks them?", "your public-facing site is hit with a massive SYN flood — which AWS service is designed for this?", "your mobile app users sign in with Google — which AWS service manages the identity pool?". Each correct answer is an AWS service name, and each distractor is a nearby AWS service that sounds similar. Knowing the exact scope of each application security AWS service is the single biggest lever on Domain 1 application security questions.
Plain-Language Explanation: Application Security
Application security vocabulary is easier to retain when it maps to physical systems. Here are three distinct analogies that cover every major application security concept on SAA-C03.
Analogy 1: The Nightclub with Three Layers of Security
Picture a popular nightclub on a Saturday night. AWS Shield is the heavy-set security team at the curb that keeps the street clear when thousands of people try to rush the door at once — they absorb the mass and stop a trampling incident. AWS WAF is the bouncer at the velvet rope who reads every single guest's ID and dress code before letting them past the front door — too young? wrong outfit? carrying a sharpie to draw on the walls? Denied. Amazon GuardDuty is the plainclothes security manager walking the floor — they notice the guest who keeps sneaking into the staff-only hallway, the one who just bought 40 drinks in 3 minutes on a stolen credit card, and the person whose ID matches someone already flagged in the industry's ban list; they radio the team and escalate. Nightclubs need all three: Shield for the crowd, WAF for the door, GuardDuty for the floor. Skip any one layer and you lose that class of attack.
AWS Firewall Manager is the security company headquarters that pushes the same bouncer rulebook to all 47 clubs the chain owns, so if a new fake ID appears in one city, every club updates the deny list the next morning.
Analogy 2: The Hotel Key System
A large hotel chain captures Amazon Cognito and the credentials services perfectly. The front desk clerk is an Amazon Cognito user pool — they check your reservation, verify your ID, ask for your PIN (MFA), and issue you a keycard. That keycard proves who you are (authentication). But the keycard on its own cannot open the executive lounge, the pool, or the parking garage — it has to be authorized for each of those rooms. That second layer is the Amazon Cognito identity pool — it takes your keycard (the user pool token, or a Google/Apple/Facebook login token) and hands you short-term entry tokens for the specific AWS resources your app is allowed to use. Social sign-in through the Hosted UI is like the hotel accepting a partner airline's frequent-flyer card instead of making you re-register — Amazon Cognito federates to Google, Apple, Facebook, Amazon, or any OIDC/SAML provider.
AWS Secrets Manager is the hotel manager's safe in the back office — it stores the master Wi-Fi password, the property management system's database credentials, and the airline API key. Staff don't carry these on sticky notes; they retrieve them at runtime and return them. The safe also rotates its own combination on a schedule, so even if a former employee remembered the old combo, it stops working. AWS Systems Manager Parameter Store is the break-room whiteboard — it holds non-sensitive configuration like "breakfast is served 7–10", plus a small locked compartment for occasional passwords, but it doesn't rotate anything on its own.
Analogy 3: The Airport Security Stack
An international airport layers the same defenses you'll put around an AWS application. AWS Shield Standard is the airport perimeter fence and anti-vehicle barrier — it's always on, you never see the bill, and it stops the obvious mass attack without any configuration. AWS Shield Advanced is the specialized counter-terrorism unit on call 24/7 — paid retainer, dedicated response team (the AWS Shield Response Team), cost-protection insurance, and integration with AWS WAF for customized attack rules. AWS WAF is the TSA checkpoint — every carry-on (HTTP request) is x-rayed against a rulebook (managed rule groups for common attacks like SQL injection and cross-site scripting, plus your custom rules); dangerous items are blocked, allowed items continue. Rate-based rules are the gate agent who notices the same person has tried to board 14 flights in 20 minutes and pulls them aside.
Amazon GuardDuty is the airport police analytics room that correlates flight manifests, security camera feeds, and watchlists — it raises a finding with Low/Medium/High severity so responders know whether to dispatch a foot patrol or the tactical team.
On exam day, when you see "DDoS protection" in a question, picture the nightclub curb team (Shield). When you see "SQL injection" or "block requests from a specific country", picture the TSA checkpoint (WAF). When you see "detect compromised EC2 instance", picture the airport police analytics room (GuardDuty). Reference: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
AWS WAF — Web ACL Rules, Rate Limiting, and Managed Rule Groups
AWS WAF (Web Application Firewall) inspects incoming HTTP and HTTPS requests against a set of rules and either allows, blocks, counts, or challenges each request. AWS WAF deploys at six AWS integration points: Amazon CloudFront distributions, Application Load Balancer, Amazon API Gateway REST APIs, AWS AppSync GraphQL APIs, Amazon Cognito user pools, and AWS App Runner services (plus AWS Verified Access). That list is important — AWS WAF does not attach to a Network Load Balancer, which is a common SAA-C03 trap.
Web ACLs and rules
A Web ACL (web access control list) is the AWS WAF policy object you attach to a protected resource. Inside the Web ACL you add rules, and each rule is one of three kinds:
- Regular rules — static statements that match specific request attributes: URL path, HTTP method, header value, query string, body content, source IP, geographic country, size constraint, SQL injection pattern, or cross-site scripting pattern.
- Rate-based rules — count requests from each source IP (or another aggregation key such as a header or forwarded IP) over a 5-minute sliding window and block sources that exceed a threshold. Rate-based rules are the AWS WAF answer for brute-force login protection, scraper throttling, and application-layer DDoS mitigation.
- Rule group references — shortcut to a bundle of rules, either AWS-managed, Marketplace, or customer-managed.
Each rule has a priority (lower numbers evaluated first) and an action: Allow, Block, Count (for testing), or CAPTCHA/Challenge.
AWS Managed Rule Groups
You don't have to author every rule yourself. AWS Managed Rule Groups are pre-built, AWS-maintained bundles that handle the most common attack patterns, and they're the right default starting point for SAA-C03 scenarios:
- Core rule set (CRS) — OWASP Top 10 generic protections.
- Known bad inputs — request patterns tied to known vulnerabilities.
- SQL database — SQL injection patterns across common databases.
- Linux / Windows / PHP / WordPress operating-system rule groups — OS-specific attack patterns.
- IP reputation lists — Amazon IP reputation list (malicious actors) and Anonymous IP list (VPN/Tor/proxy).
- Bot Control — detects and mitigates common bot traffic (paid add-on).
- Account takeover prevention (ATP) — brute-force login defense tied to a login endpoint (paid add-on).
- Account creation fraud prevention (ACFP) — fake-signup defense (paid add-on).
AWS Marketplace also offers third-party managed rule groups from vendors like F5, Fortinet, Imperva, and Trustwave — useful when a scenario calls for a specialized rule set.
Rate-based rules in depth
A rate-based rule in AWS WAF counts requests from each source IP (or from a configurable aggregation key) over a rolling 5-minute window and blocks any source whose count exceeds the configured limit. The minimum rate limit is 100 requests per 5 minutes and the maximum is 20,000,000 requests per 5 minutes. Rate-based rules can be combined with a scope-down statement so the limit only applies to specific URL paths (for example, /login).
SAA-C03 loves scenarios like "protect the /login endpoint from brute-force attempts" or "stop scrapers from hitting the product catalog". Both answers are the AWS WAF rate-based rule over a 5-minute sliding window, optionally with a scope-down statement to target the specific path. Do not confuse this with Amazon API Gateway throttling, which is per-stage/per-API-key and has a different purpose. Reference: https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-rate-based.html
Where AWS WAF attaches
| Protected AWS service | Supported? |
|---|---|
| Amazon CloudFront distribution | Yes (global scope) |
| Application Load Balancer (ALB) | Yes (regional scope) |
| Amazon API Gateway REST API | Yes (regional scope) |
| AWS AppSync GraphQL API | Yes (regional scope) |
| Amazon Cognito user pool | Yes (regional scope) |
| AWS App Runner service | Yes (regional scope) |
| AWS Verified Access instance | Yes (regional scope) |
| Network Load Balancer (NLB) | No — NLB is Layer 4 only |
| Amazon EC2 instance directly | No — put WAF in front of ALB or CloudFront |
A recurring SAA-C03 trap offers "attach AWS WAF to an NLB" as an answer choice. AWS WAF is an HTTP/HTTPS Layer-7 service and NLB is Layer 4, so the integration does not exist. If a scenario describes protecting a TCP-based workload, AWS Shield and security groups are the relevant controls; to use AWS WAF you must front the workload with Amazon CloudFront or an Application Load Balancer. Reference: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
AWS Shield Standard vs Shield Advanced — DDoS Mitigation Tiers
AWS Shield is the AWS managed DDoS protection service. Every AWS account automatically receives AWS Shield Standard at no charge, and you can optionally subscribe to AWS Shield Advanced for a substantial monthly fee to get enhanced protections, dedicated response, and cost protection. On SAA-C03 you must know both tiers precisely.
AWS Shield Standard — free, automatic
AWS Shield Standard is always on for every AWS customer and costs nothing extra. It automatically defends against the most common network- and transport-layer DDoS attacks:
- SYN/UDP floods
- Reflection attacks (DNS, NTP, SSDP, etc.)
- Other Layer 3 and Layer 4 volumetric attacks
Shield Standard is integrated transparently into Amazon CloudFront, Amazon Route 53, AWS Global Accelerator, and the Elastic Load Balancing services. You don't configure it; you just get it.
AWS Shield Advanced — paid, enhanced
AWS Shield Advanced is a subscription service at approximately USD 3,000 per month, with a 1-year commitment, billed per AWS Organization (so one subscription covers every linked AWS account). Subscribing gives you:
- Enhanced DDoS detection and mitigation against larger and more sophisticated attacks, including Layer 7 (application-layer) attack support when combined with AWS WAF.
- AWS Shield Response Team (SRT) — a 24/7 specialized team you can engage during active attacks.
- Cost protection — AWS credits back the scale-out charges (Amazon EC2, Amazon CloudFront, ELB, Amazon Route 53, AWS Global Accelerator) caused by a DDoS event, so you are not financially punished for absorbing an attack.
- Real-time attack visibility through AWS WAF logs, Amazon CloudWatch metrics, and the AWS Shield console.
- Automatic application-layer DDoS mitigation on protected Amazon CloudFront resources through the AWS-managed
AWSManagedRulesAnonymousIpListandAWSManagedRulesAmazonIpReputationListplus Shield-specific rules. - Global threat environment dashboard and attack reports.
- AWS WAF included at no additional charge on Shield Advanced-protected resources.
- AWS Firewall Manager usage included at no additional charge for Shield Advanced policies.
Shield Advanced protects Amazon CloudFront distributions, AWS Global Accelerator standard accelerators, Amazon Route 53 hosted zones, Application Load Balancers, Classic Load Balancers, Network Load Balancers, and Elastic IP addresses (Amazon EC2).
- Shield Standard — free, automatic, Layer 3/4 common attacks, available to every AWS account.
- Shield Advanced — approximately USD 3,000/month, 1-year commitment, per AWS Organization.
- Shield Advanced includes AWS WAF at no extra charge on protected resources.
- Shield Response Team (SRT) — 24/7 specialized DDoS response, Shield Advanced only.
- Cost protection — scale-out charges from a DDoS event are credited back (Shield Advanced).
- Protected resource types: Amazon CloudFront, AWS Global Accelerator, Amazon Route 53, ALB, CLB, NLB, Elastic IPs.
- Reference: https://docs.aws.amazon.com/waf/latest/developerguide/ddos-advanced-summary.html
Shield Standard vs Shield Advanced on SAA-C03
| Scenario clue | Correct tier |
|---|---|
| "Standard SYN flood on a public web app" | Shield Standard (automatic, already on) |
| "Gaming / finance / ad-tech platform with high business impact" | Shield Advanced |
| "Need 24/7 DDoS expert escalation during active attack" | Shield Advanced (SRT) |
| "Protect against billing spike from DDoS scale-out" | Shield Advanced (cost protection) |
| "Application-layer DDoS (HTTP flood)" | Shield Advanced + AWS WAF rate-based rules |
| "Protect an NLB from volumetric DDoS" | Shield (Standard or Advanced); AWS WAF does not attach to NLB |
AWS Shield mitigates DDoS (volume, protocol, and — with Advanced + WAF — application-layer floods). AWS WAF blocks malicious HTTP requests by content (SQL injection, XSS, bad user agents, geo-block, rate limit by source IP). A scenario about "SYN flood" is Shield; a scenario about "SQL injection" is WAF; a scenario about "1 million HTTP requests per second from 50,000 IPs to the login page" needs Shield Advanced + WAF rate-based rules together. Reference: https://docs.aws.amazon.com/waf/latest/developerguide/shield-chapter.html
AWS Firewall Manager — Centralized Policy Across Many AWS Accounts
AWS Firewall Manager is the multi-account, multi-resource management layer for AWS WAF, AWS Shield Advanced, AWS Network Firewall, Amazon Route 53 Resolver DNS Firewall, Amazon VPC security groups, and third-party firewalls from Palo Alto Networks, Fortinet, and Check Point. Firewall Manager is the right answer on SAA-C03 any time a scenario mentions many AWS accounts, AWS Organizations, or enforce the same rule everywhere.
What Firewall Manager does
- Applies AWS WAF rule groups, Shield Advanced protections, security group baselines, AWS Network Firewall policies, and Route 53 Resolver DNS Firewall rules uniformly across an AWS Organization.
- Auto-remediation — when a new AWS account joins the AWS Organization, or when someone creates a new Amazon CloudFront distribution or Application Load Balancer, Firewall Manager automatically attaches the required policy.
- Continuous compliance auditing — detects non-compliant resources and optionally remediates them.
- Central visibility of WAF, Shield, Network Firewall, and security group configurations across the whole AWS Organization.
Prerequisites
Firewall Manager has three hard prerequisites that SAA-C03 loves to test:
- The AWS account must be part of an AWS Organization with all-features enabled.
- A Firewall Manager administrator account must be designated (delegated admin).
- AWS Config must be enabled in every AWS account and Region where Firewall Manager will enforce policies.
When a SAA-C03 question mentions "20 AWS accounts", "consistent WAF rules across the organization", "security baseline across all VPCs", or "automatically enroll new AWS accounts", the answer is AWS Firewall Manager. AWS WAF alone is per-account, per-resource; Firewall Manager is the enterprise-scale wrapper. Reference: https://docs.aws.amazon.com/waf/latest/developerguide/fms-chapter.html
Amazon GuardDuty — Intelligent Threat Detection
Amazon GuardDuty is the AWS managed threat detection service. It continuously analyzes log sources to identify anomalies, compromised resources, and known-bad activity, producing findings with severity levels that your operations team (or AWS Security Hub, Amazon EventBridge, AWS Lambda) can respond to. GuardDuty requires no agents, no infrastructure, and no log forwarding — you enable it with one click per AWS Region.
Log sources GuardDuty analyzes
- AWS CloudTrail management events — API calls on your AWS account.
- AWS CloudTrail S3 data events — object-level reads and writes on Amazon S3.
- Amazon VPC Flow Logs — network traffic metadata to and from Amazon EC2.
- Amazon Route 53 DNS query logs — DNS lookups from inside your VPCs (Route 53 Resolver queries).
- Amazon EKS audit logs — Kubernetes API activity on Amazon EKS clusters.
- Runtime monitoring — GuardDuty agent for Amazon EKS, Amazon ECS on Fargate, and Amazon EC2 instances (Linux).
- Amazon RDS login activity — for Amazon Aurora MySQL/PostgreSQL.
- Amazon S3 Malware Protection — scans newly uploaded S3 objects.
- Lambda Protection — analyzes AWS Lambda network activity.
You don't ship logs to GuardDuty — GuardDuty reads them natively from the control plane. This is why GuardDuty is often described as "agentless" (except for the optional Runtime Monitoring agent).
Threat categories GuardDuty detects
GuardDuty groups findings into finding types across several categories:
- Reconnaissance — port scans, unusual API discovery calls from outside your VPC.
- Instance compromise — cryptocurrency mining, malware command-and-control, unusual outbound connections, backdoor communications.
- Account compromise — unusual AWS API calls, sign-in from anonymizing proxies, IAM user credentials used from unusual geography, disabling of AWS CloudTrail or AWS Config.
- Bucket compromise — unusual Amazon S3 API calls, public bucket created with sensitive data, data exfiltration patterns.
- Kubernetes compromise — anonymous API calls, privilege escalation, suspicious exec/attach to pods.
- Malware — files scanned by the optional malware protection add-on.
- Known bad actors — IPs and domains from AWS threat intelligence and third-party feeds (Proofpoint, CrowdStrike).
Finding severity
Each GuardDuty finding carries a severity score from 0.1 to 8.9, mapped into three severity tiers:
- Low — 1.0 to 3.9 — suspicious activity worth investigating but not an immediate threat (example: a port probe).
- Medium — 4.0 to 6.9 — activity that suggests a potentially compromised resource (example: outbound connection to a known command-and-control domain).
- High — 7.0 to 8.9 — strongly indicates a compromised resource requiring immediate response (example: cryptocurrency mining from an EC2 instance).
Severity drives routing — use Amazon EventBridge rules to page on High, ticket on Medium, and log on Low.
- Low = 1.0 – 3.9 (investigate)
- Medium = 4.0 – 6.9 (likely compromised, respond)
- High = 7.0 – 8.9 (compromised, immediate action)
- GuardDuty is regional — enable per AWS Region.
- GuardDuty supports delegated administrator to aggregate findings across the AWS Organization.
- Reference: https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_findings.html
GuardDuty vs Inspector vs Macie — the three-way confusion
SAA-C03 loves the three-way confusion between GuardDuty, Amazon Inspector, and Amazon Macie. Memorize this table.
| AWS service | Scope | Typical finding |
|---|---|---|
| Amazon GuardDuty | Threat detection across account, network, and workloads | "EC2 instance is communicating with a known malware C2 domain" |
| Amazon Inspector | Vulnerability assessment on EC2, ECR container images, and Lambda | "EC2 instance has CVE-2023-12345 (OpenSSL RCE) installed" |
| Amazon Macie | Sensitive data discovery in Amazon S3 | "S3 bucket customer-docs contains 2,400 objects with PII (credit card numbers)" |
GuardDuty watches for attackers and anomalies (active threats). Amazon Inspector scans for software vulnerabilities and CVEs (static weaknesses). Amazon Macie scans Amazon S3 for sensitive data (PII/PHI classification). If the scenario says "patch management" → Inspector. "PII discovery in S3" → Macie. "compromised EC2" → GuardDuty. Reference: https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html
Amazon Macie — PII Discovery in Amazon S3
Amazon Macie uses machine learning and pattern matching to discover and classify sensitive data in Amazon S3 — credit card numbers, Social Security numbers, AWS access keys, driver's license numbers, health data, and customer-defined regex patterns. Macie reports which buckets contain sensitive data, the volume and severity of that data, and whether the buckets are publicly accessible, shared with other AWS accounts, or unencrypted.
Macie is the right answer on SAA-C03 when the scenario says "identify PII in S3", "find which S3 buckets contain credit card numbers", or "meet GDPR / HIPAA data classification requirements". It is not the answer for "encrypt an S3 bucket" (that's SSE-KMS / SSE-S3) or "detect unusual S3 API calls" (that's GuardDuty).
Amazon Cognito — User Pools vs Identity Pools
Amazon Cognito is the AWS identity service for the end users of your application — the customers signing into your mobile app, the players logging into your web game, the visitors registering for your SaaS. Cognito is specifically not for your internal workforce (that's AWS IAM Identity Center). SAA-C03 tests the user-pool vs identity-pool distinction relentlessly.
Amazon Cognito user pools — authentication (the directory)
An Amazon Cognito user pool is a managed user directory. It handles:
- Sign-up and sign-in with username + password, email + password, or phone number + password.
- Hosted UI — a customizable AWS-hosted login page at
<domain>.auth.<region>.amazoncognito.comthat your app can redirect to instead of building your own login screen. The Hosted UI supports sign-in, sign-up, password reset, and social federation out of the box. - Social federation — sign-in with Facebook, Google, Apple, Amazon, or any OIDC/SAML 2.0 identity provider (Microsoft Entra ID, Okta, Ping). The user still lands in your user pool as a unified identity, whether they used a password or a social login.
- MFA (SMS or TOTP) and adaptive authentication based on risk.
- Account recovery, email/SMS verification, and custom attributes.
- Lambda triggers for pre-sign-up, pre-authentication, post-confirmation, and custom message logic.
- JSON Web Tokens (JWTs) — on successful sign-in, the user pool returns an ID token (identity claims), an access token (API authorization), and a refresh token.
Your application backend verifies the JWTs to authorize API calls. A user pool alone is sufficient for any scenario that ends at "sign the user in and let my app trust them".
Amazon Cognito identity pools — authorization to AWS resources (federation)
An Amazon Cognito identity pool (also called federated identities) is a separate Cognito resource whose job is to exchange a login token for short-term AWS credentials. The input can be:
- A Cognito user pool JWT (the most common pattern — user pool + identity pool together).
- A social login token (Google, Apple, Facebook, Amazon).
- A SAML 2.0 assertion.
- An OIDC token.
- A "developer-authenticated" custom identity.
The identity pool maps the login to an IAM role and hands back temporary AWS credentials through AWS STS. Your mobile or web app uses those credentials to call AWS services directly — upload photos to Amazon S3, read a DynamoDB table, invoke a Lambda function — without any long-term AWS credentials on the device.
Identity pools support authenticated and unauthenticated (guest) roles, so you can grant limited AWS access to users who haven't signed in yet.
User pool vs identity pool — side-by-side
| Question | User pool | Identity pool |
|---|---|---|
| Primary job | Authentication (who are you?) | Authorization to AWS (what AWS resources can you call?) |
| Output | JWTs (ID, access, refresh) | Temporary AWS STS credentials |
| Directory | Yes — stores users, passwords, MFA | No — relies on another identity source |
| Social/SAML federation | Yes — federates into the pool | Yes — federates into an IAM role |
| When you need AWS access | Not by itself | Yes — use with a user pool or social IdP |
| When you only need "sign the user in" | Sufficient alone | Not needed |
| Hosted UI | Yes | No — identity pools are API-only |
The SAA-C03 trap is the reverse of the question. "Sign users in to a mobile app" alone → user pool. "Let a mobile app call Amazon S3 and Amazon DynamoDB directly with per-user permissions" → user pool + identity pool (pool authenticates, identity pool hands out AWS credentials). "Let a guest user with no account upload one file to S3" → identity pool with unauthenticated role. Reference: https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html
Hosted UI and social federation
The Cognito Hosted UI is an AWS-hosted, OAuth 2.0 / OIDC-compliant login page associated with your user pool domain. The Hosted UI handles the full OAuth authorization code flow, so your application only needs to redirect to the Hosted UI and handle the callback. The Hosted UI supports customization of logo, background, and CSS, and natively renders sign-in buttons for configured external identity providers (Google, Facebook, Apple, Amazon, SAML IdPs, OIDC IdPs).
When a user chooses "Sign in with Google", Cognito performs the OAuth dance with Google, maps the Google identity to a federated user in your user pool, and issues JWTs just as if the user had signed in with a password. The user becomes a first-class Cognito user — you can attach attributes, read their identity in Lambda triggers, and require MFA.
SAA-C03 sometimes offers Amazon Cognito as the answer for "let employees of the company sign in to multiple AWS accounts with corporate credentials". That is wrong — workforce identity belongs to AWS IAM Identity Center (formerly AWS SSO). Amazon Cognito is for the end users of your application, not the engineers of the company that built the application. Reference: https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html
AWS WAF on Cognito user pools
AWS WAF can attach directly to an Amazon Cognito user pool to protect sign-up and sign-in endpoints from brute-force, credential stuffing, and account-takeover attacks. This is a relatively new integration and SAA-C03 is starting to include it as a correct answer for "protect Cognito sign-in from brute force": pair a user pool with an AWS WAF Web ACL that includes a rate-based rule on the /oauth2/token path plus the AWS Managed Rules Account Takeover Prevention group.
AWS Secrets Manager vs AWS Systems Manager Parameter Store
Applications need to load database passwords, third-party API keys, OAuth client secrets, and SSL private keys at runtime — these must not live in source control, EC2 user-data, or container images. AWS offers two services for credential storage that SAA-C03 tests head-to-head.
AWS Secrets Manager — dedicated, rotation-first
AWS Secrets Manager is a dedicated secrets storage service with these defining features:
- Automatic rotation — built-in integration with Amazon RDS, Amazon Redshift, Amazon DocumentDB, and Amazon ElastiCache; custom rotation for any other secret via an AWS Lambda function.
- Encrypted at rest by default with AWS KMS (AWS-managed or customer-managed key).
- Fine-grained IAM policies and resource policies — cross-account secret sharing.
- Automatic versioning with staging labels (AWSCURRENT, AWSPREVIOUS, AWSPENDING) for zero-downtime rotation.
- Integration with Amazon RDS, Redshift, DocumentDB — rotation Lambda handles the master user password rotation end-to-end without app changes.
- JSON or key/value structure for multi-field secrets.
- Pricing — approximately USD 0.40 per secret per month, plus USD 0.05 per 10,000 API calls.
Use Secrets Manager when rotation is a requirement, when cross-account secret sharing is needed, or when the secret protects a high-value resource like an RDS master user.
AWS Systems Manager Parameter Store — free, general-purpose
AWS Systems Manager Parameter Store is a general-purpose configuration and secret storage service that is free for the standard tier (with a higher-quota, paid advanced tier at about USD 0.05 per advanced parameter per month).
- Three parameter types —
String,StringList, andSecureString.SecureStringencrypts with AWS KMS. - No built-in rotation — you can script rotation with EventBridge + Lambda, but it's not a first-class feature.
- Hierarchical naming —
/app/prod/db/password,/app/prod/db/host. Query by prefix. - Versioning with automatic history.
- Integration with AWS CloudFormation, AWS CodeBuild, AWS CodePipeline, Lambda, EC2, ECS.
- Standard tier — up to 4 KB per parameter, 10,000 parameters per AWS account, free.
- Advanced tier — up to 8 KB per parameter, 100,000 parameters per AWS account, policies (expiration, no-change alerts), paid.
Use Parameter Store for general configuration (feature flags, URLs, tuning parameters) and low-stakes secrets where rotation is optional. Use Secrets Manager when the requirement explicitly calls for rotation or for Amazon RDS credential rotation.
Side-by-side comparison
| Feature | AWS Secrets Manager | AWS Systems Manager Parameter Store |
|---|---|---|
| Primary purpose | Secrets with rotation | Configuration + lightweight secrets |
| Built-in rotation | Yes (RDS, Redshift, DocumentDB, custom Lambda) | No (DIY with Lambda + EventBridge) |
| Cost | ~USD 0.40 / secret / month + API calls | Free (standard tier), paid advanced tier |
| Max value size | Up to 64 KB | 4 KB standard / 8 KB advanced |
| Cross-account resource policy | Yes | Yes (advanced tier) |
| Hierarchical naming | Tags | Yes (native paths) |
| Integration with RDS managed rotation | Yes | No |
| KMS encryption | Always | SecureString type only |
If the SAA-C03 scenario emphasizes automatic rotation of database credentials (especially Amazon RDS master passwords), the answer is AWS Secrets Manager. If the scenario is about free, hierarchical storage of configuration or less-sensitive secrets, the answer is AWS Systems Manager Parameter Store. If the scenario says "lowest cost for storing a few API keys without rotation", prefer Parameter Store SecureString. Reference: https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html
An advanced pattern: Parameter Store supports a special aws:secretsmanager parameter type that dereferences to a Secrets Manager secret. This lets you standardize on Parameter Store paths across your infrastructure while keeping rotation-sensitive credentials in Secrets Manager. Handy when the SAA-C03 scenario requires both hierarchical naming and rotation. Reference: https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html
Securing External Connections — VPN vs AWS Direct Connect
Application security also covers how the traffic arrives. Two AWS services connect on-premises networks to AWS securely:
- AWS Site-to-Site VPN — IPsec tunnel over the public internet between your on-premises customer gateway and a virtual private gateway or AWS Transit Gateway. Encrypted, cheap (low hourly charge + standard egress), quick to provision. Throughput is typically up to ~1.25 Gbps per tunnel and subject to internet variability.
- AWS Direct Connect — dedicated physical fiber connection from your data center to an AWS Direct Connect location. Port speeds of 1, 10, or 100 Gbps with consistent latency and no public internet in the path. Not encrypted by default — pair with an IPsec VPN over Direct Connect for end-to-end encryption.
For SAA-C03 application security scenarios: if the requirement is "encrypted", "quick", "low cost" → Site-to-Site VPN. If the requirement is "consistent bandwidth", "low latency", "hybrid cloud production" → AWS Direct Connect. For "encrypted AND consistent bandwidth" → AWS Direct Connect + VPN overlay.
AWS Certificate Manager (ACM) — TLS Termination and Renewal
AWS Certificate Manager (ACM) provides free public TLS certificates for AWS resources and automatic renewal. ACM-issued certificates attach directly to Amazon CloudFront distributions, Application Load Balancers, Network Load Balancers, Amazon API Gateway REST APIs, and AWS Elastic Beanstalk environments. ACM handles renewal automatically as long as DNS validation or email validation passes ahead of expiry.
Key ACM facts for SAA-C03 application security:
- ACM public certificates are free.
- ACM-issued certificates cannot be exported — they bind to AWS resources.
- ACM certificates for Amazon CloudFront must be issued in us-east-1 (N. Virginia) regardless of the distribution's edge locations.
- Private certificates (for internal services) require AWS Private CA (formerly ACM Private CA), which is a paid add-on.
- TLS termination can happen at CloudFront, ALB, or NLB (for TLS passthrough NLB is TCP-only).
Key Numbers and Must-Memorize Facts for Application Security
Memorize this short list — it covers the vast majority of numeric and categorical traps on SAA-C03 application security questions.
- AWS WAF rate-based rule — 5-minute rolling window; 100 to 20,000,000 requests per 5 minutes threshold range.
- AWS WAF attaches to: CloudFront, ALB, API Gateway, AppSync, Cognito user pool, App Runner — not NLB, not raw EC2.
- AWS Shield Standard — free, automatic, every AWS account, Layer 3/4 common attacks.
- AWS Shield Advanced — ~USD 3,000/month, 1-year commitment, per AWS Organization; includes WAF, SRT, cost protection.
- AWS Firewall Manager — requires AWS Organizations + AWS Config; centralizes WAF, Shield Advanced, security groups, Network Firewall, Route 53 Resolver DNS Firewall.
- Amazon GuardDuty — regional; severity Low 1.0–3.9, Medium 4.0–6.9, High 7.0–8.9; delegated admin aggregates across Organization.
- Amazon Inspector — vulnerability scans for EC2, ECR images, Lambda.
- Amazon Macie — PII discovery in Amazon S3.
- Amazon Cognito user pool — authentication / directory; returns JWTs; supports Hosted UI and social federation.
- Amazon Cognito identity pool — authorization to AWS resources; returns temporary STS credentials; supports guest (unauthenticated) role.
- AWS Secrets Manager — ~USD 0.40 per secret per month; built-in rotation for RDS, Redshift, DocumentDB.
- AWS Systems Manager Parameter Store — standard tier free; up to 4 KB standard / 8 KB advanced; no built-in rotation.
- ACM certificates for CloudFront must be in us-east-1.
- Reference: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
Common Exam Traps — Application Security on SAA-C03
Expect at least one of these on every SAA-C03 attempt. Learn the pattern first, then read the answer choices.
Trap 1: Shield vs WAF
AWS Shield mitigates DDoS (volume, protocol, and with Advanced, application-layer floods). AWS WAF blocks malicious HTTP requests by content (SQL injection, XSS, bad user agents, geo-block, rate limit). If the scenario mentions "SYN flood" or "volumetric attack" → Shield. If the scenario mentions "SQL injection", "XSS", or "rate-limit a specific URL path" → WAF. If it's a sophisticated high-volume HTTP flood against a bank or gaming platform → Shield Advanced + WAF rate-based rule.
Trap 2: GuardDuty vs Inspector vs Macie
- GuardDuty = attacker/anomaly detection (active threats in logs).
- Inspector = software vulnerability scanner (CVEs on EC2, ECR, Lambda).
- Macie = PII/PHI discovery in Amazon S3.
Any answer choice that uses GuardDuty for "patch management" or Macie for "threat detection" is a distractor.
Trap 3: Cognito user pool vs identity pool
- User pool = authentication directory; returns JWTs. Sufficient for "let users sign in to my app".
- Identity pool = federation to IAM roles; returns AWS STS credentials. Required for "let the app call Amazon S3 / DynamoDB directly with per-user permissions".
- User pool + identity pool together = the most common real-world pattern.
Trap 4: Cognito vs IAM Identity Center
- Cognito = end users of your application (customers, mobile/web app users).
- IAM Identity Center = workforce (employees signing in to AWS accounts).
Trap 5: Secrets Manager vs Parameter Store
If the scenario says "rotate", "RDS master password", or "cross-account secret sharing" → Secrets Manager. If it says "free", "configuration parameters", "hierarchical paths", or "lowest cost" → Parameter Store. Both encrypt with AWS KMS; rotation is the decider.
Trap 6: WAF does not attach to NLB
AWS WAF is Layer 7 (HTTP/HTTPS). An NLB is Layer 4 (TCP/UDP/TLS). WAF cannot attach to NLB. To apply WAF to an NLB-fronted workload, put Amazon CloudFront in front of the NLB (or switch to an Application Load Balancer if HTTP).
Trap 7: Firewall Manager requires AWS Organizations + Config
Any answer choice that uses Firewall Manager on a standalone AWS account, or without AWS Config enabled, is wrong. Firewall Manager is strictly a multi-account, Organization-level AWS service.
Trap 8: Shield Advanced cost protection is not an automatic refund
Shield Advanced cost protection credits back scale-out charges caused by a DDoS event on protected resources — but only when you open a case with AWS and only for qualifying services (CloudFront, ELB, EC2, Global Accelerator, Route 53). It is not an automatic billing discount.
Application Security vs Network Security — Scope Boundary
Application security and network security overlap but cover different layers:
- Network security (VPC topic): security groups (stateful), network ACLs (stateless), NAT gateways, VPC endpoints, AWS Network Firewall, Amazon VPC Traffic Mirroring, Route 53 Resolver DNS Firewall — operate at Layer 3/4, filter by IP and port.
- Application security (this topic): AWS WAF, AWS Shield, Amazon GuardDuty, Amazon Cognito, AWS Secrets Manager, AWS Certificate Manager — operate at Layer 7 and above, filter by HTTP content, token, behavior, or identity.
Both are needed. A typical SAA-C03 "defense in depth" answer layers multiple services: Security groups + NACLs (network) + AWS WAF (application) + Shield Advanced (DDoS) + GuardDuty (detection) + Cognito (identity) + KMS (encryption) + Secrets Manager (credentials).
Practice Scenario Mappings — Task 1.2 Application Security
- "Block SQL injection on the public web tier" → AWS WAF with AWS Managed Rules SQL database rule group.
- "Stop brute-force attacks on
/login" → AWS WAF rate-based rule scoped to/login, optionally with the Account Takeover Prevention managed rule group. - "Protect a public website from volumetric DDoS with 24/7 expert response" → AWS Shield Advanced.
- "Apply the same WAF rule set to 20 AWS accounts automatically" → AWS Firewall Manager.
- "Detect compromised EC2 instances doing cryptocurrency mining" → Amazon GuardDuty.
- "Identify which Amazon S3 buckets contain credit card numbers" → Amazon Macie.
- "Scan EC2 instances for unpatched CVEs" → Amazon Inspector.
- "Let mobile app users sign in with Google and upload photos to Amazon S3" → Amazon Cognito user pool + identity pool.
- "Store and automatically rotate an Amazon RDS master password" → AWS Secrets Manager.
- "Free storage of a large tree of configuration values" → AWS Systems Manager Parameter Store (standard tier).
- "Encrypted TLS certificate for a CloudFront distribution" → AWS Certificate Manager in us-east-1.
FAQ — Application Security and Protection Top Questions
Q1: When do I use AWS WAF vs AWS Shield vs AWS Firewall Manager?
AWS WAF filters HTTP/HTTPS requests against content rules (SQL injection, XSS, rate limit, geo-block) and attaches to Amazon CloudFront, Application Load Balancer, Amazon API Gateway, AWS AppSync, Amazon Cognito user pools, and AWS App Runner. AWS Shield mitigates DDoS — Shield Standard is automatic and free for every AWS account at Layer 3/4, while Shield Advanced is a paid ~USD 3,000/month subscription that adds application-layer DDoS mitigation (with AWS WAF), the AWS Shield Response Team, and cost protection. AWS Firewall Manager is the multi-account policy engine on top of AWS WAF and AWS Shield Advanced, plus security groups and AWS Network Firewall, and requires AWS Organizations and AWS Config. You often use all three together: Shield absorbs the flood, WAF filters by content, Firewall Manager enforces the same rules across every AWS account in the organization.
Q2: What does an AWS WAF rate-based rule actually do?
A rate-based rule counts requests from each source IP (or configurable aggregation key such as a header or forwarded IP) over a rolling 5-minute window and blocks sources that exceed the configured threshold (minimum 100 requests per 5 minutes, maximum 20,000,000). You typically combine a rate-based rule with a scope-down statement to apply the limit only to a specific URL path such as /login or /api/search. This is the AWS WAF primitive for brute-force login protection, scraper throttling, and application-layer DDoS mitigation — a core SAA-C03 pattern.
Q3: What's the difference between Amazon Cognito user pools and identity pools, and when do I need both?
A user pool is a managed user directory — it handles sign-up, sign-in, MFA, password reset, Hosted UI, and social federation (Google, Apple, Facebook, Amazon, OIDC, SAML). On successful sign-in, the user pool returns JSON Web Tokens (ID, access, refresh) that your backend can verify. An identity pool (also called federated identities) exchanges a login token — from a user pool, a social provider, or SAML/OIDC — for short-term AWS STS credentials mapped to an IAM role, so the client application can call AWS services directly. If your app only needs to authenticate users and talk to its own backend, a user pool alone is enough. If your app also needs to call Amazon S3, Amazon DynamoDB, or AWS Lambda directly from the client with per-user permissions, add an identity pool on top.
Q4: How should I choose between AWS Secrets Manager and AWS Systems Manager Parameter Store?
If the requirement includes automatic rotation (especially Amazon RDS, Amazon Redshift, or Amazon DocumentDB master credentials), cross-account secret sharing with resource policies, or formal secret lifecycle management, choose AWS Secrets Manager (~USD 0.40 per secret per month). If the requirement is free or lowest cost, hierarchical configuration storage, up to 4 KB standard parameters, or occasional secrets without rotation, choose AWS Systems Manager Parameter Store (standard tier is free; advanced tier adds policies and 8 KB limits for a small fee). Both encrypt with AWS KMS; rotation and native Amazon RDS integration are the deciders.
Q5: What does Amazon GuardDuty detect that AWS CloudTrail alone doesn't?
AWS CloudTrail is a log of every AWS API call — it's a raw record. Amazon GuardDuty analyzes CloudTrail management events, CloudTrail S3 data events, Amazon VPC Flow Logs, Amazon Route 53 DNS logs, Amazon EKS audit logs, Amazon RDS login activity, and optional Runtime Monitoring agents against AWS threat intelligence and machine-learning models, then emits findings with Low (1.0–3.9), Medium (4.0–6.9), and High (7.0–8.9) severity scores. GuardDuty tells you things like "this EC2 instance is communicating with a known cryptocurrency-mining command-and-control domain" or "this IAM user's access key is being used from a geography it has never been used from before" — conclusions CloudTrail alone cannot draw. CloudTrail captures the what; GuardDuty decides whether it's an attack.
Q6: Can AWS WAF protect a Network Load Balancer or a raw EC2 instance?
No. AWS WAF inspects HTTP/HTTPS (Layer 7) and attaches only to Amazon CloudFront, Application Load Balancer, Amazon API Gateway, AWS AppSync, Amazon Cognito user pools, AWS App Runner, and AWS Verified Access. Network Load Balancers operate at Layer 4 (TCP/UDP/TLS passthrough) and are not HTTP-aware, so AWS WAF has nothing to inspect. To apply WAF protection to an NLB-fronted workload, either put Amazon CloudFront in front of the NLB or replace the NLB with an Application Load Balancer if the workload is HTTP. AWS Shield still protects NLBs and Elastic IPs.
Q7: Does AWS Shield Advanced protect me from running up a huge bill during a DDoS attack?
Yes — AWS Shield Advanced cost protection credits back the scale-out charges triggered by a DDoS event on qualifying protected resources (Amazon CloudFront data transfer, Application Load Balancer and Classic Load Balancer hours, Amazon Route 53 queries, Amazon EC2 instances, AWS Global Accelerator data transfer). It is not an automatic refund — you must open an AWS Support case referencing the attack, and the credits apply only to the scale-out portion attributable to the attack. Combined with the AWS Shield Response Team and application-layer DDoS mitigation with AWS WAF, cost protection is one of the main reasons high-availability public-facing workloads (gaming, finance, ad-tech) subscribe to Shield Advanced.
Further Reading
- AWS WAF Developer Guide
- AWS WAF Rate-Based Rule Statement
- AWS Managed Rule Groups for WAF
- AWS Shield Developer Guide
- AWS Shield Advanced Overview
- AWS Firewall Manager Developer Guide
- Amazon GuardDuty User Guide
- Amazon GuardDuty Findings and Severity
- Amazon Cognito Developer Guide
- Amazon Cognito User Pools vs Identity Pools
- AWS Secrets Manager User Guide
- AWS Systems Manager Parameter Store
- Amazon Macie User Guide
- AWS SAA-C03 Exam Guide (PDF)