Skip to main content

How to deploy with Cloudformation

Prerequisites

Before deploying, make sure you review the required IAM permissions.

View Required IAM Permissions

Quick Start

To quickly deploy the platform via AWS CloudFormation with default options, click here.

AWS CloudFormation Template Overview

Deploying / Forensic Acquisition and Investigation in AWS is simple using our CloudFormation Template (CFT), which walks you through configuring the platform stack.

If you're working with the Sales team or using a free trial, you will receive a link to the CloudFormation Template to begin deployment. If you haven't received it yet, contact sales@cadosecurity.com.

Available CloudFormation Templates

Several CloudFormation templates are available, depending on your deployment requirements:

Steps for Deployment

  1. After receiving the CloudFormation template link, click it to open the AWS CloudFormation Management Console.

  2. In Step 1 (Specify template), leave the default settings (Template is ready and Amazon S3 URL) unchanged. Click Next.

  3. In Step 2 (Specify stack details), name your stack (e.g., CadoResponse) and enter the following parameters:

    Parameters Overview:

    Parameter NameValueDescription
    Instance type for / Forensic Acquisition and Investigation EC2 Serverm5.4xlargeRecommended minimum instance size for enterprise use.
    Key pair for / Forensic Acquisition and Investigation EC2 Server(choose your keypair)Used for SSH access. Not required for standard use, but useful for support if needed.
    Allowed source IP for SSH(enter IP range)Specify IP addresses or ranges for SSH access (CIDR format). Follow the least privilege principle.
    Allowed source IP for HTTPS(enter IP range)Specify IP addresses or ranges for HTTPS access (CIDR format).
    VPC CIDR(enter IP range)Define the CIDR block for the VPC Subnet.
    EFSArchiveAFTER_30_DAYSMove data to infrequent access storage after 30 days.
    InstanceVolumeSize1000Specify required EC2 volume size in GB.
    S3ArchiveTime30Move S3 data to Glacier after 30 days of inactivity.
    S3GlacierDelete365Delete Glacier storage data after 365 days.
    AvailabilityZoneA(choose your AZ)The primary subnet's availability zone.
    AvailabilityZoneB(choose your AZ)The secondary subnet's availability zone.
    FeatureFlagPlatformUpgradeTrueEnables automatic platform upgrades.
    CertificateARN(enter ARN)The ARN of the certificate for the Application Load Balancer (if FeatureFlagDeployWithALB is True).
    Proxy(URL format)Optional proxy URL for outbound connections.
    ProxyCertUrl(URL)Optional URL to download the proxy certificate.
    tip

    We recommend setting InstanceVolumeSize to at least 500GB. The instance should be sized to about 20% of the data you plan to store. For example, for 5TB of data, allocate 1000GB of disk space. You can delete old investigations to free up space.

  4. Click Next.

  5. In Step 3 (Configure stack options), unless you need custom settings, click Next. For custom settings, contact / Forensic Acquisition and Investigation.

    Step 3

    info

    For more information on stack options, refer to the AWS Documentation.

  6. Review your configuration and click Create Stack.

    info

    Ensure to check the box for "I acknowledge that AWS CloudFormation might create IAM resources" if an IAM role was not applied in Step 3. The IAM policy created by the CloudFormation template follows the principle of least privilege, restricting access to only the necessary resources and actions.

Deployment Time

Deployment takes approximately 15 minutes, with an additional 10 minutes for the stack to complete installation and updates.

Once the stack status shows CREATE_COMPLETE, the deployment is finished, and you can log into / Forensic Acquisition and Investigation.

Creation Complete

After deployment, you can import test data from the "Help" menu to verify that everything is functioning correctly.

Required IAM Permissions

This section outlines the IAM permissions required for users to deploy a Cado platform environment. Each permission listed is essential for enabling Cado to provision the necessary platform components.

