aws_org_generator.py, complements the Bulk Provider Provisioning tool and is available in the Prowler repository at: util/prowler-bulk-provisioning
Native support for bulk provisioning AWS Organizations and similar multi-account structures directly in the Prowler UI/API is on the official roadmap.Track progress and vote for this feature at: Bulk Provisioning in the UI/API for AWS Organizations
Overview
The AWS Organizations Bulk Provisioning tool simplifies multi-account onboarding by:- Automatically discovering all active accounts in an AWS Organization
- Generating YAML configuration files for bulk provisioning
- Supporting account filtering and custom role configurations
- Eliminating manual entry of account IDs and role ARNs
Prerequisites
Requirements
- Python 3.7 or higher
- AWS credentials with Organizations read access
- ProwlerRole (or custom role) deployed across all target accounts
- Prowler API key (from Prowler Cloud or self-hosted Prowler App)
- For self-hosted Prowler App, remember to point to your API base URL
- Learn how to create API keys: Prowler App API Keys
Deploying ProwlerRole Across AWS Organizations
Before using the AWS Organizations generator, deploy the ProwlerRole across all accounts in the organization using CloudFormation StackSets.Follow the official documentation:
Deploying Prowler IAM Roles Across AWS OrganizationsKey points:
- Use CloudFormation StackSets from the management account
- Deploy to all organizational units (OUs) or specific OUs
- Use an external ID for enhanced security
- Ensure the role has necessary permissions for Prowler scans
Installation
Clone the repository and install required dependencies:AWS Credentials Setup
Configure AWS credentials with Organizations read access:- Management account credentials, or
- Delegated administrator account with
organizations:ListAccountspermission
Prowler API Key Setup
Configure your Prowler API key:- Log in to Prowler Cloud or Prowler App
- Click Profile → Account
- Click Create API Key
- Provide a descriptive name and optionally set an expiration date
- Copy the generated API key (it will only be shown once)
Basic Usage
Generate Configuration for All Accounts
To generate a YAML configuration file for all active accounts in the organization:- Lists all ACTIVE accounts in the organization
- Generates YAML entries for each account
- Saves the configuration to
aws-accounts.yaml
Review Generated Configuration
Review the generated YAML configuration:Dry Run Mode
Test the configuration without writing a file:Advanced Configuration
Using a Specific AWS Profile
Specify an AWS profile when multiple profiles are configured:Excluding Specific Accounts
Exclude the management account or other accounts from provisioning:- Management account (requires different permissions)
- Break-glass accounts (emergency access)
- Suspended or archived accounts
Including Only Specific Accounts
Generate configuration for specific accounts only:Custom Role Name
Specify a custom role name if not using the defaultProwlerRole:
Custom Alias Format
Customize account aliases using template variables:{name}- Account name{id}- Account ID{email}- Account email
Additional Role Assumption Options
Configure optional role assumption parameters:Complete Workflow Example
1
Deploy ProwlerRole Using StackSets
- Log in to the AWS management account
- Open CloudFormation → StackSets
- Create a new StackSet using the Prowler role template
- Deploy to all organizational units
- Use a unique external ID (e.g.,
prowler-org-2024-abc123)
2
Generate YAML Configuration
Configure AWS credentials and generate the YAML file:Output:
3
Review Generated Configuration
Verify the generated YAML configuration:
4
Run Bulk Provisioning
Provision all accounts to Prowler Cloud or Prowler App:With custom options:Successful output:
Command Reference
Full Command-Line Options
Troubleshooting
Error: “No AWS credentials found”
Solution: Configure AWS credentials using one of these methods:Error: “Access denied to AWS Organizations API”
Cause: Current credentials don’t have permission to list organization accounts. Solution:- Ensure management account credentials are used
- Verify IAM permissions include
organizations:ListAccounts - Check IAM policies for Organizations access
Error: “AWS Organizations is not enabled”
Cause: The account is not part of an organization. Solution: This tool requires an AWS Organization. Create one in the AWS Organizations console or use standard bulk provisioning for standalone accounts.No Accounts Generated After Filters
Cause: All accounts were filtered out by--exclude or --include options.
Solution: Review filter options and verify account IDs are correct:
Connection Test Failures During Bulk Provisioning
Cause: ProwlerRole may not be deployed correctly or credentials are invalid. Solution:- Verify StackSet deployment status in CloudFormation
- Check role trust policy includes correct external ID
- Test role assumption manually:

