--- title: "Stratus Permissions" url: https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/stratus-permissions/ description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: 2026-09-08T11:07:33Z service: Cloud Scale type: general related_links: - name: "Create a Bucket" url: /en/cloud-scale/help/stratus/buckets/create-bucket/ - name: "Java SDK" url: /en/sdk/java/v1/cloud-scale/stratus/overview/ - name: "JavaScript SDK" url: /en/sdk/javascript/v1/cloudscale/stratus/overview/ - name: "Python SDK" url: /en/sdk/python/v1/cloud-scale/stratus/overview/ - name: "iOS SDK" url: /en/sdk/ios/v2/cloud-scale/stratus/overview/ - name: "Android SDK" url: /en/sdk/android/v2/cloud-scale/stratus/overview/ - name: "Flutter SDK" url: /en/sdk/flutter/v2/cloud-scale/stratus/overview/ - name: "REST API" url: /en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets --- # Stratus Permissions ### Default Permission Template You can create a bucket with one of two types of default permission templates.  * **Authenticated Permission Template**: A bucket created using this default permission template will dictate that all the objects of your bucket can only be accessed by users that are authenticated on the client portal of your application. * **Public Permission Template**: A bucket created using this default permission template will allow any end-user on the internet to access the objects of your bucket without any authorization requirement. > **Note:** * Both the permission templates are default types that you have to select while you [create your bucket](https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/buckets/create-bucket/). These templates are editable, and you can also edit the permissions of individual objects stored in your bucket. * The permissions that are configured are only applicable to project users and not collaborators. * These permissions are meant to define the access level of end-users and not *Collaborators* or *Administrators*. You can define Collaborator's access level in the [Profiles & Permissions](https://docs.catalyst.zoho.com/en/getting-started/set-up-a-catalyst-project/profiles-and-permissions/) section. * Regardless of the permission template you have chosen, **upload** actions in the bucket can only be performed by **authenticated users**. ### Custom Permissions When you create a bucket, you are mandated to choose a default permission template- **Authenticated**, or **Public**. Based on your choice, a default permission template will be loaded, and your bucket will be created. In addition to this, regardless of the permission template you had chosen, you can **define the permissions of every individual object** or sub-directory as a whole using simple JSON code.  The default permission templates that will be loaded based on your choice are shown below: #### Default Authenticated Permission Template **Authenticated Permission Template** ```json { "rules": [ { "rule_id": "AuthenticatedBucket_Rule1", "condition": { "user": { "auth_type": "authenticated", "zuid": "*" } }, "allowed_actions": [ "GetObject" ], "paths": [ "vendorstats::/*" ], "effect": "allow" } ], "version": "v1" } ``` #### Default Public Permission Template **Authenticated Permission Template** ```json { "rules": [ { "rule_id": "PublicBucket", "condition": { "user": { "auth_type": "public" } }, "actions": [ "GetObject" ], "paths": [ "zylker-bucket-pubs::/*" ], "effect": "allow" } ], "version": "v1" } ``` To effectively edit both the permission templates and employ custom permissions, you need to familiarize yourself with the following JSON keys and their purpose:
| JSON Key Name | Purpose |
|---|---|
| `rules` |
|
| `rule_id` |
|
| `effect` |
|
| `allowed_actions` |
|
| `paths` |
|
| `condition` | This JSON key will define the conditions under which the actions need to occur. |
| `user` |
This JSON key will be used in the condition key to specify which user, or set of users, does the condition that is being defined apply to.
|
| `Operators` | These are JSON keys that will help you in defining cases for the conditions to apply or not apply. |
| `string_equals` | Dictate actions that need to occur if the string values are equal. |
| `string_not_equals` | Define actions that need to occur if the string value does not match. |
| `string_equals_ignore_case` | Define actions where the string value can match regardless of the case (upper/lower) that is used. |
| `string_not_equals_ignore_case` | Define actions that need to occur if the string values do not match regardless of the case that is used. |
| `string_like` | If part of the string value matches with the key you provide, then actions can be performed on the object. |
| `string_not_like` | If part of the string value does not match with the key you provide, then actions can be performed on the object. |
| `ip_address` | Define an action if the source of the request comes from a particular IP or IPs that you are allowing. |
| `not_ip_address` | Define actions that should occur if the source of the request comes from IP or IPs that you are particularly halting. |
| `Condition Keys` | |
| `referrer` | This JSON key will contain the value of the complete URL where the action was requested. The value needs to be provided as an array. For example, let's say you have created a microservice and you have hosted it on [Catalyst AppSail](https://docs.catalyst.zoho.com/en/serverless/help/appsail/introduction/). The value of referrer will be the complete URL of this microservice, and the permission will be defined for actions pertaining to this microservice alone. This key will be used for the following operators:
|
| `user_agent` | This JSON key will contain the value of the source from which the request has been made. The value needs to be provided as an array. Whether the source of the request is an API, from a browser, or so on. This key will be used for the following operators:
|
| `source_ip` | This JSON key will contain the value of only publicly listed IP addresses. The value needs to be provided as an array. It will help you in defining a permission that allows, or denies actions from a particular IP. This key will be used for the following operators:
|
| `version` |
|