Access Control | Tigris Object Storage Documentation

On this page

When you create access keys through the Partner API, two fields control what those keys can do:

These two fields are independent. They apply at different times and serve different purposes.

Field Where it applies What it controls
user_role Partner API calls Management scope: list all keys vs own keys, org settings
buckets_roles S3 data operations What the access key can read, write, or manage per bucket

Two Layers of Access Control

POST /access-keys user_role + buckets_roles
user_role buckets_roles
Management Scope S3 Operations (per bucket)
Admin All keys, org settings, users
Member Own keys only
Default if omitted: Member ReadOnly Get, list, head
Editor+ put, delete, bucket config
Admin All ops, bypasses all checks

Organization Role (user_role)

The user_role field tells Tigris what privileges this user has in your system. You pass it on provisioning, access key, and org management endpoints.

Value What it means
Admin Full org access. Can manage all access keys, update org settings, and view all resources.
Member Standard access. Can only manage their own access keys and resources.

The behavioral difference shows up immediately. When you call List Access Keys with user_role: "Admin", the response includes all access keys in the org. With user_role: "Member" (or omitted), you get back only keys owned by that user.

This same scoping applies to other management operations. Admin-only operations include:

If you omit user_role, the user is treated as a Member. For most integrations, Member is the right default.

Bucket Roles (buckets_roles)

The buckets_roles field is an array of {bucket_name, role} pairs stored on the access key. Three roles are available: ReadOnly, Editor, and Admin. See the RBAC permissions table for exactly which S3 operations each role permits.

Use "*" as the bucket name to grant access to all buckets in the org. An access key with {\"bucket_name\": \"*\", \"role\": \"Admin\"} is treated as a full org admin, bypassing all bucket-level permission checks.

How the Two Fields Interact

user_role and buckets_roles apply at different times. Here's how common partner scenarios map to these fields:

Scenario user_role buckets_roles Result
Developer uploads Member `[{