Identity, Access Control and Data Protection
Domain 2 made practical: lock down the root user, choose between IAM users, groups and roles, read a policy evaluation the way AWS does (explicit deny wins, unions and ceilings), separate IAM Identity Center from Cognito, pick the right MFA and credential type, tell security groups from network ACLs, choose WAF versus Shield versus Firewall Manager, encrypt at rest and in transit with KMS envelope encryption, and name every in-scope detection service in one line each.
Security is the heaviest single domain on CLF-C02: Domain 2 carries 30% of the scored content, and its two access tasks (2.3 "Identify AWS access management capabilities" and 2.4 "Identify components and resources for security") are the most reliably tested of the whole exam. AWS's own framing starts from one uncomfortable sentence about the root user: it has "complete access to all AWS services and resources". Everything else in this lesson, MFA, roles, Identity Center, least privilege, security groups, WAF, encryption, exists to make sure that sentence never becomes an incident.
====================================================================
CLF-C02 DOMAIN 2 β SECURITY LESSON CARD (facts as of Oct 2026)
====================================================================
ROOT 1 identity/account Β· complete access Β· MFA within
35 days Β· up to 8 MFA devices Β· NO access keys Β·
password 8-128 chars, >= 3 of 4 character classes
---------------------------------------------------------------------
IAM user = permanent, long-term creds (<= 2 access keys)
group = users + 1 identity policy, NOT a principal,
not nestable, no default group
role = permissions policy (what) + trust policy
(who) -> STS temporary credentials
policy = identity-based (user/group/role) OR
resource-based (on the resource itself)
EVALUATION any explicit Deny wins -> identity UNION resource
-> ceiling: SCP + RCP + boundary must all allow
-> cross-account: BOTH accounts must allow
---------------------------------------------------------------------
NETWORK security group = instance level, ALLOW only,
stateful, all rules evaluated, default
outbound allow-all / inbound from itself
network ACL = subnet level, allow AND deny,
stateless, rules 1-32766 first match wins,
default allow-all + `*` DENY catch-alls
both: no charge (as of Oct 2026)
---------------------------------------------------------------------
EDGE WAF = Layer 7 (SQLi, XSS), attach a web ACL,
$5/web ACL + $1/rule + $0.60/million req
Shield Standard = automatic, $0, non-configurable
Shield Advanced = $3,000/month, 1-year commitment
Firewall Manager = org-wide policy push (Organizations)
---------------------------------------------------------------------
DATA at rest = KMS / SSE-S3 (default since 2023-01-05)
in transit = TLS 1.2 required, 1.3 recommended
envelope encryption: KMS key wraps the data key,
the data key encrypts the bulk data
====================================================================Scope discipline. Every service named as examinable in this lesson appears on the CLF-C02 in-scope list or in a Domain 2/3 task statement (AWS Artifact, ACM, CloudHSM, Cognito, Detective, Directory Service, Firewall Manager, GuardDuty, IAM, IAM Identity Center, Inspector, KMS, Macie, RAM, Secrets Manager, Security Hub, Shield, WAF, plus CloudTrail, Config, CloudWatch, Trusted Advisor, Systems Manager from the task statements). Anything else is labelled as a case-study aside or an out-of-scope distractor, never as a fact you must select.
In this lesson you will:
- protect the root user: MFA device limits, the 35-day rule, no root access keys, and the tasks only root can do;
- build IAM from its four objects: users, groups, roles and policies;
- separate identity-based from resource-based policies and run the evaluation logic: explicit deny, union, ceilings, cross-account;
- choose roles versus users from the question stem: cross-account, EC2 instance profiles, federation, external ID;
- place IAM Identity Center (workforce SSO), Cognito (customer identity) and Directory Service (enterprise AD) correctly;
- pick an authentication option: passkeys/FIDO, virtual TOTP, hardware TOTP, access keys, STS temporary credentials;
- compare security groups and network ACLs on scope, rules, statefulness and defaults;
- choose between AWS WAF, Shield Standard, Shield Advanced and Firewall Manager: with real bill arithmetic;
- protect data at rest and in transit, and follow KMS envelope encryption and the three key types;
- one-line every in-scope threat-detection service and run a least-privilege checklist;
- study four AWS-published security and compliance case studies: centralised network policy, identity-based access, inherited FedRAMP controls and faster authorisation;
- track the 2026 guide and tooling updates that touch IAM, policy scope and security tooling: every bullet sourced and date-stamped;
- practise with 12 exam-style questions plus four interactive checks.
1. The root account: one identity, unlimited reach
1.1 What root is
There is exactly one root identity per AWS account, an email address plus a password, and AWS documents that it has "complete access to all AWS services and resources", including billing. It cannot be deleted, it cannot be restricted by an IAM policy inside its own account, and it bypasses MFA-less checks the moment it is used. This is why Domain 2 task 2.3 lists "importance of protecting the AWS root user account" as knowledge and "identifying tasks that only the account root user can perform" as a skill: the exam wants you to know both why root matters and which tasks genuinely require it.
Root property | What AWS documents | Exam consequence |
|---|---|---|
Count | One root identity per account | "Create a second root user" is always wrong |
Reach | "complete access to all AWS services and resources" | No policy can be attached to limit it inside its account |
Credentials | Password (8 to 128 chars, β₯3 of 4 character classes, must not match account name/email) | Root access keys are never recommended |
MFA | Register within 35 days of first sign-in; up to 8 MFA devices, any mix | SMS MFA is no longer offered in IAM |
Daily use | Should be used only for root-only tasks | Administrative work belongs to an IAM user or Identity Center |
1.2 Tasks only the root user can perform
The list is short, memorable and examinable; these are the answers to "which action requires the root user?":
- changing the account email, password or access keys for the root identity itself (standalone accounts);
- closing or reopening a standalone account;
- restoring IAM user permissions: the last-administrator lockout recovery;
- activating IAM access to the billing console;
- viewing certain tax invoices;
- registering for the EC2 Reserved Instances Marketplace;
- enabling S3 MFA Delete;
- editing or deleting an S3 or SQS resource policy that denies all principals;
- GovCloud signup and root keys; linking an Amazon Mechanical Turk account.
Everything else on the exam, creating IAM users, attaching policies, starting EC2, writing bucket policies, resetting a colleague's password, is done by an administrative identity, never by root.
1.3 Example E1: day-1 root hardening, step by step
A new production account is opened. The hardening sequence below uses only verified limits:
# | Action | Number to remember |
|---|---|---|
1 | Root email β a group alias ( aws-root@company.com), not a personal mailbox | one shared mailbox, split recovery phone |
2 | Strong root password | 8 to 128 characters, β₯3 of 4 classes |
3 | Register MFA: a virtual authenticator on the phone and a hardware token in the safe | 2 of the maximum 8 devices; registration within 35 days |
4 | No root access keys: ever | 0 keys |
5 | Administrative identity lives in IAM Identity Center (multi-account) or as an admin IAM user (single account) | humans get federation |
6 | CloudTrail trail to a private bucket with log-file validation; Config and GuardDuty switched on | Event history is free for 90 days |
7 | EventBridge rule on root sign-in β SNS β chat channel | detect unusual root use fast |
8 | In AWS Organizations: strip member-account root credentials and/or attach an SCP denying member-account root actions | SCPs filter, they never grant |
- π Did you know? AWS's root-user best-practice page recommends multi-person approval for root: one group holds the account password, a different group holds the MFA device, so no single employee can act as root alone. The same page caps MFA at eight devices per root user and tells you to register root MFA within 35 days of first sign-in: two numbers the exam likes to quote back at you (as of Oct 2026; verify current before use).
Root trap family. If an option describes an ordinary administrative task, "create an IAM user", "attach a policy", "stop an EC2 instance", "change a bucket policy", and the justification is "so that root can do it", it is wrong: those tasks never require root. The correct root answers are the short list in Β§1.2, and enabling MFA Delete is the one that catches most candidates.
2. IAM building blocks: users, groups, roles and policies
2.1 The four objects, exactly
Object | What it is | Credentials / mechanics | Exam gotchas |
|---|---|---|---|
IAM user | A permanent identity inside one account | Long-term: console password + MFA; maximum of two access keys per user; secret key shown once | Long-lived credentials = rotate and retire; not the default answer for workloads |
IAM group | A collection of users that shares one identity policy | No credentials of its own | Cannot be a Principal, cannot be nested, no default user group |
IAM role | A set of permissions plus a trust policy defining who may assume it | Assuming it yields STS temporary security credentials | "Roles are the primary way to grant cross-account access" |
Permissions policy | The document that says what is allowed or denied | JSON, attached to a principal (identity-based) or to a resource (resource-based) | Explicit Deny beats every Allow |
A role has two halves and both are mandatory: the permissions policy answers what may the session do, the trust policy (a resource-based policy attached to the role) answers who may assume it. A perfectly written permissions policy with a trust policy that names nobody is useless; it is a locked door with a sign reading "employees only" and no employees listed on it.
2.2 Identity-based versus resource-based policies
Identity-based policy | Resource-based policy | |
|---|---|---|
Attached to | User, group or role | The resource itself (S3 bucket, SQS queue, SNS topic, KMS key, VPC endpoint, role trust) |
Format | Can be AWS managed, customer managed or inline | Inline only |
Names a principal? | Implicit: the principal it is attached to | Can name a principal in another AWS account |
Typical exam role | "Give this team read access to reports/*" | "Allow this bucket to be read by account 1111" / "Deny non-HTTPS requests" |
AWS managed policies are broad, AWS-maintained starting points (job functions such as read-only administration). Customer managed policies are the ones you write and refine: the least-privilege end state. Inline policies are embedded in a principal and are deleted with it, which makes them useful for one-shot permissions and dangerous as a default.
2.3 How AWS evaluates a request: explicit deny wins
AWS's documented order, compressed to the four moves that appear on the exam:
- Authenticate the caller (who is this?).
- Gather every applicable policy: identity-based and resource-based, plus SCPs, RCPs, permissions boundaries and session policies.
- Any explicit
Denyanywhere wins. AWS "first checks all policies for aDeny": one deny, in any applicable document, beats every allow. - Otherwise compute the union of identity-based and resource-based allows, then intersect it with the ceiling: permissions boundaries, SCPs and RCPs must all allow (an intersection). SCPs grant nothing; they only filter what an identity inside the account could otherwise do.
Union vs intersection is the highest-yield sentence in Domain 2. Identity βͺ resource = union (either document can allow). Boundary / SCP / RCP = intersection (all must allow; they can only narrow). And the claim "attach an SCP to grant access" is always wrong: service control policies filter, they never give.
2.4 Example E2: effective permissions for John (three layers)
John's identity policy allows s3:Get* on reports/*. The reports bucket policy says Deny s3:* when aws:SecureTransport is false. The account's SCP says Deny s3:* outside the home Region.
Request | Layers in play | Result | Why |
|---|---|---|---|
(a) HTTPS GET, home Region | 1 allow, 0 applicable denies | Allowed | Identity βͺ resource = union of allows; no deny matched |
(b) Plain HTTP GET, home Region | 1 allow, 1 resource deny | Denied | Explicit resource Deny wins over the identity Allow |
(c) HTTPS GET, another Region | 1 allow, 1 SCP deny | Denied | The SCP ceiling intersects; it can only subtract, never add |
Count the layers: one allow, two denies, three policy types, and read the direction of each request before choosing. Note what would happen if the identity policy were removed: (a) becomes an implicit deny, so removing a grant is a real mitigation, not a formality.
2.5 Permissions boundaries and the least-privilege tooling
A permissions boundary is a managed policy that sets the maximum an identity policy may grant. It grants nothing by itself: its exam use case is safe delegation: let a developer write their own identity policy, but cap it with a boundary so they can never exceed, say, read-only plus a sandbox bucket. The narrowing toolkit for least privilege is:
-
start from an AWS managed job-function policy;
-
refine with IAM Access Analyzer (generates policies from CloudTrail activity, validates external/public access, previews cross-account exposure);
-
check last accessed information to delete permissions nobody uses.
-
π Did you know? A group cannot be used as a
Principalin any AWS policy; you attach a policy to a group, but you can never allow a group in a bucket policy or role trust policy; you must name its users or, better, a role. Groups also cannot be nested, and there is no default user group in IAM (as of Oct 2026).
How to answer
Matching exercise with 6 pairs. Match each item on the left with its answer on the right.
Match each policy document to the single job it performs in AWS's evaluation logic:
Drag answers from here:
3. Roles versus users: the decision the exam repeats
3.1 The use-case table
Use a role when⦠| The mechanism | Use an IAM user only when⦠|
|---|---|---|
A workload runs on EC2 / Lambda / ECS / EKS | Instance profile (EC2) or execution role; credentials come from the instance metadata service and auto-refresh | The workload genuinely cannot assume roles (some third-party plugins) |
Cross-account access | Role in the trusting account; the caller's identity policy grants sts:AssumeRole | A legacy or break-glass account with MFA and tight controls |
Federation of human users | SAML 2.0 / OIDC IdP, or IAM Identity Center permission sets | Third-party AWS tools that have no Identity Center support |
An external auditor needs access | Role + external ID in the trust policy (confused-deputy defence) | Service-specific long-lived credentials (discouraged) |
A service acts on your behalf | Service role or service-linked role | : |
"β¦with no long-term credentials" anywhere | Temporary STS credentials | A long-lived CLI key on a laptop (allowed, not preferred) |
Session arithmetic worth memorising: AssumeRole sessions last up to 43,200 seconds = 12 hours, while role chaining (assuming a second role from a first) is capped at 1 hour: a 12Γ difference. During a session the role's permissions replace the caller's for the duration.
3.2 Example E3: the cross-account audit role
An auditor in account 1111 needs read-only access to account 2222. Two documents, both mandatory:
Account | Document | Content |
|---|---|---|
2222 (trusting) | AuditorRole trust policy (resource-based) | Allows sts:AssumeRole for account 1111, with an external ID because a third party is involved |
2222 | Role permissions policy | ReadOnlyAccess-style permissions |
1111 (caller) | Identity policy on the auditor's group | Allows sts:AssumeRole on that role ARN |
Either policy alone fails: trust without an identity grant gives "you are not authorized"; an identity grant without trust gives "not authorized to perform sts:AssumeRole". The session is temporary (1-hour default, up to 12 hours): nothing to leak, nothing to rotate, and access disappears when the role's trust is revoked.
3.3 Example E4: the EC2 instance profile, zero shipped keys
An application on EC2 must read s3://photos. Instead of copying an access key into the AMI:
- Create role
Get-picswhose trust policy allows the serviceec2.amazonaws.com. - Attach a permissions policy allowing
s3:GetObjecton that bucket only. - Attach the role to the instance through an instance profile.
- The SDK reads temporary credentials from the instance metadata service and refreshes them before expiry: the developer never sees a secret.
If the instance is compromised, the attacker inherits exactly one permission on exactly one bucket: the blast radius is the policy document, not the company's AWS account. Contrast the IAM-user answer: an access key baked into an AMI is a credential with no expiry, no scope boundary beyond its policy, and a habit the exam marks wrong.
- π Did you know? Role chaining deserves its own mnemonic: 12 hours for a single
AssumeRole, 1 hour for a chained one (43,200 s vs 3,600 s, as of Oct 2026). AWS caps chaining precisely because each hop multiplies the chance that a stale session outlives the person who started it.
4. IAM Identity Center: the workforce answer
AWS Single Sign-On was renamed AWS IAM Identity Center on 26 July 2022, and the exam still rewards you for knowing both names. Identity Center is AWS's workforce single sign-on: employees get one login that opens many AWS accounts and AWS applications, with permissions delivered through permission sets - AWS's named bundle of permissions applied to a user or group, with no long-term keys.
Attribute | Detail (exam depth) |
|---|---|
Who it is for | Workforce: employees and contractors, not your application's customers |
Identity source | Built-in directory, or an external SAML 2.0 / OIDC identity provider |
Grant model | Permission sets applied to users or groups; access is session-bound and issues no long-term keys |
Scope | An organization instance is recommended so all accounts share one directory |
Relationship to IAM | Identity Center uses IAM roles underneath; it does not replace IAM itself |
The pattern to memorise: 12 accounts, one login, no IAM users β IAM Identity Center. AWS's own best-practice wording is "Require human users to use federation" and prefer "phishing-resistant MFA such as passkeys and security keys": Identity Center is how that recommendation scales past a handful of accounts.
The three identity services, never swapped:
- IAM Identity Center β your workforce (employees) across AWS accounts;
- Amazon Cognito β your application's customers (sign-up/sign-in on a website or mobile app);
- AWS Directory Service β an enterprise Active Directory (AWS Managed Microsoft AD, AD Connector as "a proxy service", or Simple AD). A question about 700 employees across 12 accounts is Identity Center; a question about shoppers creating an account in your app is Cognito; a question about on-premises AD users reaching EC2 is Directory Service.
5. Amazon Cognito: customer identity at exam depth
Cognito is the customer identity (CIAM) option, and AWS describes it as three things in one service: "a user directory, an authentication server, and an authorization service". It sits at a different altitude from IAM: your application's users are not IAM users and never see the AWS console.
Component | What it does | What it returns |
|---|---|---|
User pool | The user directory + authentication: sign-up/sign-in, federation to social/enterprise IdPs, password policies, TOTP or SMS MFA | JWT tokens to your app |
Identity pool | Authorization: exchanges a valid token (from a user pool or another IdP) for AWS access | Temporary, limited-privilege AWS credentials via STS |
Both together | The app authenticates the customer and then touches S3/DynamoDB/Lambda directly | Directory β token β STS credentials |
Exam depth stops exactly there: know that user pools authenticate, identity pools authorise AWS access, that the AWS credentials are temporary, and that Cognito is for customers while IAM Identity Center is for workforce. Deeper topics (hosted UI customization, lambda triggers, advanced security features) are not what a practitioner question asks for.
How to answer
Fill-in-the-blank exercise with 5 blanks. Type the missing words, then check your answer.
Complete the identity vocabulary for CLF-C02:
Employees across 12 AWS accounts sign in once through blank, which delivers access via blank applied to their users and groups, with no long-term keys. An application's shoppers use blank, whose blank holds the directory and issues JWTs, while its blank exchanges a token for temporary AWS credentials from STS.
Word Bank, drag words into the blanks above:
6. Authentication options and MFA
6.1 The five ways to prove who you are
Option | Credential lifetime | Typical use | Limits (as of Oct 2026) |
|---|---|---|---|
Console password + MFA | Long-term password | Human sign-in to the console | Passkeys / FIDO security keys (phishing-resistant, recommended), virtual authenticator (TOTP), hardware TOTP; up to 8 MFA devices; SMS MFA support ended |
Access keys | Long-term | CLI, SDK, API from a workstation | Maximum of two access keys per user; secret key shown once; never commit to source control |
STS temporary credentials | Minutes to 12 hours | Roles, instance profiles, Lambda execution roles, Cognito identity pools, IAM Roles Anywhere | Preferred pattern: expires by itself |
IAM Identity Center | Session-bound, federated | Workforce across accounts | One login, permission sets, no long-term keys |
Directory Service | Enterprise directory | On-premises AD identities reaching AWS | AWS Managed Microsoft AD, AD Connector (proxy), Simple AD |
AWS's best-practice wording to recognise: "Require human users to use federation" and use "phishing-resistant MFA such as passkeys and security keys". The trap option recommends SMS MFA: AWS ended support for enabling SMS multi-factor authentication in IAM, so any answer that says "enable SMS MFA on the root user" is wrong.
β οΈ Two credential numbers, two traps. First, SMS MFA is not an IAM option: the supported factors are passkeys/FIDO security keys (phishing-resistant and recommended), virtual authenticator (TOTP) and hardware TOTP, so "secure the root user with an SMS code" is always wrong, even though a Cognito user pool may still send SMS codes to your application's users. Second, two is the ceiling for access keys per IAM user and zero is the recommendation for root; a "fix" that mints a third key, or a root access key "just for this script", answers the wrong question.
6.2 Where secrets live
Task 2.3 explicitly names credential storage: AWS Secrets Manager and AWS Systems Manager Parameter Store (SecureString). Hard-coded keys in a repository, in an AMI or in environment variables of a public Lambda are the anti-pattern the exam tests by inversion: the correct answer always retrieves a secret at runtime from one of those two services, or avoids the secret entirely by using a role.
6.3 Example E5: counting the credentials in one account
A single-account setup has: root (0 access keys), 6 IAM users each with 2 access keys, 10 roles, 3 permission sets in Identity Center.
Identity | Long-term secrets | Temporary credentials |
|---|---|---|
Root | 0 (policy forbids them) | : |
6 IAM users | 12 access key pairs at the ceiling (6 Γ 2) | Console sessions with MFA |
10 roles | 0 | Up to 12 hours per AssumeRole session (1 hour if chained) |
3 permission sets | 0 | Session-bound access in each account |
The audit question writes itself: 12 long-lived secrets exist and only 2 people need them. The remediation is not "add MFA"; it is to replace the users with Identity Center groups and roles, delete the unused keys, and keep the remaining pairs on a rotation schedule.
- π Did you know? The two-access-keys-per-user ceiling is deliberate: key one while key two is still live lets you rotate without downtime (update the application, then delete the old key). AWS shows the secret exactly once: after that, the only recovery is creating a new key pair, which is why "view the old secret key again" is never a valid option.
7. Security groups versus network ACLs
Both are the VPC's packet filters, both are free of charge (as of Oct 2026), and they differ on four axes the exam tests relentlessly.
Characteristic | Security group | Network ACL |
|---|---|---|
Scope | Instance / network interface level | Subnet level (one default NACL per subnet) |
Rule action | Allow only: no deny rules | Allow and deny |
Evaluation | All rules evaluated; allow if any match | Rules numbered 1 to 32766, lowest first, first match stops |
State | Stateful, return traffic is auto-allowed | Stateless, return traffic must be explicitly allowed |
Default | Inbound only from itself; outbound allow all | Allow all inbound and outbound plus * DENY catch-alls |
Referencing | Can reference other security groups | Cannot reference security groups |
Charge | None | None |
AWS guidance | "Use security groups as the primary mechanism" | Defense-in-depth second layer / deny-list |
Two consequences follow directly from the state column: with a stateful security group you open 443 inbound and the replies flow back automatically; with a stateless NACL you must also allow the ephemeral return ports inbound, or the connection never completes. And neither device filters DNS, DHCP, the instance metadata service, ECS task metadata or Time Sync; those bypass them by design.
7.1 Defaults are not "secure"
- The default security group allows all outbound and inbound only from itself: usable, not secure.
- The default network ACL allows all traffic in and out, plus
*DENY rules that always sit at the bottom of the list: permissive by default, with the deny catch-all available for a quick block.
Neither default is an answer to "how do I restrict this", and "add a deny rule to the security group" is always wrong: security groups have no deny rules: use a NACL, or deny at the IAM/bucket-policy layer.
7.2 Example E6: layered network defence
An internet-facing three-tier application, assembled from verified behaviour:
Layer | Device | Rule | Why here |
|---|---|---|---|
1. Internet β ALB | Security group on the ALB | Allow 443 from 0.0.0.0/0 only | Instance-level, stateful, primary mechanism |
2. ALB β app tier | Security group on the app instances | Allow 8080 from the ALB security group (SG referencing) | Tiers trust each other, not the world |
3. App β database | Security group on RDS | Allow 5432 from the app security group only | Never open the database to a subnet |
4. Public subnet edge | Network ACL | Deny a known-bad CIDR, numbered rule 100 (stateless, first match wins) | Instant, subnet-wide deny without touching instances |
5. HTTP layer | AWS WAF web ACL on the ALB | AWS Managed Rules (SQLi, XSS, bad inputs) + rate-based rule | Layer 7 inspection a NACL cannot do |
6. Volumetric DDoS | Shield Standard | Already on, no subscription | Automatic at L3/L4 |
7. Organisation scale | AWS Firewall Manager | Push the WAF policy to every OU | New accounts inherit it |
The mental model: NACL = the subnet's bouncer with a blacklist; security group = the instance's firewall with only a guest list; WAF = the application-layer inspector; Shield = the anti-DDoS umbrella.
- π Did you know? Security group rules can reference other security groups, which is how the tiered pattern above works without hard-coding CIDR blocks, and it is why moving an application tier to a new subnet requires no rule edits at all. Network ACLs, by contrast, are subnet-bound and IP-based by nature (as of Oct 2026; per-VPC and per-SG quotas apply, verify current before use).
8. AWS WAF, AWS Shield and AWS Firewall Manager
Three services, three altitudes. Confusing them costs multiple questions, because each has a one-sentence identity:
AWS WAF | AWS Shield Standard | AWS Shield Advanced | AWS Firewall Manager | |
|---|---|---|---|---|
Layer | 7: HTTP/S requests | 3/4 volumetric (plus L7 mitigation in Advanced) | 3/4 + automatic L7 mitigation | Policy administration, not packet filtering |
What it stops | "SQL injection or XSS", bots, rate abuse | "SYN or UDP floods" automatically | Same, plus advanced attacks | : (it manages the others) |
Activation | Attach a web ACL to CloudFront, ALB, API Gateway, AppSync, Cognito, App Runner, Amplify | Automatic, no subscription | Paid, 1-year commitment | Requires AWS Organizations |
Cost (as of Oct 2026) | $5 per web ACL/month + $1 per rule/month + $0.60 per million requests | $0: "provided automatically and at no extra charge" | $3,000/month per payer + DDoS data-transfer-out charges | $100 per policy per Region per month |
Signature | Actions: allow / block (HTTP 403) / count / challenge | Non-configurable | Shield Response Team (requires Business or Enterprise Support) | Central policy, compliance dashboard, auto-covers new resources |
WAF capacity is measured in Web ACL Capacity Units (WCUs); rules may be custom, AWS Managed Rules, or Marketplace rule groups, plus IP set/regex set and rate-based rules. Shield Advanced also bundles up to 50 billion WAF requests per month per payer ID and DDoS cost protection (reimbursement of scaling charges caused by an attack).
8.1 Example E7: the WAF bill
AWS publishes its own worked example, and the arithmetic generalises:
Configuration | Monthly maths | Total |
|---|---|---|
1 web ACL + 5 rules + 10 M requests | 1) + (10 Γ $0.60) | $16.00 |
AWS's published case: 1 web ACL + 19 rules + 10 M requests | $5 + $19 + $6 | $30.00 |
3 web ACLs + 24 rules + 35 M requests | $15 + $24 + $21 | $60.00 |
Notice what does not appear in the bill: security groups and network ACLs are free, so "add a security group rule" is the cost answer when the question is about filtering traffic that never reaches an HTTP rule set.
8.2 Example E8: Shield Advanced arithmetic
Scenario | Maths (as of Oct 2026) | Total |
|---|---|---|
Shield Advanced subscription, no attack | $3,000 | $3,000/month, 1-year commitment |
+ 1,000 GB DDoS data-transfer-out via ELB/EC2/Global Accelerator | 0.050) | $3,050/month |
+ 1,000 GB DDoS out via CloudFront | 0.025) | $3,025/month |
One Firewall Manager policy, one Region | $100 (AWS's published all-in example with WAF and Config charges totals $106.40) | β$106.40/month |
The phrasing test is reliable: "free, automatic DDoS protection" β Shield Standard; "stop SQL injection on this ALB" β WAF; "apply this rule set to every account in the organization" β Firewall Manager.
The three WAF/Shield traps. (1) "Subscribe to Shield Standard": impossible, it is automatic and free. (2) "Configure Shield Standard rules": not configurable; configuration belongs to WAF or Shield Advanced. (3) "Firewall Manager inspects packets"; it does not; it pushes policy (WAF, Shield Advanced, security groups, network ACLs, Network Firewall, DNS Firewall) across an AWS Organization and requires Organizations to be enabled.
9. Data protection: at rest, in transit, and KMS
9.1 The two directions
Encryption at rest | Encryption in transit | |
|---|---|---|
Protects against | Someone reading the medium: a stolen disk, a copied snapshot, a leaked backup | "eavesdropping, data tampering, and man-in-the-middle attacks" |
Mechanism | KMS keys and service-side encryption (SSE) | TLS/SSL: HTTPS, VPN, Direct Connect; aws:SecureTransport conditions |
AWS default example | SSE-S3 has been the base level of encryption for every bucket since 5 January 2023 (AES-256, no extra charge) | AWS APIs require TLS 1.2 and recommend TLS 1.3 |
Exam phrasing | "S3 encrypts data automatically" = at rest | Always look for HTTPS/TLS/VPN in the option |
S3 encryption choices at exam depth: SSE-S3 (default, free), SSE-KMS (per-request charges, plus a per-use audit trail in CloudTrail), DSSE-KMS (dual layer), SSE-C (you supply the key), and client-side encryption. Enforce transit with a bucket policy or an SCP that denies aws:SecureTransport = false: the deny from Β§2.4, applied to data protection.
9.2 KMS: keys, and envelope encryption
AWS Key Management Service keeps keys inside FIPS 140-3 Security Level 3 validated hardware security modules (HSMs): the keys are generated there and never leave that boundary unencrypted. Because calling the HSM for every byte would be absurd, KMS uses envelope encryption: "encrypting the data key under another key".
Key type | Who owns it | Cost (as of Oct 2026) | Control |
|---|---|---|---|
Customer managed | You, in your account | Monthly fee (hourly prorated) + usage fee | Key policy, enable/disable, schedule deletion, custom rotation |
AWS managed | You, in your account, alias aws/<service> (e.g. aws/ebs) | No monthly fee; usage charges only | Fixed key policy, automatic rotation about every 365 days, not editable or deletable |
AWS owned | The service's own account | Free | Not visible to you, not auditable, cannot be deleted by you |
Rotating the key never re-encrypts your bulk data: the root key only re-wraps the data key, which is the practical reason envelope encryption exists.
9.3 Example E9: envelope encryption on a 1 GB object
- Your application calls KMS
GenerateDataKeywith a customer managed key. KMS returns a plaintext data key and the same key encrypted under the KMS key. - The application encrypts the 1 GB object with the plaintext data key in memory; the plaintext key is discarded.
- The wrapped data key is stored alongside the ciphertext. KMS never sees the object; the HSM never exports the root key.
- To read the object later, the application sends only the wrapped key back to KMS (
Decrypt), receives the plaintext key, and decrypts locally. - If you rotate the KMS key tomorrow, only step 4's wrapping changes: the 1 GB object is untouched.
Approach | What AWS holds | What you administer | Exam cue |
|---|---|---|---|
KMS | Shared, managed HSM fleet; key policies + IAM | Key policy, rotation, usage audit, per-use pricing | "Convenient, integrated, pay per use" |
CloudHSM | Single-tenant dedicated HSMs; "E2E encryption is not visible to AWS" | You administer the HSM users (outside IAM) and the algorithms | "AWS cannot see my data and I control the cryptography" |
- π Did you know? AWS managed KMS keys now rotate about every 365 days, a change made in May 2022, when the interval shortened from three years, and carry no monthly key fee (usage fees still apply, as of Oct 2026). The customer managed key is the only type that gives you key-policy control, enable/disable, scheduled deletion and custom rotation, which is why "which key gives me full control" almost always means customer managed, not "the one I created" versus "AWS created".
10. Threat detection, audit and posture: in-scope one-liners
Domain 2 task 2.4 asks you to describe security features and to identify "services for identifying security issues". Every row below is on the CLF-C02 in-scope list or in a Domain 2 task statement: nothing else.
Service | One line (what it is) | Inputs / detail |
|---|---|---|
Amazon GuardDuty | Threat detection | AWS CloudTrail management events, VPC Flow Logs and DNS logs (+ optional protection plans), threat intelligence and ML β findings |
Amazon Inspector | Vulnerability management: continuous scanning of EC2, ECR images and Lambda | CVEs and network exposure |
Amazon Macie | Sensitive-data discovery for S3 using "machine learning and pattern matching" | PII, credentials, public-bucket findings; 30-day free trial on first enablement |
Amazon Detective | Investigation: "analyze, investigate, and quickly identify the root cause" | Behaviour graph built from CloudTrail, VPC Flow Logs and GuardDuty findings |
AWS Security Hub | Aggregator / CSPM: consolidates and prioritises findings, checks against standards | The single pane other services feed |
AWS Trusted Advisor | Best-practice checks across security, cost, limits and fault tolerance | Includes the MFA-on-root check |
AWS CloudTrail | Audit log; who did what; records "Actions taken by a user, role, or an AWS service" | Event history: past 90 days, free; trails deliver to S3 |
AWS Config | Configuration state and compliance over time | "Is root MFA still on? Are there root access keys?" |
AWS Artifact | On-demand compliance reports and agreements (SOC, PCI, ISOβ¦) | The answer to "where do I get the audit report?" |
Mnemonic:
- GuardDuty detects
- Inspector scans
- Macie finds sensitive data
- Detective explains
- Security Hub aggregates
- Trusted Advisor advises
- CloudTrail records
- Config remembers
- Artifact certifies
How to answer
Matching exercise with 8 pairs. Match each item on the left with its answer on the right.
Match each in-scope security service to its single-sentence job:
Drag answers from here:
Naming trap. The exam guide's task 2.4 wording includes the phrase "AWS Security Center", but the service on the in-scope list is AWS Security Hub. Select Security Hub for consolidation and posture questions; treat "Security Center" as guide prose, not as a service to choose. Likewise AWS Network Firewall appears in case-study material but is out of scope for CLF-C02 selection questions in the current guide.
- π Did you know? CloudTrail Event history is free and automatic for the past 90 days of management events in every account; you do not have to create a trail to answer "who terminated my instance last month". A trail to a private S3 bucket with log-file validation is the upgrade that gives you the full, tamper-evident record the best-practice checklist demands (as of Oct 2026).
11. The least-privilege best-practice checklist
11.1 Five groups of habits
# | Group | What you actually do |
|---|---|---|
1 | Protect root | MFA (passkey/TOTP), no access keys, group email alias, monitoring (CloudTrail, alarms, GuardDuty), strip root credentials from member accounts, optionally an SCP denying member-account root actions |
2 | Least privilege | Narrow AWS managed β customer managed; use IAM Access Analyzer and last accessed information; humans via federation + temporary credentials (Identity Center); workloads via roles/instance profiles; no hard-coded keys |
3 | MFA and credential hygiene | MFA everywhere, phishing-resistant first; rotate and retire keys, users, roles and policies; store secrets in Secrets Manager or SSM Parameter Store (SecureString); max 2 access keys per user, 0 for root |
4 | Logging and detection | CloudTrail in all Regions to a locked bucket with log-file validation; Config on; GuardDuty, Inspector, Macie on; review in Security Hub; Trusted Advisor MFA check green |
5 | Defense in depth | Private subnets; security group as primary, NACL as second layer; never 0.0.0.0/0 on 22/3389; VPC Flow Logs; WAF at L7; Shield; Firewall Manager at org scale; encrypt at rest (KMS) and in transit (TLS β₯1.2); HTTPS-only via bucket policies, SCPs or RCPs; AWS Marketplace for what AWS does not ship |
11.2 Example E10: scoring an account against the checklist
Finding from Trusted Advisor / Config / Access Analyzer | Habit violated | Fix |
|---|---|---|
Root has no MFA | 1: protect root | Register passkey or TOTP within 35 days |
4 IAM users, 3 unused access keys older than 90 days | 3: credential hygiene | Delete unused keys; move the work to roles |
One policy allows s3:* on * | 2: least privilege | Access Analyzer β generate from activity β narrow to specific buckets/actions |
No CloudTrail trail in two Regions (Event history only) | 4: logging | Create organisation trail, all Regions, log-file validation, private bucket |
Security group allows 22 from 0.0.0.0/0 | 5: defense in depth | Restrict to a bastion security group or use SSM Session Manager |
Bucket policy allows Principal: * over HTTP | 5: data protection | Deny aws:SecureTransport=false; require HTTPS |
12 accounts, 40 IAM users with console passwords | 2: federation | IAM Identity Center with permission sets, delete the users |
How to answer
Ordering exercise with 6 items. Move them into the correct order, then check your answer.
Order these least-privilege actions in the order AWS's best practices imply (foundation first, refinement last):
Real-World Case Studies
AWS publishes what these patterns look like in production. Every figure below is customer- or AWS-claimed and unaudited, quoted with its source so you can check it: the examinable point is the pattern (which control was centralised, which identity model replaced which, which number moved), not the marketing figure.
Case A, athenahealth: centralised network security across 120 accounts
Element | Detail |
|---|---|
Industry / context | Healthcare software with HIPAA-sensitive workloads; a sprawling VPC estate, rising egress-inspection cost and a small team |
AWS services named | AWS Network Firewall (centralised), Transit Gateway, AWS Resource Access Manager (RAM) for policy fan-out, CloudFormation rules-as-code, Direct Connect; AWS Shield on the roadmap |
Headline outcomes (AWS-published, customer-claimed) | Inspection costs reduced by 95 percent; hundreds of VPCs across 120 accounts updated "within just a few days"; "Just eight people designed and rolled out the new security design with no disruptions" |
Identity/security lesson | Central policy as code plus RAM sharing beats per-account hand-editing: the same logic as Firewall Manager's organisation-wide push |
Source | aws.amazon.com/solutions/case-studies/athenahealth-case-study (accessed Oct 2026) |
Exam lesson: the number to remember is not 95%, it is 120 accounts and eight people. Domain 2's answer to "how do you enforce a control everywhere" is always centralise the policy and share it (RAM, Firewall Manager, SCPs, an organisation CloudTrail), never "log into each account". Note that AWS Network Firewall is out of scope for CLF-C02 service-selection questions in the current guide, know the centralisation pattern, select the in-scope service.
Case B, Avalon Healthcare Solutions: identity-based access instead of VPN
Element | Detail |
|---|---|
Industry / context | Healthcare lab insights handling PHI, subject to 700+ control audits; browser access to reports without VPN sprawl |
AWS services named | AWS Verified Access with Okta (OpenID Connect) as the IdP, a firewall placed behind it, and an explicit shared responsibility model split |
Headline outcomes (AWS-published, customer-claimed) | Perimeter network setup from days to about one hour; 50 business users onboarded by February 2024; 700+ controls still met; "far fewer breach attempts" reported |
Identity lesson | Authentication and authorization move to the identity layer: a federated IdP decision, not a network perimeter decision |
Source | aws.amazon.com/solutions/case-studies/avalon-aws-verified-access-case-study (accessed Oct 2026) |
Exam lesson: this is the Zero Trust shape Domain 2 rewards: verify the identity, grant narrowly, and stop treating the network as the boundary. AWS Verified Access is not on the CLF-C02 in-scope security list, so it appears only as a distractor: the in-scope selections for this pattern are IAM Identity Center (workforce federation), Cognito (customer identity) and cross-account IAM roles.
Case C, Smartsheet Gov: FedRAMP ready in under 90 days
Element | Detail |
|---|---|
Industry / context | Government-facing SaaS with no prior presence in AWS GovCloud (US) and a FedRAMP authorisation to pursue |
AWS services named | AWS GovCloud (US), ATO on AWS, AWS partner support; the authorisation itself stays with the customer |
Headline outcomes (AWS-published, customer-claimed) | FedRAMP ready in less than 90 days, versus AWS's stated typical timeframes of 12 to 18 months (AWS Public Sector Blog, 29 Aug 2019) |
Compliance lesson | A pre-inherited control set plus evidence you supply beats building every control from scratch: inheritance shortens the clock, it does not grant the ATO |
Source | aws.amazon.com/blogs/publicsector/smartsheet-gov-achieves-fedramp-p-ato-taps-aws-govcloud-us-and-ato-on-aws-to-accelerate-journey/ (accessed Oct 2026) |
Exam lesson: the number to hold is <90 days versus 12 to 18 months: an evidence story, not a service-selection story. FedRAMP is a government authorisation, not an AWS product: AWS supplies GovCloud (US) and the inherited controls, the customer gets the ATO. When a question asks where the audit paperwork comes from, the in-scope answer is AWS Artifact; when it asks who patches the hypervisor, the answer is the shared responsibility model.
Case D, Socure: 46+ FedRAMP controls inherited from GovCloud
Element | Detail |
|---|---|
Industry / context | Identity-verification (fraud) provider building a scalable, FedRAMP-compliant environment |
AWS services named | AWS GovCloud (US) plus complementary partner tools; customer-owned IAM, keys and application configuration |
Headline outcomes (AWS-published, customer-claimed) | "we have inherited over 46 FedRAMP-required security controls from AWS GovCloud" (AWS Public Sector Blog, 14 Nov 2024) |
Shared-responsibility lesson | Inheritance covers "Security of the Cloud"; the 46 controls say nothing about your IAM policies, encryption choices or guest OS; those are "Security in the Cloud" |
Source | aws.amazon.com/blogs/publicsector/building-a-scalable-and-secure-fedramp-compliant-cloud-environment-socures-proven-strategies-with-aws-and-complementary-tools/ (accessed Oct 2026) |
Exam lesson: 46 inherited, zero delegated. Inherited controls are the whole argument for the shared responsibility model: AWS covers the platform, you still own identity, least privilege, encryption and configuration. The examinable selections behind this paragraph are KMS, CloudTrail, Config, GuardDuty, Security Hub, IAM and AWS Artifact for the evidence itself: not the complementary tools named in the blog.
- π Did you know? Inheritance cuts both ways in these two stories: Smartsheet Gov reached FedRAMP ready in under 90 days where AWS says the process can run 12 to 18 months, and Socure counted 46+ inherited FedRAMP controls, yet both still owned their own IAM, keys and configuration. That is precisely why the shared responsibility model has two columns, and why "AWS handles security, so I skip MFA" is never the answer (AWS Public Sector Blog, 29 Aug 2019 and 14 Nov 2024; figures customer-published).
What the security cases share
Value pattern | Evidence | Underlying principle |
|---|---|---|
Controls inherited rather than built | Socure: "over 46 FedRAMP-required security controls" inherited from AWS GovCloud (AWS Public Sector Blog, 14 Nov 2024) | Shared responsibility: AWS covers "Security of the Cloud", you cover "Security in the Cloud" |
Authorisation accelerates when the platform is already authorised | Smartsheet Gov: FedRAMP ready <90 days vs typical 12 to 18 months (AWS Public Sector Blog, 29 Aug 2019) | GovCloud (US) + ATO on AWS; the customer still files the evidence |
Centralisation beats per-account toil | athenahealth: 120 accounts, 8 people, days | SCPs, Firewall Manager, organisation CloudTrail, RAM sharing |
Identity replaces perimeter | Avalon: days β ~1 hour, no VPN sprawl | Federation and least privilege at the identity layer |
Compliance is evidence, not opinion | 700+ controls, SOC/PCI/ISO reports | AWS Artifact supplies on-demand compliance documents |
How to read case-study numbers on exam day: every percentage here is a customer-claimed, unaudited figure published by AWS: never a guarantee, and "up to" is a ceiling, never an average. A case never licenses an out-of-scope answer: you are asked to select the in-scope control (security group, NACL, WAF, Shield, Identity Center, SCP, KMS), not to name the case-study-only service that happens to appear in the paragraph.
2026 Updates (as of October 2026)
What moved around IAM, policy scope and security tooling: six sourced bullets, every source accessed 2026-10:
- The service lists were rebuilt. In-scope entries went from 128 (launch-era Version 1.0 guide) β 111, and the explicit out-of-scope list from 11 β 55, so "it was in my old PDF" is no longer evidence of scope (CLF-C02 in-scope and out-of-scope services pages, 2026-10).
AWS IAM Identity Center (AWS Single Sign-On)is now listed simply asAWS IAM Identity Center: the parenthetical was dropped from the in-scope list. The rename itself (AWS Single Sign-On β IAM Identity Center, 26 July 2022) is unchanged, but current exam text uses the short name (in-scope services page, 2026-10).AWS Network FirewallandAWS Audit Managermoved to the out-of-scope list. Network Firewall still shows up in case-study paragraphs (athenahealth) yet is now an explicit distractor, never a selectable answer (out-of-scope services page, 2026-10).- Domain 2 is still 30% of scored content: the weightings 24 / 30 / 34 / 12 have not moved since CLF-C02 replaced CLF-C01 on 19 September 2023; treat any claim that a later guide revision shifted the Security weighting as unverified (current exam guide PDF, Β© 2026, and launch-era Version 1.0 guide Appendix B, 2026-10).
- "AWS Security Center" disappeared from the guide's technologies list but survives inside Domain 2 skills wording. The in-scope service you select for consolidation and posture remains AWS Security Hub (exam guide + in-scope services page, 2026-10).
- The AWS Well-Architected Agent went to preview on 1 October 2026, which AWS calls "the next-gen evolution of AWS Trusted Advisor and the AWS Well-Architected Tool", but it is not named in the exam guide, so the examinable names stay Trusted Advisor and Well-Architected Tool (AWS News Blog and Well-Architected release notes, 2026-10-01).
- π Did you know? The current exam guide PDF carries no version number at all, only "Copyright Β© 2026", while the only stamped artefact AWS ever published is the launch-era Version 1.0 CLF-C02 guide. The
uiVersion=2024.10string visible in AWS Docs URLs is the documentation site template version, not a guide revision, and the in-scope page warns that its list is "non-exhaustive and subject to change" (all three checked 2026-10).
Practice Questions
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A team lead asks which of the following actions can ONLY be performed by the account root user. Which answer is correct?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
An IAM identity policy allows s3:GetObject on reports/*, but the bucket policy denies s3:* whenever aws:SecureTransport is false, and the request is made over plain HTTP. What is the result?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A lead proposes attaching a service control policy (SCP) to give an audit team read-only access to a member account. Why is this wrong?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
Which statement about security groups and network ACLs is correct?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A public-facing application behind an Application Load Balancer must block SQL injection and cross-site scripting attempts in HTTP requests. Which service should be used?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A security team wants free, automatic DDoS protection for its AWS workloads with no subscription and no configuration. Which statement matches AWS's documentation?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
Which set of statements about AWS KMS key types is correct (as of Oct 2026)?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A company has 12 AWS accounts and 400 employees, while a separate consumer app needs customer sign-up and limited access to S3. Which pairing is correct?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
An application running on Amazon EC2 must read objects from one S3 bucket, and no long-term credentials may be shipped with the code. Which design fits the exam's best practice?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A team provisions 1 AWS WAF web ACL with 5 rules and inspects 10 million requests in a month. Using the pricing components verified for this lesson (as of Oct 2026), what is the monthly total?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A candidate is revising from a launch-era CLF-C02 PDF whose in-scope services list reads 'AWS IAM Identity Center (AWS Single Sign-On)' and contains 128 entries. What does the current exam guide say (as of Oct 2026)?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
Smartsheet Gov reports going from no presence in AWS GovCloud (US) to FedRAMP ready in under 90 days, a process AWS describes as sometimes taking 12-18 months. The compliance team then asks: 'Where do we obtain the audit report or agreement to hand our assessor?' Which in-scope service answers that question?
Comparative Verdict: identity and data protection Γ on-premises Γ other clouds Γ DIY/managed
- Versus on-premises: on premises you build the whole stack yourself, a directory server, an MFA appliance, a web-application firewall appliance, an HSM for key custody, plus the patching, HA and audit evidence for each. AWS gives you identity as an API (IAM, roles, STS), MFA in minutes (passkey or TOTP, up to 8 devices), KMS keys inside FIPS 140-3 Level 3 HSMs with no hardware to buy, and free, automatic DDoS protection (Shield Standard) plus free security groups and NACLs. The price of that inheritance is shared responsibility: AWS owns "Security of the Cloud", you own "Security in the Cloud", configuration, IAM, encryption choices and guest operating systems stay yours.
- Versus other clouds: every major provider offers IAM, managed KMS-style keys, WAF and DDoS protection, so the examinable differences are AWS's specific vocabulary and rules: explicit deny always wins, identity βͺ resource is a union while SCP/boundary is an intersection, SCPs never grant, stateful security groups vs stateless NACLs, automatic free Shield Standard vs $3,000/month Shield Advanced with a 1-year commitment, SSE-S3 as the default for every bucket since 5 January 2023, and IAM Identity Center renamed from AWS Single Sign-On on 26 July 2022 (all as of Oct 2026). Do not assume another provider's evaluation order, default encryption date or pricing transfers to AWS.
- Versus DIY / build-it-yourself: hand-rolled key management means generating, storing, backing up and rotating keys yourself, with no HSM attestation and no usage audit; hand-rolled WAF rules mean writing SQLi/XSS parsers and absorbing Layer 7 attacks you did not anticipate; hand-rolled identity means long-lived shared credentials and no federation. The Well-Architected answer is consistently managed and least-operational-overhead: roles instead of keys, Identity Center instead of a directory, KMS envelope encryption instead of custom crypto, WAF Managed Rules instead of handwritten signatures, and least privilege as the discipline that ties all four together.
Exam-day traps for this lesson:
- Explicit deny beats every allow: one
Denyanywhere applicable ends the evaluation, no matter how manyAllows exist; - Union vs intersection: identity βͺ resource = union (either allows); SCP, RCP and permissions boundary = intersection (all must allow), and SCPs never grant;
- Cross-account needs an allow in BOTH accounts: the trust policy alone, or the caller's policy alone, is not enough;
- Groups cannot be principals, cannot be nested, and there is no default group: attach policies to a group, but you cannot allow a group;
- Security groups have no deny rules: need a deny? Use a NACL (or an IAM/bucket policy);
- Stateful vs stateless: security group replies are auto-allowed; NACL replies must be allowed by an explicit rule;
- Scope and evaluation order: security group = instance/ENI, all rules evaluated; NACL = subnet, lowest rule number first, first match stops;
- Defaults are permissive: default NACL allows all; default security group allows all outbound and inbound only from itself;
- WAF is Layer 7 only and must be attached to a supported resource; it is not a security-group replacement;
- Shield Standard is automatic and free: never answer "subscribe to" or "configure" it; Advanced = $3,000/month, 1-year commitment (as of Oct 2026), and the Shield Response Team needs Business or Enterprise Support;
- Firewall Manager β WAF; it manages WAF/Shield/security groups/NACLs/Network Firewall/DNS Firewall across an AWS Organization, which is a requirement;
- Roles for workloads, cross-account, federation and auditors; IAM users only for legacy or tooling that cannot use roles, and no long-lived credentials is the phrase that points at a role;
- A trust policy is resource-based and grants no actions: both halves (trust + permissions) are required;
- Cognito = customers, Identity Center = workforce, Directory Service = enterprise AD: swapping them is the classic three-way trap;
- At rest = KMS/SSE; in transit = TLS: "S3 encrypts automatically" means at rest (SSE-S3 default since 2023-01-05), not in transit;
- KMS vs CloudHSM: managed/shared/pay-per-use vs dedicated/single-tenant/you administer and "E2E encryption is not visible to AWS";
- Customer managed vs AWS managed keys: both live in your account; only customer managed gives key-policy control, enable/disable, deletion and custom rotation;
- SMS MFA in IAM was discontinued: an option recommending SMS MFA for the console/root is wrong; passkeys/FIDO and TOTP are the current options;
- Access keys: maximum two per user, secret shown once, never for root, and "view the old secret again" is never an answer;
- Only in-scope services, GuardDuty, Inspector, Macie, Detective, Security Hub, Trusted Advisor, CloudTrail, Config, Artifact, WAF, Shield, Firewall Manager, KMS, Cognito, Identity Center, Secrets Manager; case-study-only services (Network Firewall, Verified Access) and the guide's "AWS Security Center" wording are distractors, the service is Security Hub;
- Case-study numbers are customer-claimed, unaudited ceilings: never AWS guarantees.
Key Takeaways:
- Root is the one identity with "complete access to all AWS services and resources": MFA within 35 days, up to 8 MFA devices, no access keys, password 8 to 128 chars / β₯3 of 4 classes, and only a short root-only task list (root credentials, close/reopen a standalone account, restore IAM permissions, billing activation, tax invoices, EC2 RI Marketplace, S3 MFA Delete, deny-all S3/SQS policy edits);
- IAM's four objects: user (permanent, β€2 access keys), group (users + one identity policy, not a principal, no nesting, no default), role (permissions policy = what + trust policy = who β STS temporary credentials), policy (identity-based: AWS managed/customer managed/inline vs resource-based: inline only, can name another account);
- Evaluation in four moves: authenticate β collect all policies β any explicit Deny wins β union of identity βͺ resource, then intersect with the ceiling (SCP, RCP, permissions boundary: SCPs grant nothing) and, for cross-account, allow in both accounts;
- Roles are the default answer for cross-account access, EC2/Lambda workloads (instance profile), federation and external auditors (external ID); sessions last up to 43,200 s (12 h), chained roles 1 h: IAM users are for legacy or key-only tooling;
- IAM Identity Center (renamed from AWS Single Sign-On, 2022-07-26) serves the workforce with one login and permission sets; Cognito serves customers (user pool = directory + authentication β JWTs; identity pool β temporary, limited-privilege AWS credentials); Directory Service serves enterprise AD;
- Authentication options: passkeys/FIDO (phishing-resistant, recommended), virtual TOTP, hardware TOTP (β€8 devices; SMS MFA discontinued in IAM), access keys (β€2 per user, secret shown once), STS temporary credentials, and secrets stored in Secrets Manager / SSM Parameter Store SecureString;
- Security group vs NACL: instance vs subnet; allow-only vs allow+deny; all rules vs rules 1 to 32766 first match; stateful vs stateless; default SG = outbound allow-all + inbound from itself, default NACL = allow-all with
*DENY catch-alls; both free, neither filters DNS/DHCP/IMDS, and AWS calls security groups the primary mechanism; - WAF = Layer 7 (SQLi, XSS, HTTP 403 blocks; $5 ACL + $1 rule + $0.60/million requests: 1 ACL + 5 rules + 10M = $16/month); Shield Standard = automatic and free; Shield Advanced = $3,000/month, 1-year commitment, DDoS cost protection, SRT needs Business/Enterprise Support; Firewall Manager = $100/policy/Region, organization-wide, Organizations required;
- Data protection: at rest = KMS/SSE (SSE-S3 default for every bucket since 5 January 2023), in transit = TLS 1.2 required / 1.3 recommended; KMS performs envelope encryption (the KMS key in a FIPS 140-3 Level 3 HSM wraps the data key, the data key encrypts the bulk data, rotation never re-encrypts your data) with customer managed (monthly + usage, full control), AWS managed (
aws/<service>, yearly rotation, no monthly fee) and AWS owned (invisible, undeletable) key types: CloudHSM when AWS must not see the data plane; - Detection in one line each: GuardDuty detects (CloudTrail + VPC Flow Logs + DNS logs), Inspector scans (EC2, ECR, Lambda), Macie finds PII in S3, Detective explains, Security Hub aggregates, Trusted Advisor advises (MFA check), CloudTrail records (90 days free), Config remembers, Artifact certifies, and least privilege is a cycle: protect root β federate humans β role the workloads β narrow with Access Analyzer β log and detect, as practised in the AWS cases (athenahealth: 120 accounts, 8 people, inspection costs β95%; Avalon: perimeter setup days β ~1 hour, 700+ controls met; Socure: 46+ FedRAMP controls inherited), customer-claimed figures that show the pattern, never an AWS guarantee;
- As of Oct 2026 the guide's in-scope list holds 111 entries (out-of-scope 55), the service name is AWS IAM Identity Center with the AWS Single Sign-On parenthetical dropped, AWS Network Firewall and AWS Audit Manager are out of scope, Domain 2 is still 30% (24/30/34/12 unchanged since 2023-09-19), "AWS Security Center" is guide prose for Security Hub, and the Well-Architected Agent preview is real but not examinable; while the compliance cases show inheritance without delegation (Smartsheet Gov: FedRAMP ready <90 days vs typical 12 to 18 months; Socure: 46+ inherited controls), so the audit report always comes from AWS Artifact.