Security Notes
Cloud

AWS Security Governance — Control Tower, Org Policies, IaC & Compliance Evidence

Governance is how a security team sets rules once and has them apply to hundreds of accounts, including accounts that don't exist yet. SCPs, RCPs and the multi-account landing zone are explained in the IAM deep dive; this file covers the rest of the toolbox.

12 min read 6 sections 7 model answers verified 2026-10

Last verified2026-10 — AWS Organizations policy types and Control Tower controls are added regularly; check current documentation for the full list.


Landing Zone — AWS Control Tower

What is this?

AWS Control Tower sets up and runs a landing zone: a pre-built multi-account organisation with a management account, a Log Archive account and an Audit (security tooling) account in a Security OU, centralised CloudTrail and Config, IAM Identity Center for sign-in, and a library of guardrails called controls.

Why it matters

Building all of this by hand takes weeks and drifts. Control Tower makes "every new account starts secure" the default: accounts are vended through Account Factory with logging, guardrails and SSO already attached.

How it works

Controls come in three kinds, and the exam expects you to match them to the moment they act:

Preventive

stop an action from happening. Implemented as SCPs or RCPs. Example: "disallow changes to CloudTrail."

Detective

notice non-compliance after the fact. Implemented as AWS Config rules. Example: "detect S3 buckets with public read."

Proactive

block non-compliant resources before they are created through CloudFormation. Implemented as CloudFormation Hooks. Example: "require encryption on new RDS instances."

Controls are also graded as mandatory, strongly recommended or elective. Control Tower reports drift when someone changes the landing zone outside it (for example editing a managed SCP directly). Account Factory for Terraform (AFT) and Customizations for Control Tower (CfCT) apply your own baselines to every new account.

📰

Real incident — Code Spaces (2014). One stolen console credential was enough for an attacker to delete a company's servers and its backups, which lived in the same AWS account. The company closed within days. Multi-account landing zones, with backups and logs in accounts that workload credentials can't touch, exist because of incidents like this.

🎯

On the job. Check whether "landing zone" is real: are new accounts actually created through Account Factory, or does someone still create accounts by hand outside the guardrails?

Security angle

Control Tower is a starting point, not a finish line: its controls cover common misconfigurations, not your workload's threat model. Keep custom SCPs and Config rules in code alongside it.


Organization Policy Types

What is this?

AWS Organizations can attach several kinds of policy to the organisation root, an OU (organisational unit) or an account. Each kind governs something different.

Why it matters

Picking the right policy type is a frequent exam question, and in practice each one closes a gap the others cannot.

How it works

Service control policies (SCPs)

cap what principals in your accounts can do. Never grant.

Resource control policies (RCPs)

cap what anyone can do to resources in your accounts. The data-perimeter backstop.

Declarative policies

set and enforce a service configuration across accounts, for example "block public sharing of AMIs and EBS snapshots," "require IMDSv2 by default," "block VPC internet access" (VPC Block Public Access) or "disable the serial console." They are enforced by the service itself, so they keep working even when the service adds new APIs, and you can show a custom error message to users.

AI services opt-out policies

stop AWS AI services from storing or using your content to improve the services.

Backup policies

enforce AWS Backup plans organisation-wide.

Tag policies

standardise tag keys and allowed values (environment must be prod, staging or dev).

Chat applications policies

control which chat channels can be used to operate AWS through chat integrations.

Delegated administrators

Security services should not be run from the management account. Instead, register a delegated administrator account (usually the Audit or security tooling account) for GuardDuty, Security Hub, Inspector, Macie, Detective, Config, IAM Access Analyzer, Firewall Manager, Security Lake and IAM Identity Center. The delegated admin enables the service in every account, including new ones, and sees all findings.

Root user governance

Centralised root access

from the management account (or a delegated admin) you can remove root credentials from member accounts entirely, and perform the few root-only tasks (such as unlocking an S3 bucket policy that denies everyone) through a short-lived privileged session (sts:AssumeRoot) instead of logging in as root.

MFA on root

AWS now requires MFA for root users; use phishing-resistant hardware keys.

Break-glass procedure

the management account root credentials and MFA device are stored offline under two-person control, use is rare and documented, and a CloudTrail alarm fires on any root ConsoleLogin (userIdentity.type = Root).

In practiceThe SCP almost every organisation starts with:

json
{ "Version": "2012-10-17",
  "Statement": [
    { "Sid": "ProtectSecurityServices", "Effect": "Deny",
      "Action": ["cloudtrail:StopLogging", "cloudtrail:DeleteTrail", "guardduty:DeleteDetector",
                 "config:StopConfigurationRecorder", "organizations:LeaveOrganization"],
      "Resource": "*",
      "Condition": { "ArnNotLike": { "aws:PrincipalArn": "arn:aws:iam::*:role/BreakGlass" } } } ] }