IAM Permissions
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CloudFormation",
"Effect": "Allow",
"Action": [
"cloudformation:CreateStack",
"cloudformation:CreateUploadBucket",
"cloudformation:DescribeStackEvents",
"cloudformation:DescribeStacks",
"cloudformation:GetTemplate",
"cloudformation:GetTemplateSummary",
"cloudformation:ListStackResources"
],
"Resource": "*"
},
{
"Sid": "CreateCadoEC2Resources",
"Effect": "Allow",
"Action": [
"ec2:AllocateAddress",
"ec2:AssociateAddress",
"ec2:AssociateRouteTable",
"ec2:AttachInternetGateway",
"ec2:AttachVolume",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:CreateInternetGateway",
"ec2:CreateLaunchTemplate",
"ec2:CreateRoute",
"ec2:CreateRouteTable",
"ec2:CreateSecurityGroup",
"ec2:CreateSubnet",
"ec2:CreateVolume",
"ec2:CreateVpc",
"ec2:ModifyVpcAttribute",
"ec2:RevokeSecurityGroupEgress",
"ec2:RunInstances"
],
"Resource": "*"
},
{
"Sid": "DescribeEC2Resources",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"ec2:DescribeRouteTables",
"ec2:DescribeInternetGateways",
"ec2:DescribeVolumes",
"ec2:DescribeAddresses",
"ec2:DescribeLaunchTemplates",
"ec2:DescribeImages",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeKeyPairs",
"ec2:DescribeNetworkAcls"
],
"Resource": "*"
},
{
"Sid": "TagCadoEC2ResourcesOnCreation",
"Effect": "Allow",
"Action": "ec2:CreateTags",
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:CreateAction": [
"AllocateAddress",
"CreateInternetGateway",
"CreateLaunchTemplate",
"CreateRouteTable",
"CreateSecurityGroup",
"CreateSubnet",
"CreateVolume",
"CreateVpc",
"RunInstances"
]
}
}
},
{
"Sid": "ManageCadoEFSResources",
"Effect": "Allow",
"Action": [
"elasticfilesystem:CreateAccessPoint",
"elasticfilesystem:CreateFileSystem",
"elasticfilesystem:CreateMountTarget",
"elasticfilesystem:DescribeAccessPoints",
"elasticfilesystem:DescribeFileSystems",
"elasticfilesystem:DescribeMountTargets",
"elasticfilesystem:PutLifecycleConfiguration",
"elasticfilesystem:TagResource"
],
"Resource": "*"
},
{
"Sid": "ManageCadoResponseIAMResources",
"Effect": "Allow",
"Action": [
"iam:AddRoleToInstanceProfile",
"iam:AttachRolePolicy",
"iam:CreateInstanceProfile",
"iam:CreatePolicy",
"iam:CreateRole",
"iam:GetInstanceProfile",
"iam:GetRole",
"iam:GetRolePolicy",
"iam:PutRolePolicy"
],
"Resource": [
"arn:aws:iam::*:instance-profile/*-myCadoInstanceProfile-*",
"arn:aws:iam::*:policy/*-myCadoResponse*",
"arn:aws:iam::*:role/*-myCadoResponse*"
]
},
{
"Sid": "IAMPassCadoRolesToEc2AndCloudFormation",
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::*:role/*-myCadoResponse*",
"Condition": {
"StringEquals": {
"iam:PassedToService": [
"ec2.amazonaws.com",
"cloudformation.amazonaws.com"
]
}
}
},
{
"Sid": "ManageCadoLogGroups",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:DescribeLogGroups"
],
"Resource": [
"arn:aws:logs:*:*:log-group:/var/logs/cado",

To provide full transparency into how the deployment process works, this document includes a table explaining why each permission is required and how it is used when creating a Cado deployment. This helps administrators understand the scope of access granted and make informed decisions when defining IAM policies.

CloudFormation Permissions
PermissionDescription
cloudformation:CreateStackDeploy the FAI CloudFormation stack
cloudformation:CreateUploadBucketCreate a CloudFormation bucket for the large template
cloudformation:DescribeStackEventsGet stack deployment status
cloudformation:DescribeStacksGet stack description
cloudformation:GetTemplateRetrieve the template body
cloudformation:GetTemplateSummaryRetrieve the template summary
cloudformation:ListStackResourcesList all resources created in the stack

Scope

ResourceDescription
*Stack names are user‑provided or AWS‑generated

CreateCadoEC2Resources Permissions
PermissionDescription
ec2:AllocateAddressCreate an elastic IP for FAI
ec2:AssociateAddressAttach the elastic IP
ec2:AssociateRouteTableLink route table to subnets
ec2:AttachInternetGatewayAttach IGW to VPC
ec2:AttachVolumeAttach EBS volume
ec2:AuthorizeSecurityGroupEgressOutbound SG rules
ec2:AuthorizeSecurityGroupIngressInbound SG rules
ec2:CreateInternetGatewayCreate IGW
ec2:CreateLaunchTemplateCreate launch template
ec2:CreateRouteAdd a route
ec2:CreateRouteTableCreate a route table
ec2:CreateSecurityGroupCreate a security group
ec2:CreateSubnetCreate subnet
ec2:CreateVolumeCreate EBS volume
ec2:CreateVpcCreate VPC
ec2:ModifyVpcAttributeModify VPC attributes
ec2:RevokeSecurityGroupEgressRemove default egress
ec2:RunInstancesLaunch the EC2 instance

Scoping

ResourceDescription
*Applies to all resources

DescribeEC2Resources Permissions
PermissionDescription
ec2:DescribeAddressesValidate resource creation
ec2:DescribeAvailabilityZonesValidate AZ status
ec2:DescribeImagesValidate AMI
ec2:DescribeInstancesValidate EC2
ec2:DescribeInternetGatewaysValidate IGW
ec2:DescribeKeyPairsValidate keypairs
ec2:DescribeLaunchTemplatesValidate templates
ec2:DescribeRouteTablesValidate routing
ec2:DescribeSecurityGroupsValidate SGs
ec2:DescribeSubnetsValidate subnets
ec2:DescribeVolumesValidate volumes
ec2:DescribeVpcsValidate VPC
ec2:DescribeNetworkAclsValidate ACLs

Scoping

ResourceDescription
*Applies across all resources

TagCadoEc2ResourcesOnCreation Permissions
PermissionDescription
ec2:CreateTagsTag resources created during deployment

Scoping

ConditionDescription
Tagging allowed only during EC2 resource creationThis includes creation of actions such as AllocateAddress, CreateInternetGateway, CreateLaunchTemplate, CreateRouteTable, CreateSecurityGroup, CreateSubnet, CreateVolume, CreateVpc, and RunInstances

ManageCadoEFSResources Permissions
PermissionDescription
elasticfilesystem:CreateAccessPointCreate EFS access points
elasticfilesystem:CreateFileSystemCreate EFS filesystem
elasticfilesystem:CreateMountTargetCreate mount targets
elasticfilesystem:DescribeAccessPointsValidate creation
elasticfilesystem:DescribeFileSystemsValidate creation
elasticfilesystem:DescribeMountTargetsValidate mount targets
elasticfilesystem:PutLifecycleConfigurationApply lifecycle policies
elasticfilesystem:TagResourceTag EFS resources

Scoping

ResourceDescription
*Applies to all EFS resources

ManageCadoResponseIAMResources Permissions
PermissionDescription
iam:AddRoleToInstanceProfileAttach role to profile
iam:AttachRolePolicyAttach policies
iam:CreateInstanceProfileCreate instance profile
iam:CreatePolicyCreate custom policies
iam:CreateRoleCreate roles
iam:GetInstanceProfileValidate creation
iam:GetRoleValidate role
iam:GetRolePolicyRetrieve inline policies
iam:PutRolePolicyAdd inline policies

Scoping

ResourceDescription
arn:aws:iam:::instance-profile/Allowed instance profiles
arn:aws:iam:::policy/Allowed IAM policies
arn:aws:iam:::role/Allowed roles
Cado platform roles/policiesRestricted to Cado‑created IAM resources

IAMPassCadoRolesToEc2AndCloudFormation Permissions
PermissionDescription
iam:PassRoleAllow EC2/CloudFormation to assume roles

Scoping

ConditionDescription
Restricted servicesOnly EC2 and CloudFormation may assume the role

ManageCadoLogGroups Permissions
PermissionDescription
logs:CreateLogGroupCreate required log group
logs:CreateLogStreamCreate log streams
logs:DescribeLogGroupsValidate log group existence

Scoping

ResourceDescription
arn:aws:logs:::log-group:/var/logs/cadoAllowed Cado log groups
arn:aws:logs:::log-group:/var/logs/cado:*Allowed Cado log streams

S3 CloudFormation Permissions
PermissionDescription
s3:CreateBucketCreate deployment bucket
s3:GetObjectRead CloudFormation template
s3:PutObjectUpload template objects

Scoping

ResourceDescription
arn:aws:s3:::cf-templates-*CFN internal bucket
arn:aws:s3:::cf-templates-/CFN internal objects