> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Role-based access control (RBAC)

> Configure role-based access control in ClickStack to manage team permissions for dashboards, saved searches, sources, alerts, and more.

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

ClickStack includes role-based access control (RBAC) so you can define custom roles with fine-grained permissions over [dashboards](/clickstack/features/dashboards/overview), [saved searches](/clickstack/features/search), sources, [alerts](/clickstack/features/alerts), webhooks, and notebooks. Permissions work at two levels: resource-level access (no access, read, or manage per resource type) and optional fine-grained rules that restrict access to individual resources by name, tag, or ID. ClickStack ships with three built-in roles, and you can create custom roles to match your team's needs.

<Info>
  **Managed ClickStack only**

  RBAC is only available in Managed ClickStack deployments.
</Info>

<h2 id="user-access-prerequisites">
  User access prerequisites
</h2>

ClickStack authenticates through ClickHouse Cloud. Before you can assign ClickStack roles, each user must:

1. **Be invited to your ClickHouse Cloud organization.** An organization admin invites users from the Cloud console. See [Manage cloud users](/products/cloud/guides/security/cloud-access-management/manage-cloud-users) for details.
2. **Have SQL Console access on the service.** Navigate to your service's **Settings** → **SQL Console Access** and set the appropriate permission level:

| Cloud SQL Console access              | ClickStack access                                                                       |
| ------------------------------------- | --------------------------------------------------------------------------------------- |
| **SQL Console Admin** (Full Access)   | Full access to ClickStack. Required for enabling [alerts](/clickstack/features/alerts). |
| **SQL Console Read Only** (Read Only) | Can view observability data and create dashboards.                                      |
| **No access**                         | Can't access ClickStack.                                                                |

Once a user has Cloud access, they appear in the ClickStack **Team Settings** page where you can assign a ClickStack role.

<Tabs>
  <Tab title="Cloud Users and roles">
    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8a08bda2/OwB6o9ddvLojEP8N/images/clickstack/rbac/team-page-cloud.png?fit=max&auto=format&n=OwB6o9ddvLojEP8N&q=85&s=3358a378dce142d351a3b37608c88901" alt="ClickHouse Cloud Users and roles page" size="lg" width="2402" height="1936" data-path="images/clickstack/rbac/team-page-cloud.png" />
  </Tab>

  <Tab title="ClickStack Team Settings">
    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8a08bda2/OwB6o9ddvLojEP8N/images/clickstack/rbac/team-page-clickstack.png?fit=max&auto=format&n=OwB6o9ddvLojEP8N&q=85&s=06824e6c27f0a417230a0c06aa16475c" alt="ClickStack Team Settings page showing team members and their roles" size="lg" width="1862" height="1374" data-path="images/clickstack/rbac/team-page-clickstack.png" />
  </Tab>
</Tabs>

<h2 id="built-in-roles">
  Built-in roles
</h2>

ClickStack includes three system roles. You can't edit or delete these. The Admin role is assigned to the team creator by default.

| Permission                   | Admin | Member | ReadOnly |
| ---------------------------- | :---: | :----: | :------: |
| Read all resources           |   ✓   |    ✓   |     ✓    |
| Manage dashboards            |   ✓   |    ✓   |          |
| Manage saved searches        |   ✓   |    ✓   |          |
| Manage sources               |   ✓   |    ✓   |          |
| Manage alerts                |   ✓   |    ✓   |          |
| Manage webhooks              |   ✓   |    ✓   |          |
| Manage notebooks             |   ✓   |    ✓   |          |
| Update team settings         |   ✓   |    ✓   |          |
| Create/delete teams          |   ✓   |        |          |
| Manage users and invitations |   ✓   |        |          |

<h2 id="assigning-roles">
  Assigning roles to team members
</h2>

The **Team Settings** page lists all team members with their current role. To change a role, click **Edit** next to the user's name and select a new role. Each user has exactly one role.

<h3 id="default-new-user-role">
  Default new user role
</h3>