And the CloudTrail event to alert on for root use:

json
{ "eventName": "ConsoleLogin", "userIdentity": { "type": "Root", "arn": "arn:aws:iam::123456789012:root" },
  "sourceIPAddress": "198.51.100.23", "responseElements": { "ConsoleLogin": "Success" } }
🎯

On the job. Test SCPs in a sandbox OU first; an SCP that denies too much at the root can lock out every account, including the people trying to fix it.

Security angle

The management account is not restricted by SCPs, so anything running there is all-powerful: keep it empty of workloads, few people in it, and every security service delegated elsewhere.


Deploying Securely and Consistently — IaC and Tagging

What is this?

Infrastructure as code (IaC) means describing cloud resources in templates (CloudFormation, Terraform) that are reviewed, tested and deployed by a pipeline instead of being clicked together in the console.

Why it matters

Code can be scanned before it reaches production, every environment is built the same way, and drift from the approved state is detectable.

How it works

Developer PR ──► cfn-lint (template errors, best practice)
            ──► CloudFormation Guard / Checkov (policy-as-code: "S3 must block public access")
            ──► review + merge
            ──► pipeline deploys with a scoped deployment role
            ──► CloudFormation StackSets push the baseline to every account and region
            ──► Hooks / Config detect anything non-compliant that slipped through
CloudFormation StackSets

deploy one template to many accounts and regions. With service-managed permissions and Organizations, StackSets automatically deploy to new accounts that join a target OU, which is how baselines (IR roles, Config rules, log subscriptions) reach every account.

cfn-lint

checks templates against the resource specification and best practices.

CloudFormation Guard

a policy-as-code language for rules such as "every AWS::S3::Bucket must have encryption and a public access block." Runs locally, in CI, or inside a Hook.

Third-party IaC

Terraform and others are fine; scan them with equivalent tools (Checkov, tfsec, OPA policies).

Tags

group resources by owner, environment, cost centre and data classification. Use tag policies to keep values consistent and an SCP with aws:RequestTag to require tags at creation. Tags also drive ABAC (see ABAC), backup plans and incident ownership.

Security angle

The deployment role is the most powerful identity in the pipeline; it should be assumable only by the pipeline (OIDC federation, no stored keys), and changes to pipeline definitions should need review. See CI/CD security.


Central Policy Deployment — Firewall Manager, Service Catalog, RAM

What is this?

Three services for pushing security configuration and approved resources out from a central account.

Why it matters

Without central deployment, every new account or application is a chance for someone to forget the WAF, open a security group, or build an unapproved architecture.

How it works

AWS Firewall Manager

define security policies once and apply them across the organisation, including new accounts and resources: WAF web ACLs, Shield Advanced protection, security group audit and cleanup (for example removing 0.0.0.0/0 on port 22), Network Firewall deployments, Route 53 Resolver DNS Firewall rules and third-party firewalls. Requires Organizations, AWS Config and a delegated admin.

AWS Service Catalog

a catalogue of approved, pre-hardened products (CloudFormation or Terraform templates) that teams can launch. A launch constraint lets users deploy a product using a role they don't hold themselves, so they get the approved architecture without broad IAM rights.

AWS Resource Access Manager (RAM)

shares resources across accounts without copying them: subnets (VPC sharing), transit gateways, Route 53 Resolver rules, Private CA, license configurations and more. Sharing can be restricted to your organisation.

Security angle

VPC sharing means one account's network team controls the subnets while workload accounts own the instances; security groups stay owned by each workload account, which is easy to forget during an investigation.


Evaluating Compliance — Config, Security Hub, Audit Manager, Artifact

What is this?

The services that answer "are we compliant right now, and can we prove it to an auditor?"

Why it matters

Auditors want evidence collected continuously, not screenshots gathered the week before. Security teams want misconfigurations fixed automatically, not filed as tickets.

How it works

AWS Config rules and remediation

a rule (managed, custom Lambda or Guard) marks resources compliant or non-compliant. Attach a remediation action (a Systems Manager Automation runbook) to fix it manually or automatically, for example "turn on S3 Block Public Access." Conformance packs bundle rules and remediations; an aggregator shows results across all accounts and regions. Non-compliance events go to EventBridge for notification.

AWS Security Hub CSPM

(cloud security posture management) — the original Security Hub, renamed when the new Security Hub reached general availability in December 2025. It runs control checks against standards (AWS Foundational Security Best Practices, CIS AWS Foundations, PCI DSS, NIST SP 800-53), aggregates findings in ASFF (AWS Security Finding Format), and automation rules suppress or re-prioritise them; EventBridge drives response.

AWS Security Hub

