Skip to main content

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.
Enclave uses AWS STS AssumeRole 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.
  1. Trusted entity type: AWS account
  2. Select Another AWS account
  3. Account ID: enter the Enclave platform account ID shown in the IAM Setup Instructions panel
  4. Leave “Require external ID” and “Require MFA” unchecked — the External ID is enforced via the trust policy in the next step, not here
  5. Click Next — skip the permissions step for now
  6. Role name: enclave-byos-s3-role (any name is fine)
  7. Click Create role
Do not use “Custom trust policy” at role creation time. AWS validates principal ARNs at creation and will reject a role ARN that has not been provisioned yet. Use “Another AWS account” with the account ID — the trust policy will be replaced in the next step.

Step 3 — Replace the trust policy

  1. Open the newly created role → Trust relationships tab → Edit trust policy
  2. Replace the entire content with the Trust Policy from the IAM Setup Instructions panel. It will look like:
  1. 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

  1. Permissions tab → Add permissionsCreate inline policy
  2. Switch to the JSON editor and paste the Permissions Policy from the IAM Setup Instructions panel, replacing YOUR_BUCKET_NAME with your actual bucket name:
  1. 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.
Click Test Connection to verify, then Save.

Option B — Static Credentials

Static credentials are stored encrypted at rest in Enclave’s database. Assume Role is strongly recommended for production use.

Step 1 — Create an IAM user

In your AWS account, go to IAM → Users → Create user. On the permissions step, attach an inline policy:
Then go to the user → Security credentialsCreate access key → choose Application running outside AWS → download the Access Key ID and Secret Access Key.

Step 2 — Configure in Enclave

Click Test Connection to verify, then Save.

After saving

The backend is saved in inactive state. Return to Organization → Storage, open the menu on the new backend, and click Activate to start routing uploads to it. Then go to Security → Policies → Storage to assign the backend to the correct org unit scope (tenant-wide, domain, or department).

Troubleshooting