Skip to main content

Permissions

Permissions can be enforced on resources and data in Onehouse with roles and privileges.

Onehouse Resources and Data Objects​

Permissions can be set on the following entities:

EntityDescriptionPermission TypeExamples
Onehouse ResourcesLogical Onehouse entities in your account or project.RolesAccount, Projects, Users, Groups, Service Principals, Jobs, Clusters, Table Services, Flows, Sources, and Catalogs
Data ObjectsYour data stored and/or managed by Onehouse.PrivilegesLakes, Databases, and Tables

What permissions are required to create entities?​

A user must meet the following prerequisites to create resources and objects in Onehouse:

EntityPrequisites for creation
AccountNo account exists for the email domain
ProjectAccount Admin role
GroupAccount Admin role
Service PrincipalAccount Admin role
UserProject Admin role
Flow
  1. Create Table privilege on target database
  2. Cluster User role on the Cluster
ClusterProject Admin role
Table ServiceData privileges on the table (see below)
JobCluster User role on the Cluster
CatalogN/A (anyone in project can create)
SourceN/A (anyone in project can create)
LakeProject Admin or Account Admin role, or Data Admin
DatabaseCreate Database privilege on the Lake, or Data Admin
TableCreate Table privilege on the Database, or Data Admin

Project membership vs. resource access​

Being a member of a project is not the same as having access to the resources inside it. When a project admin invites a user (or service principal) to a project, the user joins the project but sees no Flows, Jobs, Lakes, or Clusters until they are explicitly granted a role on each.

The typical sequence is:

  1. Project admin invites the user to the project (Settings → Users & Access).
  2. User joins — they are now a project member but no resources are visible.
  3. Project admin grants resource-level roles (e.g., Cluster User on a Cluster, data privileges on a Lake/Database/Table).
  4. User can now see and use the resources they have roles on.

If a newly invited user reports "I don't see anything in the project," they have completed step 2 but not step 3. The roles and privileges available for each resource type are described in the sections below.

Roles for Onehouse Resources​

Account​

The following roles can be granted on a Onehouse Account:

  • Member - Basic Account access. Members can be granted additional permissions on specific Projects and Onehouse Resources.
  • Reader - Includes all Member permissions, plus automatically granted read-only access:
    • Ability to view all Account-level resources (Users, Service Principals, Groups)
  • Admin - Full read/write access to the Account
AbilityMemberReaderAdmin
Modify account & billing settingsX
Create projectsX
Create groupsX
Create service principalsX
Configure SCIM identity syncX

Project​

The following roles can be granted on a Project:

  • Member - Basic project access. Members can be granted additional permissions on specific resources.
  • Reader - Includes all Member permissions, plus automatically granted read-only access:
    • Viewer role on all Onehouse Resources (Clusters, Sources, Flows, etc.) in the Project
    • DESCRIBE and SELECT privileges on all Data Objects (Lakes, Databases, Tables) and Onehouse Resources (Catalogs, Sources, etc.) in the Project
  • Admin - Full read/write access to the project and all its resources.
AbilityMemberReaderAdmin
View/Use/Edit/Manage entities with granted permissionsXXX
Open the projectXXX
View project integrationsXXX
View project usageXXX
Create SourcesXXX
Create CatalogsXXX
Create JobsX (with required permissions)X (with required permissions)X
Create Table ServicesX (with required permissions)X (with required permissions)X
Create FlowsX (with required permissions)X (with required permissions)X
Create usersX
Add users to the projectX
Edit user permissions in the projectX
Remove usersX
Connect a cloud accountX
Create ClustersX
Create LakesX
Create and edit project integrationsX
Create and delete API tokensX
Inherit all permissions for all entities in the projectX

Group​

The following roles can be granted on a Group:

  • Member
  • Manager
AbilityMemberManager
Create new groups
View metadata for groupXX
Assign roles and privileges to groupX
Remove roles and privileges from groupX
Edit group membersX
Edit group nameX
Delete groupX

Service Principal​