You can set a default role for new users under [Security policies](#security-policies). New users who auto-join the team are automatically assigned this role.

<h2 id="creating-a-role">
  Creating a custom role
</h2>

<Steps>
  <Step>
    <h3 id="step-navigate">
      Navigate to Team Settings
    </h3>

    Open **Team Settings** and scroll to **RBAC Roles**.

    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8a08bda2/OwB6o9ddvLojEP8N/images/clickstack/rbac/rbac-section.png?fit=max&auto=format&n=OwB6o9ddvLojEP8N&q=85&s=146b29458ee47f9680ccc8592c230771" alt="RBAC Roles" size="lg" width="3838" height="882" data-path="images/clickstack/rbac/rbac-section.png" />
  </Step>

  <Step>
    <h3 id="step-add-role">
      Add a new role
    </h3>

    Click **+ Add Role**. Enter a **Role Name** and optionally add a **Description**.
  </Step>

  <Step>
    <h3 id="step-configure">
      Configure permissions and save
    </h3>

    Set permissions for the role, then click **Create Role**.

    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8a08bda2/OwB6o9ddvLojEP8N/images/clickstack/rbac/add-role-modal.png?fit=max&auto=format&n=OwB6o9ddvLojEP8N&q=85&s=ee37f145cad7dd0a56c810279b342ff2" alt="Add Role modal" size="md" width="1244" height="1638" data-path="images/clickstack/rbac/add-role-modal.png" />
  </Step>
</Steps>

Custom roles appear alongside system roles in the RBAC Roles section, with **Edit** and **Delete** controls.

<h2 id="role-permissions">
  Role permissions
</h2>

<h3 id="resource-permissions">
  Resource permissions
</h3>

Each role grants an access level per resource type. The three levels are:

| Access level  | What it allows                                                               |
| ------------- | ---------------------------------------------------------------------------- |
| **No Access** | The resource type is hidden from the role entirely.                          |
| **Read**      | View the resource and its configuration, but not create, edit, or delete it. |
| **Manage**    | Full control — create, edit, and delete resources of that type.              |

The resource types you can control are:

* **[Dashboards](/clickstack/features/dashboards/overview)** — saved dashboard layouts and charts.
* **[Saved searches](/clickstack/features/search)** — persisted log/trace/event queries.
* **Sources** — ingestion source configurations.
* **[Alerts](/clickstack/features/alerts)** — alert rules and their notification settings.
* **Webhooks** — outbound notification destinations (such as Slack, PagerDuty, and generic HTTP endpoints) that [alerts](/clickstack/features/alerts) deliver to. This doesn't refer to the ClickStack API.
* **Notebooks** — collaborative investigation notebooks.

<h3 id="administrative-permissions">
  Administrative permissions
</h3>

In addition to resource permissions, each role includes two administrative settings:

* **Users** (No Access · Limited Access) — controls whether the role can view team members and their roles. Only Admins can invite, remove, or update users.
* **Team** (Read · Manage) — controls whether the role can view or modify team-level settings such as security policies and RBAC configuration.

<h3 id="fine-grained-access-rules">
  Fine-grained access rules
</h3>

Dashboards, Saved Searches, Sources, and Notebooks support fine-grained controls that restrict access to individual resources within a category. Use these when you need to limit a role to specific resources rather than granting blanket access to the entire resource type.

<h4 id="access-control-modes">
  Default access vs. fine-grained controls
</h4>

Each resource type has an **Access Control Mode**:

* **Default Access** — applies a single access level (No Access, Read, or Manage) to all resources of that type.
* **Fine-Grained Controls** — lets you define access rules that match specific resources by condition. Resources that don't match any rule default to no access.

To switch modes, click the chevron to expand a resource type in the role editor, then toggle the **Access Control Mode**.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8a08bda2/OwB6o9ddvLojEP8N/images/clickstack/rbac/default-vs-fine-grained.png?fit=max&auto=format&n=OwB6o9ddvLojEP8N&q=85&s=96c73f0ab8f1f0026684032eb341414a" alt="Default Access vs Fine-Grained Controls modes in the role editor" size="md" width="1248" height="702" data-path="images/clickstack/rbac/default-vs-fine-grained.png" />

<h4 id="configuring-access-rules">
  Configuring access rules
</h4>

Each access rule consists of a **condition** and an **access level**. Conditions match resources by their properties:

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8a08bda2/OwB6o9ddvLojEP8N/images/clickstack/rbac/condition-tip.png?fit=max&auto=format&n=OwB6o9ddvLojEP8N&q=85&s=91d7d9011e003b43a3e3cca55fad3eec" alt="Condition tooltip: match resources by Name or Tag (shown by the title) or by ID (found in the URL)" size="md" width="1348" height="668" data-path="images/clickstack/rbac/condition-tip.png" />

| Condition field | Operators        | What it matches                                                                                                                                             | Example                                                                            |
| --------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| **Name**        | `is`, `contains` | The display name of the resource — for example, the dashboard title.                                                                                        | Name contains `production` — matches any dashboard with "production" in its title. |
| **Tag**         | `is`, `contains` | Tags assigned to the resource via the tag panel in the top-right corner of the resource view. Available for Dashboards, Saved Searches, and Notebooks only. | Tag is `critical` — matches resources tagged "critical."                           |
| **ID**          | `is`, `contains` | The resource identifier, found in the URL bar when you open the resource.                                                                                   | ID is `abc123` — matches a single specific resource.                               |

The following screenshot shows both the dashboard ID highlighted in the URL bar and a "TESTING" tag visible in the tag panel (top-right).

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8a08bda2/OwB6o9ddvLojEP8N/images/clickstack/rbac/dashboard-id-and-tag-example.png?fit=max&auto=format&n=OwB6o9ddvLojEP8N&q=85&s=5c3213bfcde7e61e731f32564ce3ffe0" alt="Dashboard showing the resource ID in the URL bar and a tag in the top-right corner" size="lg" width="3836" height="1404" data-path="images/clickstack/rbac/dashboard-id-and-tag-example.png" />

You can add multiple rules per resource type. Each rule is checked independently using OR logic — a resource is accessible if it matches **any** rule. Resources that don't match any rule aren't accessible.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8a08bda2/OwB6o9ddvLojEP8N/images/clickstack/rbac/access-rules-tip.png?fit=max&auto=format&n=OwB6o9ddvLojEP8N&q=85&s=e178faf385ec6dbba8b10f857c088169" alt="Access rules with OR logic tooltip" size="md" width="1348" height="668" data-path="images/clickstack/rbac/access-rules-tip.png" />

**Example**: To give a role read-only access to testing dashboards, expand Dashboards, switch to Fine-Grained Controls, and add two rules:

* **Name** `contains` `testing` with access level **Read**
* **Tag** `is` `testing` with access level **Read**

A dashboard that matches either rule is accessible.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8a08bda2/OwB6o9ddvLojEP8N/images/clickstack/rbac/dashboard-fine-grained-example.png?fit=max&auto=format&n=OwB6o9ddvLojEP8N&q=85&s=a0788894e979af5f97a99610be2ebfa3" alt="Two fine-grained access rules joined by OR: Name contains testing with Read access, and Tag is testing with Read access" size="md" width="1154" height="1232" data-path="images/clickstack/rbac/dashboard-fine-grained-example.png" />

<h2 id="security-policies">
  Security policies
</h2>

The **Security Policies** section in **Team Settings** provides additional controls.

**Default New User Role** sets the role automatically assigned to new users who join the team.

**Generative AI** lets you enable or disable LLM-powered features (such as natural language query generation) powered by Anthropic or Amazon Bedrock. When disabled, no data is sent to AI providers.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8a08bda2/OwB6o9ddvLojEP8N/images/clickstack/rbac/security-policies.png?fit=max&auto=format&n=OwB6o9ddvLojEP8N&q=85&s=6c14dc0276ada0aab0dfe3eaa0624f3b" alt="Security policies" size="lg" width="1892" height="412" data-path="images/clickstack/rbac/security-policies.png" />
