Role-based access control

This article describes role-based access control.

Azure Data Explorer uses a role-based access control (RBAC) model in which principals get access to resources based on their assigned roles. Roles are defined for a specific cluster, database, table, external table, materialized view, or function. When defined for a cluster, the role applies to all databases in the cluster. When defined for a database, the role applies to all entities in the database.

Azure Resource Manager (ARM) roles, such as subscription owner or cluster owner, grant access permissions for resource administration. For data administration, you need the roles described in this document.

Real-Time Intelligence in Fabric uses a hybrid role-based access control (RBAC) model in which principals get access to resources based on their assigned roles granted from one or both of two sources: Fabric, and Kusto management commands. The user will have the union of the roles granted from both sources.

Within Fabric, roles can be assigned or inherited by assigning a role in a workspace, or by sharing a specific item based on the item permission model.

Fabric roles

RolePermissions granted on items
Workspace AdminAdmin RBAC role on all items in the workspace.
Workspace MemberAdmin RBAC role on all items in the workspace.
Workspace ContributorAdmin RBAC role on all items in the workspace.
Workspace ViewerViewer RBAC role on all items in the workspace.
Item EditorAdmin RBAC role on the item.
Item ViewerViewer RBAC role on the item.

Roles can further be defined on the data plane for a specific database, table, external table, materialized view, or function, by using management commands. In both cases, roles applied at a higher level (Workspace, Eventhouse) are inherited by lower levels (Database, Table).

Roles and permissions

The following table outlines the roles and permissions available at each scope.

The Permissions column displays the access granted to each role.

The Dependencies column lists the minimum roles required to obtain the role in that row. For example, to become a Table Admin, you must first have a role like Database User or a role that includes the permissions of Database User, such as Database Admin or AllDatabasesAdmin. When multiple roles are listed in the Dependencies column, only one of them is needed to obtain the role.

The How the role is obtained column offers ways that the role can be granted or inherited.

The Manage column offers ways to add or remove role principals.

ScopeRolePermissionsDependenciesManage
ClusterAllDatabasesAdminFull permission to all databases in the cluster. May show and alter certain cluster-level policies. Includes all permissions.Azure portal
ClusterAllDatabasesViewerRead all data and metadata of any database in the cluster.Azure portal
ClusterAllDatabasesMonitorExecute .show commands in the context of any database in the cluster.Azure portal
DatabaseAdminFull permission in the scope of a particular database. Includes all lower level permissions.Azure portal or management commands
DatabaseUserRead all data and metadata of the database. Create tables and functions, and become the admin for those tables and functions.Azure portal or management commands
DatabaseViewerRead all data and metadata, except for tables with the RestrictedViewAccess policy turned on.Azure portal or management commands
DatabaseUnrestrictedviewerRead all data and metadata, including in tables with the RestrictedViewAccess policy turned on.Database User or Database ViewerAzure portal or management commands
DatabaseIngestorIngest data to all tables in the database without access to query the data.Azure portal or management commands
DatabaseMonitorExecute .show commands in the context of the database and its child entities.Azure portal or management commands
TableAdminFull permission in the scope of a particular table.Database Usermanagement commands
TableIngestorIngest data to the table without access to query the data.Database User or Database Ingestormanagement commands
External TableAdminFull permission in the scope of a particular external table.Database User or Database Viewermanagement commands
Materialized viewAdminFull permission to alter the view, delete the view, and grant admin permissions to another principal.Database User or Table Adminmanagement commands
FunctionAdminFull permission to alter the function, delete the function, and grant admin permissions to another principal.Database User or Table Adminmanagement commands
GraphGraphAdminFull permission in the scope of a particular graph model.Database User
ScopeRolePermissionsHow the role is obtained
EventhouseAllDatabasesAdminFull permission to all databases in the Eventhouse. May show and alter certain Eventhouse-level policies. Includes all permissions.- Inherited as workspace admin, workspace member, or workspace contributor.

Can’t be assigned with management commands.
DatabaseAdminFull permission in the scope of a particular database. Includes all lower level permissions.- Inherited as workspace admin, workspace member, or workspace contributor
- Item shared with editing permissions.
- Assigned with management commands
DatabaseUserRead all data and metadata of the database. Create tables and functions, and become the admin for those tables and functions.- Assigned with management commands
DatabaseViewerRead all data and metadata, except for tables with the RestrictedViewAccess policy turned on.- Item shared with viewing permissions.
- Assigned with management commands
DatabaseUnrestrictedviewerRead all data and metadata, including in tables with the RestrictedViewAccess policy turned on.- Assigned with management commands. Dependent on having Database User or Database Viewer.
DatabaseIngestorIngest data to all tables in the database without access to query the data.- Assigned with management commands
DatabaseMonitorExecute .show commands in the context of the database and its child entities.- Assigned with management commands
TableAdminFull permission in the scope of a particular table.- Inherited as workspace admin, workspace member, or workspace contributor
- Parent item (KQL Database) shared with editing permissions.
- Assigned with management commands. Dependent on having Database User on the parent database.
TableIngestorIngest data to the table without access to query the data.- Assigned with management commands. Dependent on having Database User or Database Ingestor on the parent database.
External TableAdminFull permission in the scope of a particular external table.- Assigned with management commands. Dependent on having Database User or Database Viewer on the parent database.