The following roles can be granted on a Service Principal:

  • User
  • Manager
AbilityUserManager
Create new service principals
Assign roles and privileges to service principalX
Remove roles and privileges from service principalX
Edit service principal membersX
Edit service principal nameX
Delete service principalX
Create API tokens for the service principalX

Cluster​

The following roles can be granted on a Cluster:

  • Viewer
  • User
  • Editor
  • Manager
AbilityViewerUserEditorManager
View Cluster definitionXXXX
Assign Flows / Jobs to ClusterXXX
View Cluster endpointXXX
Edit Cluster definitionXX
Modify permissionsX
Delete ClusterX

Source (coming soon)​

The following roles can be granted on a Source:

  • Viewer
  • User
  • Editor
  • Manager
AbilityViewerUserEditorManager
View source definitionXXXX
Use source in a FlowXXX
Edit source definitionXX
Modify permissionsX
Delete sourceX

Catalog (coming soon)​

The following roles can be granted on a Catalog:

  • Viewer
  • User
  • Editor
  • Manager
AbilityViewerUserEditorManager
View catalog definitionXXXX
Use catalog in a FlowXXX
Use catalog in a MetaSyncXXX
Edit catalog definitionXX
Modify permissionsX
Delete sourceX

Job​

The following roles can be granted on a Job:

  • Viewer
  • User
  • Editor
  • Manager
AbilityViewerUserEditorManager
View Job definitionXXXX
View Job run metadataXXXX
View Job run driver logs and Spark UIXXX
Trigger Job runXXX
Cancel Job runXXX
Edit Job definitionXX
Modify permissionsX
Delete JobX

Flow (coming soon)​

The following roles can be granted on a Flow:

  • Viewer
  • Editor
  • Manager
AbilityViewerEditorManager
View Flow definitionXXX
View driver logsXXX
Edit Flow definitionXX
Pause / Resume FlowXX
Clean & Restart FlowX
Delete FlowX
Modify permissionsX

Table Service​

Table Services do not have their own roles, and instead depend on the data privileges of the table itself. To create/edit/remove/pause/resume a Table Service, a user must:

  • Have User role on the table’s Services Cluster
  • Have the required data privileges on the table (see below)

To view the definition, metrics, and run history of a Table Service, a user must:

  • Have the DESCRIBE privilege on the table
Table ServiceCreate/Edit Requirement PrivilegesView Definition & History Privileges
CompactionALTERDESCRIBE
ClusteringALTERDESCRIBE
CleaningALTERDESCRIBE
MetaSyncSELECTDESCRIBE

Notification​

In-app notifications are scoped by resource access: users see and can dismiss notifications for the lakes they have access to, while project admins see all of them.

Notification emails are not routed per resource. They go to the project's admins — or, if a Notifications Email is configured, to that address instead. Granting a user access to a lake does not by itself subscribe them to that lake's notification emails.

Governance for Data Objects​

Data Privileges​

The following privileges can be granted on Lakes, Databases, and/or Tables with GRANT PRIVILEGE.

Data Privilege Limitation

Data privileges are currently not enforced on SQL, Spark, and Open Engines Clusters. Cluster-side enforcement is a separate opt-in, available on clusters that use the Onehouse Catalog — contact Onehouse support to have it enabled for your organization.

For now, data privileges may be used to manage data access for Flows and Table Services.

Each object type has its own list of legal privileges; granting one outside that list is rejected rather than silently stored.

PrivilegeGrantable OnWhat You Can Do
ALL_PRIVILEGESLake, Database, TableEvery privilege listed below for that object type
DESCRIBELake, Database, TableView object metadata only – no data access
ALTERLake, Database, TableAlter metadata (eg. schema) and change the table's Services Cluster or lake's Default Services Cluster
DROPLake, Database, TableDrop the object
CREATE_DATABASELakeCreate Databases in the Lake
CREATE_TABLEDatabaseCreate Tables in the Database
SELECTTableRead Table data
INSERTTableInsert/update data and create/restore savepoints
DELETETableDelete data

