Bring Your Own Cloud Bucket
Overview
The Bring Your Own Cloud Bucket feature allows you to configure Highlighter to store and access your assessment data directly in your own AWS S3 bucket, rather than using Highlighter's default storage. This provides you with:
- Full control over your data location and storage policies
- Cost transparency - storage costs appear directly on your AWS bill
- Security compliance - data remains within your AWS environment
- Access control - manage bucket permissions according to your organization's policies
This guide will walk you through setting up the necessary AWS permissions and configuring the Cloud Credential in Highlighter.
Prerequisites
Before starting, ensure you have:
- AWS Account with administrative access
- Highlighter account with administrator privileges
- S3 bucket already created for storing Highlighter data
- Access to create and manage IAM roles in your AWS account
Step 1: Get Your External ID
- Log into your Highlighter account
- At the bottom left where your profile photo is, click on the chevron and navigate to Cloud Credentials
- Click Add New Cloud Credential
- At this stage just copy the External ID, which you will need later on in setting up the Trust Policy.
Step 2: Create a S3 Permissions Policy
This next step creates a permissions policy that grants Highlighter the necessary S3 access:
- In your AWS account, Navigate to IAM → Policies → Create policy
- Click Policy Editor, and then switch to the JSON editor
- Replace the default policy with the following (replace
CUSTOMER_BUCKET_NAME
with your actual bucket name):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:ListBucketVersions",
"s3:ListMultipartUploadParts"
],
"Resource": "arn:aws:s3:::CUSTOMER_BUCKET_NAME"
},
{
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:DeleteObjectTagging",
"s3:DeleteObjectVersion",
"s3:DeleteObjectVersionTagging",
"s3:GetObject",
"s3:GetObjectAttributes",
"s3:GetObjectLegalHold",
"s3:GetObjectRetention",
"s3:GetObjectTagging",
"s3:GetObjectVersion",
"s3:GetObjectVersionAttributes",
"s3:GetObjectVersionTagging",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:PutObject",
"s3:PutObjectLegalHold",
"s3:PutObjectRetention",
"s3:PutObjectTagging",
"s3:PutObjectVersionTagging",
"s3:RestoreObject"
],
"Resource": "arn:aws:s3:::CUSTOMER_BUCKET_NAME/*"
}
]
}
- Give the policy a descriptive name like
HighlighterS3BucketAccess
- Click Create policy
Step 3: Create IAM Role
Now that we have a permissions policy, let's create a new IAM role in your AWS account that Highlighter can assume to access your S3 bucket.
In the AWS Console:
- Navigate to IAM → Roles → Create role
- Select AWS account as the trusted entity type
- Choose Another AWS account
- Enter the Highlighter AWS Account ID:
195892427074
- Check Require external ID and enter the External ID you copied in Step 1
- Click Next
- Adding permission policy from Step 2, eg.,
HighlighterS3BucketAccess
- Click Next
- Configure the role details:
- Role name:
HighlighterBucketAccessRole
- Description:
Role for Highlighter to access data in my AWS S3 buckets
- Role name:
- Click Create role
Configure the Trust Policy
After creating the role, you need to update its trust policy:
- Find your newly created role and click on it
- Go to the Trust relationships tab
- Click Edit trust policy
- Replace the existing policy with the following (replace
YOUR_EXTERNAL_ID
with the External ID from Step 1):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::195892427074:role/highlighter.data.broker.role"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "YOUR_EXTERNAL_ID"
}
}
}
]
}
- Click Update policy
- Copy the role ARN from the top panel to your clipboard to use in the next step.
Step 4: Configure Cloud Credential in Highlighter
Once you have completed the AWS setup of the role for Highlighter to assume:
- Navigate back to your New Cloud Credential page in Highlighter
- Fill in the required information:
- Name: A descriptive name for this credential (e.g., "My Company S3 Bucket")
- Provider: Select AWS S3
- Role ARN: The ARN of your IAM role that you copied in the previous step (e.g.,
arn:aws:iam::123456789012:role/HighlighterBucketAccessRole
) - Bucket Name: Your S3 bucket name
- Region: Your S3 bucket's AWS region
- Click Save
- Click Test Connection to verify the setup
- Note: for security reasons, whenever a Cloud Credential is created or updated, all users of your account with role 'Admin' are emailed with the details.
Step 5: CORS setup
- Back in the AWS console go to your bucket and click the Permissions tab. Scroll down to the Cross-origin resource sharing (CORS) section and click the Edit button.
- Paste in the following, replacing
YOUR_HIGHLIGHTER_ACCOUNT
with the URL of your Highlighter account, for examplemy-company.highlighter.ai
.
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"POST",
"HEAD",
"DELETE",
"PUT"
],
"AllowedOrigins": [
"https://YOUR_HIGHLIGHTER_ACCOUNT"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]
- Click the Save changes button
Step 6: Verification
After configuration, verify that the setup is working:
- In Highlighter, try uploading a small test file or creating a new assessment workflow
- Check your S3 bucket to confirm that data is being stored correctly
- Monitor CloudTrail logs (if enabled) to see Highlighter's assume role activities
Troubleshooting
Common Issues
"Access Denied" errors:
- Verify the External ID matches exactly
- Check that the IAM role ARN is correct
- Ensure the S3 permissions policy includes all required actions
- Confirm the bucket name is spelled correctly
"Unable to assume role" errors:
- Check that the trust policy includes the correct Highlighter principal
- Verify the External ID condition is properly formatted
- Ensure the role exists and is active
Connection test fails:
- Verify your S3 bucket exists and is in the specified region
- Check that the IAM role has been properly configured
- Contact Silverpond support to verify the External ID
Getting Help
If you encounter issues:
- Check the AWS IAM and S3 console for any error messages
- Verify all ARNs and IDs are correctly copied
- Contact Silverpond support with your role ARN and any error messages
Security Considerations
- Principle of Least Privilege: The provided S3 permissions are the minimum required for Highlighter to function
- External ID: Never share your External ID publicly - it's a security credential
- Role Access: Regularly review who has access to modify your IAM role
- Bucket Policies: Consider additional bucket-level policies for enhanced security
- Monitoring: Enable CloudTrail logging to monitor access to your resources