Built a governance framework using AWS Organizations, Config, Service Control Policies (SCPs), Systems Manager and CloudTrail to enforce compliance and audit changes across accounts.
Why it matters: Security governance in AWS ensures that policies are consistently applied, compliance is enforced and risky actions are prevented at scale. This lab demonstrates both preventive and detective controls in action.
- Overview
- Objectives
- Diagram
- Steps Performed
- [1. AWS Organizations Setup]
- [2. AWS Config Enablement & Rules]
- [3. Service Control Policies (SCPs)]
- [4. Systems Manager Compliance Enforcement]
- [5. CloudTrail for Auditing & Change Detection]
- [6. Cleanup]
 
- Screenshots
- Lessons Learned
- References
- Contact
Governance in AWS combines multiple services to provide layered controls:
- Organizations to centralize account management.
- Config to track compliance with rules.
- SCPs to block destructive actions across accounts.
- Systems Manager to enforce secure baselines at the server level.
- CloudTrail to log all changes for full accountability.
- Build a multi-account structure (Dev, Prod, Audit) with AWS Organizations.
- Enable AWS Config organization-wide and enforce compliance rules.
- Apply Service Control Policies to restrict high-risk actions.
- Use Systems Manager State Manager to enforce patching and security baselines.
- Enable CloudTrail org-wide to audit IAM and resource changes.
- 
1. AWS Organizations Setup - Created Organization with Dev,ProdandAuditaccounts.
- Verified org tree and root account (Screenshot: org_tree_view.png).
 
- Created Organization with 
- 
2. AWS Config Enablement & Rules - Configured delivery channel (Screenshots: config_delivery_channel.png&config_delivery_channel_set.png).
- Enabled recording for resources (Screenshot: config_recording_on.png).
- Created rules for compliance monitoring (Screenshot: config_rules_created.png).
- Validated noncompliant findings (Screenshot: config_noncompliant_logging.png).
 
- Configured delivery channel (Screenshots: 
- 
3. Service Control Policies (SCPs) - Created custom SCP to deny S3 bucket deletions (Screenshot: scp_created.png).
- Attached SCP to root and Dev OU (Screenshot: scp_attached.png).
- Verified enforcement: delete denied in Dev (Screenshots: scp_dev_bucket_created.png&scp_delete_denied.png).
 
- Created custom SCP to deny S3 bucket deletions (Screenshot: 
- 
4. Systems Manager Compliance Enforcement - Created IAM role with AmazonSSMManagedInstanceCoreand attached to EC2 (Screenshots:iam_role_created.png,iam_role_attached.png&ec2_patchgroup_tagged.png).
- Registered EC2 as managed instance (Screenshot: ssm_managed_instance.png).
- Applied patch baseline via State Manager (Screenshots: patch_baseline_details.png,patch_baseline_rule.png&ssm_state_manager.png).
- Verified compliance reporting (Screenshots: patch_scan_devlinux.png&patch_compliance_report.png).
 
- Created IAM role with 
- 
5. CloudTrail for Auditing & Change Detection - Created org-wide trail OrgTrail-Domain6(Screenshot:org_trail_created.png).
- Verified event history captured (Screenshot: event_history_initial.png).
- Edited IAM policy (test) (Screenshot: iam_policy_change.png).
- Verified policy change logged in CloudTrail (Screenshot: event_history_policychange.png).
 
- Created org-wide trail 
- 
6. Cleanup - Deleted lab EC2 instances and associated IAM roles/policies.
- Stopped and deleted Config recorder and delivery channel.
- Removed test S3 buckets and SCPs.
- Deleted CloudTrail test trail.
 
All screenshots are included in the screenshots/ folder.
| Step | Filename | Description | 
|---|---|---|
| 1 | org_tree_view.png | Organization with Dev, Prod, Audit accounts | 
| 2 | config_delivery_channel.png | Config delivery channel creation | 
| 2 | config_delivery_channel_set.png | Delivery channel linked to S3 | 
| 2 | config_recording_on.png | Config recorder enabled | 
| 2 | config_rules_created.png | Compliance rules created in Config | 
| 2 | config_noncompliant_logging.png | Noncompliant resources flagged by Config | 
| 3 | scp_created.png | SCP created to deny S3 bucket deletion | 
| 3 | scp_attached.png | SCP attached to Org root | 
| 3 | scp_dev_bucket_created.png | Test S3 bucket created in Dev | 
| 3 | scp_delete_denied.png | Delete bucket denied by SCP | 
| 4 | iam_role_created.png | IAM role created for SSM | 
| 4 | iam_role_attached.png | IAM role attached to EC2 | 
| 4 | ec2_patchgroup_tagged.png | EC2 instance tagged for patch group | 
| 4 | ssm_managed_instance.png | EC2 registered as managed instance | 
| 4 | patch_baseline_details.png | Patch baseline details in Patch Manager | 
| 4 | patch_baseline_rule.png | Patch rules applied to EC2 | 
| 4 | ssm_state_manager.png | State Manager association created | 
| 4 | patch_scan_devlinux.png | Patch compliance scan run on instance | 
| 4 | patch_compliance_report.png | Compliance report showing EC2 status | 
| 5 | org_trail_created.png | Org-wide CloudTrail created | 
| 5 | event_history_initial.png | Event history showing CloudTrail activity | 
| 5 | iam_policy_change.png | Test IAM policy modified | 
| 5 | event_history_policychange.png | CloudTrail log of IAM policy change | 
- Organizations scale control: SCPs prevent destructive actions across accounts.
- Config enforces compliance: Detects and reports misconfigurations continuously.
- Systems Manager adds depth: Extends governance to patch and security baselines on EC2.
- CloudTrail provides evidence: Full visibility into IAM and resource changes.
- Governance is layered: Preventive (SCPs), detective (Config) and corrective (SSM).
Sebastian Silva C. – September 2025 – Berlin, Germany.
