Overview
If your AWS Organization uses AWS Control Tower, you can skip manual role deployment entirely. Control Tower automatically provisions theAWSControlTowerExecution role in every enrolled account, granting broad administrative permissions to the management account.
The IAM Audit tool only uses IAM and CloudTrail read permissions from this role — it never performs write operations.
Benefits of Using Control Tower
Zero deployment overhead
No CloudFormation StackSets or manual role creation required. The
AWSControlTowerExecution role exists in all Control Tower-managed accounts.Automatic new account inclusion
When new accounts are enrolled in Control Tower, they automatically receive the execution role — your audit coverage scales instantly.
Consistent permissions
Control Tower maintains the role’s permissions across all accounts. No drift or configuration skew.
How It Works
AWSControlTowerExecution Role
Control Tower creates this role in every enrolled account with:- Trust relationship to the management account
- AdministratorAccess managed policy (includes IAM and CloudTrail read)
- Automatic updates managed by Control Tower
Permissions Used by IAM Audit
While the role has full admin access, the audit tool only calls:| Service | Actions Used |
|---|---|
| IAM | ListUsers, ListAccessKeys, GetAccessKeyLastUsed, ListMFADevices, GetLoginProfile |
| CloudTrail | LookupEvents |
| STS | AssumeRole (from management account) |
Running Audits with Control Tower
No additional setup required. Simply specify the Control Tower execution role when running the audit:Example Command
Output
Differences from Custom Role Setup
| Aspect | Custom IAM Role | AWSControlTowerExecution |
|---|---|---|
| Deployment | Manual (StackSets) | Automatic (Control Tower) |
| Permissions | Least privilege (6 IAM + 1 CloudTrail action) | AdministratorAccess |
| Maintenance | Manual updates | Control Tower managed |
| New accounts | Requires re-deployment | Automatic inclusion |
| Security posture | Minimal attack surface | Broader permissions |
| Audit compliance | Easier to justify least privilege | Requires documentation of read-only usage |
For production environments with strict compliance requirements, consider deploying a custom least-privilege role even in Control Tower accounts. See IAM Permissions Setup.
Security Considerations
Privilege Escalation Risk
TheAWSControlTowerExecution role can create IAM users, attach policies, and modify infrastructure. If the management account credentials are compromised, an attacker could abuse this role.
Mitigations:
- Use IAM Identity Center (SSO) for management account access
- Enable MFA for all management account users
- Monitor
AssumeRoleevents in CloudTrail for anomalies - Consider deploying a dedicated least-privilege audit role
Compliance Implications
Some regulatory frameworks (PCI-DSS, SOC 2, HIPAA) require separation of duties and least privilege. Using a role withAdministratorAccess for audits may require additional documentation:
- Demonstrate the tool’s code is read-only
- Log all audit executions with approval workflows
- Justify why least privilege wasn’t technically feasible
Verifying Control Tower Setup
Before running the audit, confirm Control Tower is active:Check Control Tower Status
List Enrolled Accounts
Test Role Assumption
Troubleshooting
Account not enrolled in Control Tower
Account not enrolled in Control Tower
Symptom:
AccessDenied when assuming AWSControlTowerExecution in a specific accountSolution:- Check if the account is enrolled in Control Tower:
- Enroll the account via the Control Tower console
- Or deploy a custom audit role to that account using AWS Setup
Role exists but missing permissions
Role exists but missing permissions
Symptom: Role assumption succeeds but IAM or CloudTrail calls failSolution:
- Verify the role has
AdministratorAccessor equivalent: - Check for SCPs blocking IAM or CloudTrail actions
- Confirm CloudTrail is enabled in
us-east-1
Control Tower not deployed
Control Tower not deployed
Symptom:
NoSuchEntity when checking for Control Tower landing zonesSolution:
If your Organization doesn’t use Control Tower, follow the AWS Organization Setup guide to deploy custom audit roles.Best Practices
-
Log all audit executions
Use CloudTrail to monitor whenAWSControlTowerExecutionis assumed from the management account. -
Restrict management account access
Limit who can run audits by tightly controllingsts:AssumeRolepermissions in the management account. -
Automate regular audits
Schedule the tool via Lambda or EventBridge to run weekly/monthly audits automatically. -
Review Control Tower drift
Periodically verify theAWSControlTowerExecutionrole hasn’t been modified or deleted in member accounts. -
Consider least privilege for production
For regulated industries, deploy a dedicated audit role even in Control Tower environments.
Additional Resources
AWS Control Tower Documentation
Official AWS documentation for Control Tower setup and management
IAM Permissions Setup
Deploy a least-privilege custom role instead of using Control Tower
AWS Organization Setup
Manual role deployment for non-Control Tower environments
Next Steps
Run Your First Audit
Execute the audit across your Control Tower-managed Organization
