Prerequisites
- Owner role in Enclave and an Enterprise Advanced plan
- An AWS account with permission to create IAM roles and S3 buckets
- An existing S3 bucket (versioning enabled is recommended)
- Network connectivity from your Enclave deployment to the S3 API endpoint
Choosing an auth method
Use Assume Role in production. Static Credentials are suitable for testing or environments where cross-account IAM is not available.
Option A — Assume Role (recommended)
Enclave uses AWS STSAssumeRole to obtain temporary credentials. Your organisation’s UUID is used as an External ID, which prevents confused-deputy attacks — no other Enclave tenant can assume your role even if the Enclave platform ARN were known.
Step 1 — Open the Add Storage Backend dialog
In Enclave, navigate to Organization → Storage, click Add Storage Backend, select the AWS S3 card from the provider grid, then set Authentication Method to Assume Role (cross-account — recommended for BYOS). Click Show IAM Setup Instructions. The panel will display your pre-filled External ID, Platform Principal ARN, Trust Policy, and Permissions Policy. Keep this panel open — you will copy values from it in the steps below.Step 2 — Create an IAM role in AWS
In the AWS account where your S3 bucket resides, go to IAM → Roles → Create role.- Trusted entity type: AWS account
- Select Another AWS account
- Account ID: enter the Enclave platform account ID shown in the IAM Setup Instructions panel
- Leave “Require external ID” and “Require MFA” unchecked — the External ID is enforced via the trust policy in the next step, not here
- Click Next — skip the permissions step for now
- Role name:
enclave-byos-s3-role(any name is fine) - Click Create role
Step 3 — Replace the trust policy
- Open the newly created role → Trust relationships tab → Edit trust policy
- Replace the entire content with the Trust Policy from the IAM Setup Instructions panel. It will look like:
- Click Update policy
The
Principal is the Enclave account root (required to pass AWS’s creation-time validation). The ArnLike condition locks assumption to the specific Enclave platform role at runtime. The sts:ExternalId scopes this role exclusively to your organisation.Step 4 — Add S3 permissions
- Permissions tab → Add permissions → Create inline policy
- Switch to the JSON editor and paste the Permissions Policy from the IAM Setup Instructions panel, replacing
YOUR_BUCKET_NAMEwith your actual bucket name:
- Click Next → name the policy (e.g.
enclave-byos-s3-permissions) → Create policy
Step 5 — Configure in Enclave
Copy the Role ARN from the role Summary page and fill in the remaining fields:You do not need to enter an External ID in the dialog — Enclave sets it automatically from your organisation ID. The value shown in IAM Setup Instructions is for reference when setting up the trust policy.
Option B — Static Credentials
Step 1 — Create an IAM user
In your AWS account, go to IAM → Users → Create user. On the permissions step, attach an inline policy:Step 2 — Configure in Enclave
Click Test Connection to verify, then Save.