This submodule creates the necessary IAM roles and policies for Aikido Security integration in a single AWS account, without requiring AWS Organizations or CloudFormation StackSets.
Use this module when you:
- Want to connect a single AWS account to Aikido
- Cannot or don't want to use AWS Organizations StackSets
- Need more control over which accounts get Aikido integration
- Are managing member accounts individually
This module creates:
- CSPM Role:
AikidoSecurityReadonlyRolewith SecurityAudit and custom policies for Cloud Security Posture Management - ECR Scanning Role (optional):
AikidoSecurityEcrScanningRolefor container image scanning - EBS Scanning Role (optional):
AikidoSecurityEbsScanningRolefor volume scanning
module "aikido_iam" {
source = "git::https://github.com/AikidoSec/aws-native-terraform-module.git//modules/iam-roles?ref=main"
external_id = "your-external-id-from-aikido"
}module "aikido_iam" {
source = "git::https://github.com/AikidoSec/aws-native-terraform-module.git//modules/iam-roles?ref=main"
external_id = "your-external-id-from-aikido"
enable_ecr_scanning = true
enable_ebs_scanning = true
}If you've cloned the repository:
module "aikido_iam" {
source = "../../modules/iam-roles"
external_id = "your-external-id-from-aikido"
enable_ecr_scanning = true
enable_ebs_scanning = true
}| Name | Version |
|---|---|
| terraform | >= 1.0 |
| aws | >= 5.0 |
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| external_id | External ID for Aikido Security role assumption | string |
n/a | yes |
| enable_comprehensive_permissions | Enable comprehensive CSPM permissions for full security coverage. When disabled, basic permissions are used but Aikido will still attempt additional API calls, resulting in access denied entries in CloudTrail logs. | bool |
false |
no |
| enable_ecr_scanning | Enable ECR scanning | bool |
false |
no |
| enable_ebs_scanning | Enable EBS scanning | bool |
false |
no |
| aikido_cspm_scanner_role_arn | ARN of the Aikido cloud scanner role | string |
"arn:aws:iam::881830977366:role/service-role/lambda-aws-cloud-findings-role-uox26vzd" |
no |
| aikido_ecr_scanner_role_arn | ARN of the Aikido ECR scanner role | string |
"arn:aws:iam::881830977366:role/service-role/lambda-container-image-scanner-role-pb0qotst" |
no |
| aikido_ebs_scanner_role_arn | ARN of the Aikido EBS scanner role | string |
"arn:aws:iam::881830977366:role/aws-ebs-scanner-role" |
no |
| cspm_role_name | Name of the CSPM IAM role | string |
"AikidoSecurityReadonlyRole" |
no |
| ecr_role_name | Name of the ECR scanning IAM role | string |
"AikidoSecurityEcrScanningRole" |
no |
| ebs_role_name | Name of the EBS scanning IAM role | string |
"AikidoSecurityEbsScanningRole" |
no |
| Name | Description |
|---|---|
| cspm_role_arn | ARN of the Aikido CSPM role |
| cspm_role_name | Name of the Aikido CSPM role |
| ecr_role_arn | ARN of the Aikido ECR scanning role (if enabled) |
| ecr_role_name | Name of the Aikido ECR scanning role (if enabled) |
| ebs_role_arn | ARN of the Aikido EBS scanning role (if enabled) |
| ebs_role_name | Name of the Aikido EBS scanning role (if enabled) |
- Log in to your Aikido Security dashboard
- Navigate to the AWS integration settings
- Copy the External ID provided by Aikido
You can use this module in separate Terraform configurations for each account:
Account 1 (Production):
provider "aws" {
region = "us-east-1"
alias = "production"
}
module "aikido_production" {
source = "git::https://github.com/AikidoSec/aws-native-terraform-module.git//modules/iam-roles?ref=main"
providers = {
aws = aws.production
}
external_id = "your-external-id-from-aikido"
enable_ecr_scanning = true
enable_ebs_scanning = true
}
output "production_cspm_role_arn" {
value = module.aikido_production.cspm_role_arn
}Account 2 (Staging):
provider "aws" {
region = "us-east-1"
alias = "staging"
}
module "aikido_staging" {
source = "git::https://github.com/AikidoSec/aws-native-terraform-module.git//modules/iam-roles?ref=main"
providers = {
aws = aws.staging
}
external_id = "your-external-id-from-aikido"
enable_ecr_scanning = false
enable_ebs_scanning = false
}
output "staging_cspm_role_arn" {
value = module.aikido_staging.cspm_role_arn
}| Feature | Root Module | IAM Roles Submodule |
|---|---|---|
| AWS Organizations | Required | Not required |
| CloudFormation StackSets | Yes | No |
| Management Account | Deploys to | Can deploy to any account |
| Member Accounts | Automatic via StackSets | Manual per account |
| Use Case | Organization-wide deployment | Individual account setup |
aws_iam_policy.aikido_security_auditaws_iam_role.aikido_security_cspmaws_iam_role_policy_attachment.aikido_security_audit_awsaws_iam_role_policy_attachment.aikido_security_audit_custom
aws_iam_policy.aikido_security_ecr_scanaws_iam_role.aikido_security_ecr_scanaws_iam_role_policy_attachment.aikido_security_ecr_scan
aws_iam_policy.aikido_security_ebs_scanaws_iam_role.aikido_security_ebs_scanaws_iam_role_policy_attachment.aikido_security_ebs_scan
See the main module's LICENSE file.