In SQL you write CREATE, which resolves to the child it creates: CREATE ON LAKE grants CREATE_DATABASE and CREATE ON DATABASE grants CREATE_TABLE. CREATE ON TABLE is rejected.

CREATE_DATABASE only applies to databases created through the Onehouse console or API, including the CREATE DATABASE command. CREATE DATABASE issued from Spark through the Onehouse catalog is rejected outright, regardless of privileges.

MANAGE is not grantable on a Lake, Database, or Table. Grant the specific privileges instead, or make the principal a Data Admin.

Data Privilege Propagation

Privileges do not propagate on their own from a Lake to its Databases, or from a Database to its Tables. To cover children, grant on the container explicitly:

  • ON ALL TABLES IN DATABASE '<lake>.<database>' — every table in that database
  • ON ALL DATABASES IN LAKE '<lake>' — every database in that lake

A cascading grant covers children current and future. These are the only two cascades: ON ALL TABLES IN LAKE is not supported.

Example: GRANT PRIVILEGE SELECT ON ALL TABLES IN DATABASE 'prod_lake.sales' TO GROUP 'analysts' lets analysts read every table in sales, including tables created later.

Revoking a single child of a cascading grant carves that child out as an exclusion and leaves the rest of the cascade intact; re-granting that child removes the exclusion. There is no DENY — revoking a privilege that was never granted writes nothing. See REVOKE PRIVILEGE for the full semantics.

Without a privilege​

  • Lakes and Tables you have no privilege on do not appear in lists.
  • Opening one directly (by link or API) fails with a permission error, e.g. Permission denied for DATA_LAKE with ids [<id>] for the user.

Creator privileges​

Whoever creates a Lake, Database, or Table through the Onehouse console or API is automatically granted ALL_PRIVILEGES on it, so they can perform every operation on what they create without a separate grant.

  • Creator privileges cover the object itself only. Creating a Lake does not grant anything on Databases later created in it by others, and likewise for Tables.

Data Admins​

A data admin is allowed on every Lake, Database, and Table in the organization, for every operation — no per-object privilege is consulted. Data adminship is org-wide, so it is not granted on a specific object.

  • Grant with GRANT DATA_ADMIN, remove with REVOKE DATA_ADMIN.
  • A data admin can be a user, group, or service principal. Adminship held through a group counts.
  • It covers Lakes, Databases, and Tables only — Clusters, Jobs, and other Onehouse resources are still governed by roles.
  • The role is self-governing: only an existing data admin can add or remove a data admin.
  • Once the governed model is enabled, being an account admin or project admin no longer by itself grants access to Lakes, Databases, and Tables — access comes from data adminship or an explicit privilege grant.
  • Onehouse adds your account admins and project admins, and groups holding either role, as data admins. This list is a one-time snapshot taken when Onehouse sets it up — admins added or removed afterwards are not reflected. Before enabling data governance, review the list and correct it with GRANT DATA_ADMIN / REVOKE DATA_ADMIN.
  • Organizations created after that start with only their creator as a data admin. Add anyone else with GRANT DATA_ADMIN.
  • Adminship held through a group stays current: a user added later to a data-admin group is a data admin.
  • If your data admin list is empty, contact Onehouse support — only a data admin can add another, so an empty list cannot be fixed from the console.

Data Roles​

A data role is a named collection of data privileges that can be managed as a single unit. Data roles are created and managed through Access Control Sync.

Today, data roles are used to import, transform, and sync privileges between external catalogs. When you import permissions from a catalog (such as AWS Glue, Databricks Unity Catalog, Snowflake, or Microsoft OneLake), they are stored as a data role in Onehouse. You can then grant or revoke privileges on the data role before syncing it out to your target catalogs.

Coming Soon

In the future, Onehouse will enforce data privileges through all engines (SQL, Spark, and Open Engines). You will be able to assign data roles directly to users, groups, and service principals -- making it easy to bulk-manage privileges and keep them in sync with your external catalogs.