Bring your own cloud¶
Learn how bring your own cloud works, what stays in your AWS account, and what Caution manages within that boundary.
Overview¶
Bring your own cloud (BYOC) lets you run confidential enclaves in your own AWS account. A one-time setup script creates isolated AWS infrastructure and a role scoped to resources tagged for Caution, then Caution manages deployments within that environment.
It is best for teams that:
- Need workloads and data to stay in their own AWS account
- Need control over AWS billing and account boundaries
- Want Caution to manage enclave operations within their environment
For a side-by-side comparison with other deployment options, see deployment models.
Responsibility split¶
In bring your own cloud, Caution manages builds and the enclave lifecycle in your AWS account, while you retain control over the account, network boundaries, and where data resides.
You control:
- Your AWS account and billing
- Network configuration and VPC
- Where your data resides
Caution handles:
- Application builds
- Enclave lifecycle management
- Deployment orchestration in your AWS account, including uploading EIFs to your S3 bucket, launch templates, and Elastic IP assignment
How it works¶
To deploy with bring your own cloud, you'll need a containerized application, Docker, and AWS credentials for the target account.
Once you have everything in place, the setup flow looks like this:
- Provide AWS credentials and run the setup flow from your application directory.
- Caution provisions an isolated environment in your AWS account and registers scoped credentials for the deployment.
- Deploy your application and let Caution manage the enclave lifecycle within that environment.
Setup guide
For the full step-by-step setup and deployment flow, see the bring your own cloud guide.
Security model¶
Tag-based resource scoping¶
All resources are tagged with:
The IAM policy uses AWS condition keys to enforce scope:
aws:ResourceTag/caution:deployment-id- For existing resourcesaws:RequestTag/caution:deployment-id- For new resources
What the scoped credentials CAN do¶
- Read/write EIF images to the deployment's S3 bucket
- Start/stop/terminate EC2 instances with the deployment tag
- Create new instances via the ASG (automatically tagged)
- Manage volumes, security groups, and EIPs with the deployment tag
- Scale the specific Auto Scaling Group
- Create and manage launch template versions
What the scoped credentials CANNOT do¶
- Access any resources without the deployment tag
- Access other S3 buckets
- Modify other Auto Scaling Groups or launch templates
- Access resources in other deployments
- Escalate privileges or modify IAM policies
- Access network resources outside the deployment VPC
Instance types¶
Caution automatically selects an appropriate Nitro Enclave-compatible instance based on your CPU and memory requirements:
| Instance | vCPUs | Memory | Enclave capacity |
|---|---|---|---|
m5.xlarge |
4 | 16 GB | Up to 2 CPUs, 14 GB |
m5.2xlarge |
8 | 32 GB | Up to 6 CPUs, 30 GB |
m5.4xlarge |
16 | 64 GB | Up to 14 CPUs, 62 GB |
m5.8xlarge |
32 | 128 GB | Up to 30 CPUs, 126 GB |
The host instance reserves ~2 vCPUs and ~2 GB memory for the parent instance.
Maintenance¶
These tasks apply to existing bring your own cloud deployments after provisioning, for example when you need to refresh IAM permissions or remove the AWS resources created during setup.
Updating IAM policy¶
To update the IAM policy for an existing deployment (for example, after script improvements), set DEPLOYMENT_ID and VPC_ID in your .env file, then run:
Cleanup¶
To remove all resources created by the setup, see the cleanup instructions in the BYOC repo.
See also¶
-
Containerizing your app
Follow a practical guide to building reproducible containers with StageX.
-
Procfile
Configure how your application builds, runs, and verifies.
-
Custom domains
Use your own domain name for deployments.
-
Deployment configuration
Configure source verification and networking options.