Table of Contents
Overview
AuditBadger's AWS integration enables automated evidence collection for SOC 2 and ISO 27001 compliance. Once connected, AuditBadger can:
-
Collect IAM password policies and MFA status
-
Monitor CloudTrail audit logging configuration
-
Check S3 encryption and public access settings
-
Verify GuardDuty threat detection status
-
Review security group configurations
-
Track RDS encryption and backups
-
Monitor KMS key rotation
-
And more...
How It Works
-
You create a read-only IAM role in your AWS account
-
AuditBadger assumes this role to collect compliance evidence
-
Evidence is collected on a compliance-focused schedule (weekly or monthly)
-
Sources with auto-verification enabled are checked against their configured compliance rules
-
Results are linked to your SOC 2/ISO 27001 controls
Security Model
-
Read-only access: AuditBadger cannot modify your AWS resources
-
Cross-account role assumption: We use AWS STS to securely access your account
-
External ID protection: Prevents confused deputy attacks
-
Time-limited credentials: Sessions expire after 1 hour
-
Auditable sessions: AWS API activity is attributable to the assumed AuditBadger role session where AWS records the relevant CloudTrail management events
Prerequisites
Before starting, ensure you have:
-
An AWS account with admin access (to create IAM roles)
-
Your AuditBadger account with an active subscription
-
Access to the AWS Console or AWS CLI
Quick Start (CloudFormation)
The fastest way to set up the integration is using CloudFormation.
Step 1: Navigate to AWS Integration
-
Log in to AuditBadger
-
Go to Settings → Integrations → AWS
-
Click Connect AWS Account
Step 2: Launch CloudFormation Stack
-
Click Launch CloudFormation Stack
-
This opens AWS CloudFormation with a pre-configured template
-
The required parameters (AuditBadger Account ID and External ID) are pre-filled
-
New stacks use the
AuditBadgerAccountIdparameter and default to theAuditBadgerComplianceRolerole name
Legacy compatibility: Older saved links or existing stacks may still show the
HumadroidAccountIdparameter orHumadroidComplianceRolerole name. The template also retainsHumadroidComplianceRoleas its internal CloudFormation resource identifier. These names remain only to prevent existing installations from breaking.HumadroidAccountIdis an alias for the same AuditBadger AWS account ID; it does not identify a separate service or account.
Step 3: Create the Stack
-
Review the stack parameters
-
Scroll down to Capabilities
-
Check the box: "I acknowledge that AWS CloudFormation might create IAM resources"
-
Click Create stack
Step 4: Copy Role ARN
-
Wait for the stack to reach CREATE_COMPLETE status (~1-2 minutes)
-
Go to the Outputs tab
-
Copy the RoleArn value
Step 5: Complete Connection
-
Return to AuditBadger
-
Paste the Role ARN and choose the default AWS region
-
Click Connect AWS account
-
AuditBadger validates the connection in the background; use Test connection on the connected-account panel to run the health checks again
Manual Setup
If you prefer to create the IAM role manually:
Step 1: Create IAM Role
-
Open the AWS Console
-
Navigate to IAM → Roles
-
Click Create role
Step 2: Configure Trust Relationship
-
Select Another AWS account as the trusted entity type
-
Enter the AuditBadger AWS Account ID:
[shown in AuditBadger setup page] -
Check Require external ID
-
Enter the External ID:
[shown in AuditBadger setup page] -
Click Next
Step 3: Attach Permissions
Attach the following policies:
-
SecurityAudit (AWS managed policy)
-
A custom inline policy for additional permissions (see below)
Step 4: Name the Role
-
Role name: Use the name shown in the AuditBadger setup page (default:
AuditBadgerComplianceRole) -
Add a description: "Read-only role for AuditBadger compliance evidence collection"
-
Click Create role
Note: The role name is configurable per AuditBadger environment. If you're connecting the same AWS account to multiple AuditBadger environments (e.g., production and development), each environment will specify a different role name to avoid conflicts.
Compatibility: Existing roles named
HumadroidComplianceRoledo not need to be renamed. AuditBadger validates the role ARN, trust policy, external ID, and permissions; the role name itself is not part of the application contract.
Step 5: Copy Role ARN
-
Open the newly created role
-
Copy the Role ARN from the Summary section
-
Format:
arn:aws:iam::YOUR_ACCOUNT_ID:role/ROLE_NAME
Custom Inline Policy
The CloudFormation template is the source of truth for the AuditBadgerCompliancePolicy inline policy. The older abbreviated S3, Backup, and AWS Config example previously shown here was not a complete replacement for the current template.
For a manual installation:
-
Open the current
auditbadger_compliance_role.yamltemplate -
Copy the complete
AuditBadgerCompliancePolicypolicy document to the manually created role -
Keep the AWS-managed
SecurityAuditpolicy attached -
Return to AuditBadger and run Test connection
The template's S3 hostname retains legacy infrastructure naming, but the published filename, policy, default role name, and customer-facing setup all use AuditBadger.
For the exact operations used by current evidence checks and the permissions inherited from SecurityAudit, see AWS Permissions Required.
Verifying the Connection
In AuditBadger
After entering your Role ARN:
-
Click Test Connection
-
You should see:
-
✅ Connection successful
-
AWS Account ID: Your 12-digit account ID
-
Account Alias: Your AWS account alias (if set)
-
Available Services: List of accessible AWS services
-
Common Verification Results
-
All services accessible: The integration is ready; enable the desired evidence sources.
-
Some services inaccessible: The role has partial permissions; compare its policies with the current CloudFormation template.
-
Authentication failed: AuditBadger could not assume the role; verify the AuditBadger Account ID, External ID, and trust policy.
-
Role not found: Check that the Role ARN was copied exactly from the CloudFormation stack output or IAM role summary.
Enabling Evidence Sources
Once connected, enable evidence sources for your compliance controls:
Step 1: Navigate to a Control
-
Go to Compliance → Projects → Select your SOC 2 or ISO 27001 project
-
Open a control (e.g., CC6.1 - Logical Access Security)
Step 2: View Available Evidence Sources
-
Click the Evidence Sources tab
-
You'll see suggested AWS evidence sources for this control
-
Each source shows:
-
Name and description
-
Collection frequency
-
Auto-verify status
-
Step 3: Enable Sources
-
Click Enable next to each desired source
-
Optionally customize:
-
Collection frequency (weekly or monthly)
-
Verification rules thresholds
-
-
Click Save
Evidence Collection Schedule
-
Weekly: Used by active findings and backup-job evidence sources.
-
Monthly: Used by configuration, encryption, access, and audit-snapshot evidence sources.
Collection scheduling is managed by AuditBadger. The evidence source shows its configured frequency in the application.
Troubleshooting
Error: "Cannot assume role"
Cause: Trust relationship is incorrectly configured.
Solution:
-
Open your IAM role in AWS Console
-
Go to Trust relationships tab
-
Verify the trust policy contains:
{ "Principal": {"AWS": "arn:aws:iam::AUDITBADGER_ACCOUNT_ID:root"}, "Condition": { "StringEquals": {"sts:ExternalId": "YOUR_EXTERNAL_ID"} } } -
Ensure both Account ID and External ID match AuditBadger's values exactly
Error: "Access Denied for iam:GetAccountPasswordPolicy"
Cause: Missing IAM permissions.
Solution:
-
Ensure the SecurityAudit policy is attached
-
Or add the specific permission to your inline policy
Error: "Rate limit exceeded"
Cause: Too many API requests in a short period.
Solution:
-
AuditBadger automatically retries with exponential backoff
-
If persistent, reduce collection frequency
-
Contact support if issues continue
Error: "Service unavailable"
Cause: Temporary AWS service issue.
Solution:
-
AuditBadger automatically retries these errors
-
Check AWS Service Health Dashboard
-
Collection will succeed on next attempt
Connection works but evidence collection fails
Possible causes:
-
Role permissions changed after initial connection
-
Evidence source needs permissions not in SecurityAudit
-
AWS service not enabled in your account (e.g., GuardDuty)
Solution:
-
Re-test connection to verify permissions
-
Check the evidence source error message for specific permissions
-
Enable the AWS service if required
Security & Permissions
Permissions by Evidence Type
The role uses read-only operations across IAM, CloudTrail, CloudWatch, AWS Config, GuardDuty, Security Hub, EC2, S3, RDS, KMS, AWS Backup, and STS.
The complete, current operation list is maintained in AWS Permissions Required. That guide also explains why the role can show permissions inherited from AWS's managed SecurityAudit policy even when AuditBadger does not call those operations.
Data Handling
-
Evidence data is encrypted at rest and in transit
-
Raw API responses are stored for audit purposes
-
Data retention follows your AuditBadger plan settings
-
You can delete evidence at any time
Revoking Access
To disconnect AuditBadger from your AWS account:
-
In AuditBadger: Settings → Integrations → AWS → Disconnect
-
In AWS: Delete the role shown in your integration settings, usually
AuditBadgerComplianceRole. Older installations may still useHumadroidComplianceRole.
Support
If you need help with your AWS integration:
-
Documentation: AuditBadger AWS integration documentation
-
Related guide: AWS Integration User Guide