Skip to content

AWS IAM permissions ​

BoilStream needs access to the object storage used by your deployment. AWS deployments may also need IAM role provisioning and STS access. Managed DuckDB clients use BoilStream credentials; they do not receive your storage access keys.

Object-storage permissions ​

Typical storage operations need:

PermissionPurpose
s3:ListBucketDiscover objects within the deployment's prefixes
s3:GetObjectRead stored data and recovery backups
s3:PutObjectWrite data and backups
s3:DeleteObjectRemove expired or obsolete objects
s3:AbortMultipartUploadClean up incomplete uploads

Scope permissions to the deployment's bucket and all configured data and recovery prefixes. The example uses one shared prefix. If recovery uses a different prefix or bucket, include it too; access to the data prefix alone is insufficient for recovery.

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ListDeploymentObjects",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::YOUR-BUCKET"
    },
    {
      "Sid": "ManageDeploymentObjects",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::YOUR-BUCKET/YOUR-PREFIX/*"
    }
  ]
}

The service also performs a bucket-level listing during storage validation. Keep object operations scoped to your deployment prefixes. Let BoilStream manage those objects; their internal names and layout are not an application interface.

AWS role provisioning ​

For an AWS backend, initial DuckLake provisioning checks or creates an access role and checks that the service can assume it. The deployment identity needs the following permissions for that setup:

PermissionPurpose
sts:GetCallerIdentityDetermine the AWS account
iam:GetRoleCheck the configured access role
iam:CreateRoleCreate a missing role
iam:PutRolePolicyConfigure its storage access
sts:AssumeRoleUse the role for storage operations

Scope role-management permissions to the role resources used by your deployment and review its trust policy. These permissions are for the BoilStream deployment, not every SQL user. An existing storage role does not eliminate all setup permission checks.

S3-compatible storage ​

For MinIO or another non-AWS S3-compatible endpoint, use the provider's bucket credentials and addressing settings. AWS IAM role provisioning is skipped for a backend recognized as non-AWS, but valid storage credentials and object permissions are still required.

Merge an appropriate backend into the generated configuration. Do not reuse development credentials in production. See Configuration.

Troubleshooting ​

ErrorCheck
Bucket or object access deniedBucket, prefix, deployment identity, bucket policy and encryption-key permissions
Failed to create IAM roleRole-management permissions and the intended role resource
AssumeRole failedPermission to assume the role and its trust policy
Recovery cannot read backupsAccess to the recovery bucket/prefix and the original encryption material

Prefer workload identity or instance roles over long-lived access keys. Keep credentials out of source control and use your organization's secret-management process.

See Cluster mode for recovery requirements and DuckLake integration for client access.