/iam-review
Data Collection
List IAM Roles and Policies:
aws iam list-roles- All roles in the accountaws iam list-policies --scope Local- Custom policies- For each role:
aws iam list-attached-role-policies - For each role:
aws iam list-role-policies(inline)
Analyze Inline vs Managed Policies:
- Flag inline policies (harder to audit and reuse)
- Check managed policy versions and drift
Check Permissions Boundaries:
aws iam get-role- PermissionsBoundary field- Flag roles WITHOUT permissions boundaries
Cross-Account Access:
- Check trust policies for external account IDs
- Verify
sts:ExternalIdcondition exists - Flag overly broad trust (
Principal: "*")
Service-Linked Roles:
- Identify auto-created service roles
- Verify they match active services
Analysis Checklist
- Wildcard Actions: Policies with
s3:*,ec2:*,iam:* - Wildcard Resources: Policies with
Resource: "*" - Missing Conditions: No IP restriction, no MFA requirement
- Admin Access: Roles with
AdministratorAccesspolicy - Access Keys: IAM users with access keys (prefer roles)
- Unused Permissions: Last accessed >90 days (via Access Advisor)
- Cross-Account Trust: Verify all trusted accounts are known
- Assume Role Chains: Role A assumes B assumes C (excessive)
Output
- Risk Score: X/10 (10 = most risky)
- Critical: Admin access, wildcard permissions, public trust
- Warnings: Unused permissions, missing conditions, inline policies
- Recommendations: Specific least-privilege policy suggestions
- Policy Suggestions: JSON of corrected IAM policies
For each finding, provide the current policy snippet and the recommended replacement.