(the new service) — correlates signals from GuardDuty, Inspector, Macie and Security Hub CSPM into exposure findings in near real time, for example "a publicly reachable instance with a critical vulnerability that can read sensitive data," so you fix the combination that matters first. It uses OCSF rather than ASFF, so integrations built for one format don't read the other.

AWS Audit Manager

continuously collects evidence (Config results, CloudTrail activity, Security Hub checks, manual uploads) and maps it to frameworks such as SOC 2, PCI DSS, HIPAA or GDPR, then produces assessment reports for auditors.

AWS Artifact

downloads AWS's own compliance reports (SOC reports, ISO certificates, PCI attestation) and lets you accept agreements such as a HIPAA business associate addendum. It proves AWS's side of the shared responsibility model; your side comes from Audit Manager.

AWS Well-Architected Tool

structured reviews against the Well-Architected Framework; the security pillar covers identity, detection, infrastructure protection, data protection, incident response and application security.

See compliance frameworks for what SOC 2, ISO 27001 and PCI DSS actually require.

In practiceWhat a non-compliant resource looks like in Config, and the one-line remediation behind it:

console
$ aws configservice get-compliance-details-by-config-rule --config-rule-name s3-bucket-public-read-prohibited \
    --compliance-types NON_COMPLIANT --query "EvaluationResults[].EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId"
[ "marketing-assets-tmp" ]
# Remediation action attached to the rule: SSM document AWS-DisableS3BucketPublicReadWrite
🎯

On the job. Auditors will ask for evidence that a control operated over the whole period, not just today. Config's timeline and Audit Manager's evidence folders answer "show me this was compliant every day since January" without screenshots.

Security angle

Automatic remediation can break production (closing a port a service relied on). Auto-remediate high-confidence, low-blast-radius issues, such as public buckets, and route the rest to owners.


Interview Questions

Q
Explain preventive, detective and proactive controls in Control Tower.
Model answer

Preventive controls stop an action outright and are implemented as SCPs or RCPs, like denying CloudTrail changes. Detective controls notice non-compliance after it happens, using AWS Config rules, like flagging a public bucket. Proactive controls sit in between: CloudFormation Hooks check a resource before it's created and block it if it breaks a rule, like an unencrypted database. You want all three, because preventive controls can't express everything and detective ones only tell you after the fact.

Q
What problem do declarative policies solve that SCPs don't?
Model answer

SCPs block API calls, so they must list every action that could break a rule, and a new API can slip through. Declarative policies set the desired configuration of a service itself, such as blocking public AMI and snapshot sharing or defaulting to IMDSv2, and the service enforces it no matter which API is used, including future ones. They also show users a custom error message, which cuts helpdesk tickets.

Q
How should root user access be managed across a large organisation?
Model answer

Remove root credentials from member accounts with centralised root access, and do the rare root-only tasks through short-lived AssumeRoot sessions from the management or delegated admin account. The management account root gets a hardware MFA key stored offline under two-person control as break glass, and a CloudTrail alarm fires on any root sign-in. Root should be something you can prove nobody used, not something you trust nobody used.

Q
Why use a delegated administrator for security services instead of the management account?
Model answer

Because the management account is outside SCP control, so every person and workload there is effectively unrestricted. Delegating GuardDuty, Security Hub, Config and the rest to a security tooling account keeps the management account nearly empty and lets the security team operate tools without management-account access. The delegated admin still auto-enables services in new accounts, so you lose nothing.

Q
How do you make sure every new account gets your security baseline automatically?
Model answer

Vend accounts through Control Tower Account Factory into an OU that already carries SCPs and controls, auto-enable security services through delegated admins, and deploy the rest — IR roles, Config rules, log subscriptions — with CloudFormation StackSets set to auto-deploy to new accounts in the OU. Firewall Manager adds WAF and security-group policies as resources appear. The goal is that there's no window where a new account exists without guardrails.

Q
What's the difference between AWS Artifact and AWS Audit Manager?
Model answer

Artifact gives you AWS's own compliance evidence — their SOC reports, ISO certificates and PCI attestation — covering AWS's half of the shared responsibility model. Audit Manager collects evidence about your half, continuously pulling Config results, CloudTrail activity and Security Hub checks and mapping them to a framework like SOC 2 or PCI. Auditors need both: proof the provider is sound and proof your configuration is.

Q
Config shows public S3 buckets keep reappearing. What would you set up?
Model answer

Prevent first: S3 Block Public Access at the account level, protected by an SCP so nobody can switch it off, and an RCP to stop external access. Then detect and fix: a Config rule with automatic remediation through a Systems Manager runbook that re-enables the block, plus an EventBridge notification to the owner. And I'd find out which pipeline or template keeps creating them and add a Guard rule in CI, because fixing the source beats remediating forever.