Skip to main content
Version: 1.1.0

Access Control

Overview

Apache Gravitino provides unified access control across multiple data sources, enabling you to manage permissions from a single interface regardless of whether your data resides in databases, message queues, or object storage systems.

The Challenge

Managing access control across heterogeneous data sources presents significant challenges:

  • Each data source has its own access control system with unique permissions models
  • Querying multiple data sources simultaneously requires managing multiple authorization systems
  • Data governance practitioners must ensure compliance across diverse systems

The Solution

Gravitino addresses these challenges by implementing a universal privilege model that:

  • Unifies access control: Manage all data source permissions through a single interface
  • Supports multiple engines: Works seamlessly with Spark, Trino, Flink, and Python clients
  • Simplifies governance: Enforce consistent access policies across all data sources
  • Reduces complexity: Eliminate the need to manage individual access control systems

Gravitino Privilege Model

Gravitino provides a unified authorization model that works across all connected data sources while respecting each source's unique characteristics.

Architecture:

When users or data engines access data through Gravitino, the privilege model:

  • Evaluates permissions at the Gravitino layer first
  • Translates Gravitino privileges to data source-specific permissions when needed
  • Maintains consistency across different data sources while preventing permission conflicts

Access Control Models:

Gravitino adopts two complementary access control models:

  • Role-Based Access Control (RBAC): Access privileges are assigned to roles, which are in turn assigned to users or groups
  • Discretionary Access Control (DAC): Each metadata object has an owner who can grant access to that object
info

Gravitino only supports authorization for securable objects, when Gravitino supports to pass the privileges to underlying authorization plugin. Gravitino doesn't support metadata authentication. It means that Gravitino won't check the privileges when Gravitino receives the requests.

Core Concepts

Authorization

Gravitino provides two types of authorization mechanisms:

Built-in Authorization

Gravitino includes built-in metadata authorization that you can enable with the following configuration:

gravitino.authorization.enable = true

To disable built-in authorization and pass through all requests without authorization checks:

gravitino.authorization.impl = org.apache.gravitino.server.authorization.PassThroughAuthorizer
info

Prerequisites for Built-in Authorization:

  • Authorization must be enabled
  • Users must be granted appropriate privileges
  • See API Required Conditions for privilege requirements for each REST API

Authorization Pushdown

In addition to built-in authorization, Gravitino can push down authorization to underlying data sources. This allows integration with:

  • Data source native access control (e.g., MySQL privileges)
  • Enterprise authorization systems (e.g., Apache Ranger)

The pushdown mechanism translates Gravitino's authorization model to data source-specific permissions while maintaining consistency.

For more information, see Authorization Pushdown.

Authentication

Gravitino uses a combined approach for access control:

  • Ownership: Controls management operations (create, drop, alter) on securable objects
  • Roles: Controls access to securable objects (read, write, use)

When a user performs an operation on a resource, Gravitino evaluates both ownership and role-based permissions. If a user has multiple roles, Gravitino evaluates all of them to determine the final permission set.

Role

A role is a named collection of privileges on securable objects. Roles simplify access management by allowing you to:

  • Group privileges: Bundle related permissions together
  • Assign to multiple users: Grant the same set of permissions to multiple users or groups
  • Quick onboarding: New users can start working immediately by receiving pre-configured roles

Ownership of Roles:

  • The creator of a role is automatically the owner
  • Owners have full control over the role, including the ability to drop it
  • Only the owner can modify the role's permissions

Privilege

Privilege is a specific operation method for securable object, if you need to control fine-grained privileges on a securable object in the system, then you need to design many different Privileges, however, too many Privileges will cause too complicated settings in the authorization.

If you only need to carry out coarse-grained privilege control on the securable object in the system, then you only need to design a small number of Privileges, but it will result in too weak control ability when the authentication. Therefore, the design of Privilege is an important trade-off in the access control system. We know that Privilege is generally divided into two types, one is the management category of Privilege, such as the CREATE, DELETE resource privilege, and the other is the operation category of Privilege, such as the READ and WRITE resource privilege.

In most organizations, the number of data managers is much smaller than the number of data users. Because it is the data users who need fine-grained privilege control, we must provide more Privileges related to usage and more tightly gatekeeper the administrative Privileges. To enforce this, we’ll introduce the concept of Ownership as a complete replacement for the administrative category of Privilege.

Ownership

Every securable object in Gravitino has an owner - the user with administrative control over that object.

Key Characteristics:

  • Automatic assignment: The creator of an object automatically becomes its owner
  • Administrative privileges: Owners have implicit management privileges (e.g., drop, alter)
  • Exclusive control: Only the owner can fully manage the object
info

Group ownership is not currently supported. Only user ownership is available.

Supported Objects:

The following metadata objects support ownership:

Metadata Object Type
Metalake
Catalog
Schema
Table
Topic
Fileset
Role
Model
Tag
JobTemplate
Job

User

A user represents an individual identity in Gravitino. Users can be:

  • Granted one or more roles
  • Given different operating privileges based on their assigned roles
  • Made owners of securable objects

Group

A group is a collection of users that simplifies permission management by allowing you to:

  • Grant permissions to multiple users at once
  • Manage access control for teams or departments
  • Assign roles that all group members will inherit

All users in a group inherit the roles and privileges granted to that group.

info

Groups can be granted roles and privileges, but they cannot be owners of securable objects. Only users can be owners.

Metadata Objects

Metadata objects are entities managed by Gravitino, such as catalogs, schemas, tables, filesets, topics, roles, and metalakes.

Naming Convention:

  • Each metadata object has a type and a name
  • Names use dot notation to represent hierarchy

Examples:

  • METALAKE: "metalake1"
  • CATALOG: "catalog1" (under a metalake)
  • SCHEMA: "catalog1.schema1" (under a catalog)
  • TABLE: "catalog1.schema1.table1" (under a schema)

Securable Objects

A securable object is any metadata object to which access can be granted. The default policy is deny-by-default: unless explicitly granted, access is denied.

Hierarchy:

Securable objects exist in a hierarchical container structure:

Metalake (top level)
└── Catalog (represents a data source)
└── Schema
├── Table
├── Topic
└── Fileset

object_image

Relationships:

The following diagrams illustrate the relationships between users, groups, roles, and securable objects:

user_group_relationship_image concept_relationship_image

Role Types

Service Admin

Service administrators are responsible for creating metalakes. This role is typically assigned to system maintainers or operators who bootstrap the initial metadata organization.

Privileges:

  • Create metalakes

Ownership:

  • When a service admin creates a metalake, they automatically become the owner of that metalake
  • As the owner, they have full control over the metalake, including the ability to drop it
  • Ownership can be transferred to another user if needed

Limitations:

  • Cannot configure system-wide settings (handled through server configuration files)
  • Cannot manage service-level permissions
info

Service admins automatically become the owner of metalakes they create. However, ownership can be changed by setting a new owner for the metalake.

Custom Roles

You can create custom roles tailored to your business needs using the API or client libraries. Custom roles allow you to:

  • Define specific permission sets
  • Align access control with your organization's structure
  • Implement least-privilege access policies

Privilege Types

Gravitino provides a comprehensive set of privileges organized by the type of operation and securable object. The following sections detail all available privileges.

User privileges

NameSupports Securable ObjectOperation
MANAGE_USERSMetalakeAdd or remove users

Group privileges

NameSupports Securable ObjectOperation
MANAGE_GROUPSMetalakeAdd or remove groups

Role privileges

NameSupports Securable ObjectOperation
CREATE_ROLEMetalakeCreate a role

Permission privileges

NameSupports Securable ObjectOperation
MANAGE_GRANTSMetalakeManages roles granted to or revoked from the user or group, and privilege granted to or revoked from the role

Catalog privileges

NameSupports Securable ObjectOperation
CREATE_CATALOGMetalakeCreate a catalog
USE_CATALOGMetalake, CatalogUse a catalog
info

USE_CATALOG is needed for a user to interact with any object within the catalog.

For example, to select data from a table, users need to have the SELECT_TABLE privilege on that table and USE_CATALOG privileges on its parent catalog as well as USE_SCHEMA privileges on its parent schema.

Schema privileges

NameSupports Securable ObjectOperation
CREATE_SCHEMAMetalake, CatalogCreate a schema
USE_SCHEMAMetalake, Catalog, SchemaUse a schema
info

USE_SCHEMAis needed for a user to interact with any object within the schema.

For example, to select data from a table, users need to have the SELECT_TABLE privilege on that table and USE_SCHEMA privileges on its parent schema.

Table privileges

NameSupports Securable ObjectOperation
CREATE_TABLEMetalake, Catalog, SchemaCreate a table
MODIFY_TABLEMetalake, Catalog, Schema, TableSelect data from a data, write data to a table or modify the table schema
SELECT_TABLEMetalake, Catalog, Schema, TableSelect data from a table

DENY MODIFY_TABLE won't deny the SELECT_TABLE operation if the user has the privilege to ALLOW SELECT_TABLE on the table. DENY SELECT_TABLE won‘t deny the MODIFY_TABLE operation if the user has the privilege ALLOW MODIFY_TABLE on the table.

Topic privileges

NameSupports Securable ObjectOperation
CREATE_TOPICMetalake, Catalog, SchemaCreate a topic
PRODUCE_TOPICMetalake, Catalog, Schema, TopicConsume and produce a topic (including alter a topic)
CONSUME_TOPICMetalake, Catalog, Schema, TopicConsume a topic

DENY PRODUCE_TOPIC won't deny the COMSUME_TOPIC operation if the user has the privilege to ALLOW CONSUME_TOPIC on the topic. DENY CONSUME_TOPIC won‘t deny the PRODUCE_TOPIC operation if the user has the privilege ALLOW PRODUCE_TOPIC on the topic.

Fileset privileges

NameSupports Securable ObjectOperation
CREATE_FILESETMetalake, Catalog, SchemaCreate a fileset
WRITE_FILESETMetalake, Catalog, Schema, FilesetRead and write a fileset (including alter a fileset)
READ_FILESETMetalake, Catalog, Schema, FilesetRead a fileset

DENY READ_FILESET won't deny the WRITE_FILESET operation if the user has the privilege to ALLOW WRITE_FILESET on the fileset. DENY WRITE_FILESET won‘t deny the READ_FILESET operation if the user has the privilege ALLOW READ_FILESET on the fileset.

Model privileges

Deprecated Privileges

The privileges CREATE_MODEL and CREATE_MODEL_VERSION are deprecated and will be removed in a future release. Please use REGISTER_MODEL and LINK_MODEL_VERSION instead. The deprecated privileges still work for backward compatibility.

NameSupports Securable ObjectOperation
REGISTER_MODELMetalake, Catalog, SchemaRegister a model
LINK_MODEL_VERSIONMetalake, Catalog, Schema, ModelLink a model version
USE_MODELMetalake, Catalog, Schema, ModelView the metadata of the model and download all the model versions
CREATE_MODELMetalake, Catalog, SchemaRegister a model, this is deprecated. Please use REGISTER_MODEL instead.
CREATE_MODEL_VERSIONMetalake, Catalog, Schema, ModelLink a model version, this is deprecated. Please use LINK_MODEL_VERSION instead.

Tag privileges

NameSupports Securable ObjectOperation
CREATE_TAGMetalakeCreate a tag
APPLY_TAGMetalake, TagAssociate tags with metadata objects.

Policy privileges

NameSupports Securable ObjectOperation
CREATE_POLICYMetalakeCreate a policy
APPLY_POLICYMetalake, PolicyAssociate policies with metadata objects.

Job template privileges

NameSupports Securable ObjectOperation
REGISTER_JOB_TEMPLATEMetalakeRegister a job template
USE_JOB_TEMPLATEMetalake, JobTemplateUse a job template when running the job

Job privileges

NameSupports Securable ObjectOperation
RUN_JOBMetalakeRun a job

Privilege Inheritance

Gravitino implements hierarchical privilege inheritance, where privileges granted at higher levels automatically apply to all objects at lower levels.

How It Works:

  • Granting a privilege on a metalake applies it to all catalogs, schemas, and objects within that metalake
  • Granting a privilege on a catalog applies it to all schemas and objects within that catalog
  • Granting a privilege on a schema applies it to all tables, topics, and filesets within that schema

Example:

If you grant a user SELECT_TABLE privilege on a catalog:

  • The user can read all tables in that catalog
  • This includes tables in all schemas within the catalog
  • The privilege applies to both existing and future tables

This inheritance model simplifies permission management for large datasets while maintaining fine-grained control when needed.

Privilege Conditions

Each privilege can have one of two conditions:

  • ALLOW: Grants permission to perform the operation
  • DENY: Explicitly denies permission to perform the operation

Priority Rules

DENY takes precedence over ALLOW:

  • If a user has both ALLOW and DENY for the same privilege, the operation is denied
  • This applies regardless of whether the conditions come from different roles

Inheritance and Conditions

Privilege conditions do not override parent object conditions. Both parent and child conditions are evaluated:

Example 1: Parent ALLOW, Child DENY

  • Metalake: USE_CATALOG → ALLOW
  • Catalog: USE_CATALOG → DENY
  • Result: User cannot use the catalog (DENY wins)

Example 2: Parent DENY, Child ALLOW

  • Metalake: USE_CATALOG → DENY
  • Catalog: USE_CATALOG → ALLOW
  • Result: User cannot use the catalog (DENY wins)

privilege_image

This model ensures that denials cannot be circumvented by grants at lower levels in the hierarchy.

Configuration

To enable access control in Gravitino, configure the following settings in your server configuration file:

Configuration ItemDescriptionDefault ValueRequiredSince Version
gravitino.authorization.enableEnable or disable authorization in GravitinofalseNo0.5.0
gravitino.authorization.serviceAdminsComma-separated list of service administrator usernames(none)Yes (when authorization is enabled)0.5.0

Important Notes

info

Authorization Requirements:

  1. Add users first: Users must be added to a metalake before creating metadata objects
  2. Default user: If no user is specified, operations use the anonymous user
  3. Automatic membership: When creating a metalake with authorization enabled, the creator is automatically added to that metalake

Example Configuration:

# Enable authorization
gravitino.authorization.enable = true

# Define service administrators
gravitino.authorization.serviceAdmins = admin1,admin2

Operations

The following sections demonstrate how to perform common access control operations using both the REST API (Shell) and Java client.

User Operations

Add a user

Add a user to your metalake before using authorization features.

curl -X POST -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"name": "user1"
}' http://localhost:8090/api/metalakes/test/users

List users

List all users in a metalake. Use details=true to get full user objects instead of just names.

curl -X GET -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/users/

curl -X GET -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/users/?details=true

Get a user

You can get a user by its name.

curl -X GET -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/users/user1

Remove a user

You can remove a user by its name.

curl -X DELETE -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/users/user1

Group Operation

Add a Group

You should add the group to your metalake before you use the authorization.

curl -X POST -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"name": "group1"
}' http://localhost:8090/api/metalakes/test/groups

List groups

You can list the created groups in a metalake. Returns the list of groups if details is true, otherwise returns the list of group name.

curl -X GET -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/groups/

curl -X GET -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/groups/?details=true

Get a group

You can get a group by its name.

curl -X GET -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/groups/group1

Remove a group

You can remove a group by its name.

curl -X DELETE -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/groups/group1

Role Operation

Create a role

You can create a role by given properties.

curl -X POST -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"name": "role1",
"properties": {"k1": "v1"},
"securableObjects": [
{
"fullName": "catalog1.schema1.table1",
"type": "TABLE",
"privileges": [
{
"name": "SELECT_TABLE",
"condition": "ALLOW"
}
]
}
]
}' http://localhost:8090/api/metalakes/test/roles

List roles

You can list the created roles in a metalake.

curl -X GET -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/roles/

List roles for the metadata object

You can list the binding roles for a metadata object in a metalake.

The request path for REST API is /api/metalakes/{metalake}/objects/{metadataObjectType}/{metadataObjectName}/roles.

curl -X GET -H "Accept: application/vnd.gravitino.v1+json" \
http://localhost:8090/api/metalakes/test/objects/catalog/catalog1/roles

curl -X GET -H "Accept: application/vnd.gravitino.v1+json" \
http://localhost:8090/api/metalakes/test/objects/schema/catalog1.schema1/roles

Get a role

You can get a role by its name.

curl -X GET -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/roles/role1

Delete a role

You can delete a role by its name.

curl -X DELETE -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/roles/role1

Permission Operation

Grant privileges to a role

You can grant specific privileges to a role. The request path for REST API is /api/metalakes/{metalake}/permissions/roles/{role}/{metadataObjectType}/{metadataObjectName}/grant.

curl -X PUT -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"privileges": [
{
"name": "SELECT_TABLE",
"condition": "ALLOW"
}]
}' http://localhost:8090/api/metalakes/test/permissions/roles/role1/schema/catalog1.schema1/grant

curl -X PUT -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"privileges": [
{
"name": "SELECT_TABLE",
"condition": "ALLOW"
}]
}' http://localhost:8090/api/metalakes/test/permissions/roles/role1/table/catalog1.schema1.table1/grant

Revoke privileges from a role

You can revoke specific privileges from a role. The request path for REST API is /api/metalakes/{metalake}/permissions/roles/{role}/{metadataObjectType}/{metadataObjectName}/revoke.

curl -X PUT -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"privileges": [
{
"name": "SELECT_TABLE",
"condition": "ALLOW"
}]
}' http://localhost:8090/api/metalakes/test/permissions/roles/role1/schema/catalog1.schema1/revoke

curl -X PUT -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"privileges": [
{
"name": "SELECT_TABLE",
"condition": "ALLOW"
}]
}' http://localhost:8090/api/metalakes/test/permissions/roles/role1/table/catalog1.schema1.table1/revoke

Grant roles to a user

You can grant specific roles to a user.

curl -X PUT -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"roleNames": ["role1"]
}' http://localhost:8090/api/metalakes/test/permissions/users/user1/grant

Revoke roles from a user

You can revoke specific roles from a user.

curl -X PUT -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"roleNames": ["role1"]
}' http://localhost:8090/api/metalakes/test/permissions/users/user1/revoke

Grant roles to a group

You can grant specific roles to a group.

curl -X PUT -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"roleNames": ["role1"]
}' http://localhost:8090/api/metalakes/test/permissions/groups/group1/grant

Revoke roles from a group

You can revoke specific roles from a group.

curl -X PUT -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"roleNames": ["role1"]
}' http://localhost:8090/api/metalakes/test/permissions/groups/group1/revoke

Ownership Operation

get the owner

You can get the owner of a metadata object.

curl -X GET -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" http://localhost:8090/api/metalakes/test/owners/table/catalog1.schema1.table1

set the owner

You can set the owner of a metadata object.

curl -X PUT -H "Accept: application/vnd.gravitino.v1+json" \
-H "Content-Type: application/json" -d '{
"name": "user1",
"type": "USER"
}' http://localhost:8090/api/metalakes/test/owners/table/catalog1.schema1.table1

Example

You can follow the steps to achieve the authorization of Gravitino.

concept_workflow_image

  1. Service admin configures the Gravitino server to enable authorization and creates a metalake.

  2. Service admin adds the user Manager to the metalake.

  3. Service admin sets the Manager as the owner of the metalake.

  4. Manager adds the user Staff.

  5. Manager creates a specific role catalog_manager with CREATE_CATALOG privilege.

  6. Manager grants the role catalog_manager to the user Staff.

  7. Staff creates a Hive type catalog.

  8. Staff creates a schema hive_db for Hive catalog.

  9. Staff creates a table hive_table under the schema hive_db.

  10. Staff creates a MySQL type catalog.

  11. Staff creates a schema mysql_db for MySQL catalog.

  12. Staff creates a table mysql_table under the schema mysql_db.

  13. Staff can use Gravitino connector to query the tables from different catalogs.

API required conditions

The following table lists the required privileges for each API.

APIRequired Conditions(s)
create metalakeThe user must be the service admins, configured in the server configurations.
load metalakeThe user is in the metalake
alter metalakeThe owner of the metalake
drop metalakeThe owner of the metalake
create catalogCREATE_CATALOG on the metalake or the owner of the metalake
alter catalogThe owner of the catalog, metalake
drop catalogThe owner of the catalog, metalake
list catalogThe owner of the metalake can see all the catalogs, others can see the catalogs which they can load
load catalogThe one of owners of the metalake, catalog or have USE_CATALOG on the metalake,catalog
create schemaCREATE_SCHEMA and USE_CATALOG on the metalake, catalog or the owner of the metalake, catalog.
alter schemaFirst, you should have the privilege to load the catalog. Then, you are one of the owners of the schema, catalog, metalake
drop schemaFirst, you should have the privilege to load the catalog. Then, you are one of the owners of the schema, catalog, metalake
list schemaFirst, you should have the privilege to load the catalog. Then, the owner of the metalake, catalog can see all the schemas, others can see the schemas which they can load.
load schemaFirst, you should have the privilege to load the catalog. Then, you are the owner of the metalake, catalog, schema or have USE_SCHEMA on the metalake, catalog, schema.
create tableFirst, you should have the privilege to load the catalog and the schema. CREATE_TABLE on the metalake, catalog, schema or the owner of the metalake, catalog, schema
alter tableFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the table, schema,catalog, metalake or have MODIFY_TABLE on the table, schema, catalog, metalake
update table statisticsFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the table, schema,catalog, metalake or have MODIFY_TABLE on the table, schema, catalog, metalake
drop table statisticsFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the table, schema,catalog, metalake or have MODIFY_TABLE on the table, schema, catalog, metalake
update table partition statisticsFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the table, schema,catalog, metalake or have MODIFY_TABLE on the table, schema, catalog, metalake
drop table partition statisticsFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the table, schema,catalog, metalake or have MODIFY_TABLE on the table, schema, catalog, metalake
drop tableFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the table, schema, catalog, metalake
list tableFirst, you should have the privilege to load the catalog and the schema. Then, the owner of the schema, catalog, metalake can see all the tables, others can see the tables which they can load
load tableFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the table, schema, metalake, catalog or have either SELECT_TABLE or MODIFY_TABLE on the table, schema, catalog, metalake
list table statisticsFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the table, schema, metalake, catalog or have either SELECT_TABLE or MODIFY_TABLE on the table, schema, catalog, metalake
list table partition statisticsFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the table, schema, metalake, catalog or have either SELECT_TABLE or MODIFY_TABLE on the table, schema, catalog, metalake
create topicFirst, you should have the privilege to load the catalog and the schema. Then, you have CREATE_TOPIC on the metalake, catalog, schema or are the owner of the metalake, catalog, schema
alter topicFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the topic, schema,catalog, metalake or have PRODUCE_TOPIC on the topic, schema, catalog, metalake
drop topicFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the topic, schema, catalog, metalake
list topicFirst, you should have the privilege to load the catalog and the schema. Then, the owner of the schema, catalog, metalake can see all the topics, others can see the topics which they can load
load topicFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the topic, schema, metalake, catalog or have either CONSUME_TOPIC or PRODUCE_TOPIC on the topic, schema, catalog, metalake
create filesetFirst, you should have the privilege to load the catalog and the schema. Then, you haveCREATE_FILESET on the metalake, catalog, schema or are the owner of the metalake, catalog, schema
alter filesetFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the fileset, schema,catalog, metalake or WRITE_FILESET on the fileset, schema, catalog, metalake
drop filesetFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the fileset, schema, catalog, metalake
list filesetFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the schema, catalog, metalake can see all the filesets, others can see the filesets which they can load
load filesetFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the fileset, schema, metalake, catalog or have either READ_FILESET or WRITE_FILESET on the fileset, schema, catalog, metalake
list filesetFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the fileset, schema, metalake, catalog or have either READ_FILESET or WRITE_FILESET on the fileset, schema, catalog, metalake
register modelFirst, you should have the privilege to load the catalog and the schema. Then, you have REGISTER_MODEL on the metalake, catalog, schema or are the owner of the metalake, catalog, schema
link model versionFirst, you should have the privilege to load the catalog, the schema and the model. Then, you have LINK_MODEL_VERSION on the metalake, catalog, schema, model or are the owner of the metalake, catalog, schema, model
alter modelFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the model, schema, catalog, metalake
drop modelFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the model, schema, catalog, metalake
list modelFirst, you should have the privilege to load the catalog and the schema. Then the owner of the schema, catalog, metalake can see all the models, others can see the models which they can load
load modelFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the model, schema, metalake, catalog or have `USE_MODEL on the model, schema, catalog, metalake
list model versionFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the model, schema, catalog, metalake or have `USE_MODEL on the model, schema, catalog, metalake
load model versionFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the model, schema, metalake, catalog or have `USE_MODEL on the model, schema, catalog, metalake
load model version by aliasFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the model, schema, metalake, catalog or have `USE_MODEL on the model, schema, catalog, metalake
delete model versionFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the model, schema, metalake, catalog.
alter model versionFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the model, schema, metalake, catalog.
delete model version aliasFirst, you should have the privilege to load the catalog and the schema. Then, you are one of the owners of the model, schema, metalake, catalog.
add userMANAGE_USERS on the metalake or the owner of the metalake
remove userMANAGE_USERS on the metalake or the owner of the metalake
get userMANAGE_USERS on the metalake or the owner of the metalake or himself
list usersMANAGE_USERS on the metalake or the owner of the metalake can see all the users, others can see himself
add groupMANAGE_GROUPS on the metalake or the owner of the metalake
remove groupMANAGE_GROUPS on the metalake or the owner of the metalake
get groupMANAGE_GROUPS on the metalake or the owner of the metalake or his groups
list groupsMANAGE_GROUPS on the metalake or the owner of the metalake can see all the groups, others can see his group
create roleCREATE_ROLE on the metalake or the owner of the metalake
delete roleThe owner of the metalake or the role
get roleMANAGE_GRANTS on the metalake or the owner of the metalake or the role. others can see his granted or owned roles.
list rolesMANAGE_GRANTS on the metalake or the owner of the metalake can see all the roles. Others can see his granted roles or owned roles.
grant roleMANAGE_GRANTS on the metalake
revoke roleMANAGE_GRANTS on the metalake
grant privilegeMANAGE_GRANTS on the metalake or the owner of the securable object
revoke privilegeMANAGE_GRANTS on the metalake or the owner of the securable object
set ownerThe owner of the securable object
list tagsThe owner of the metalake can see all the tags, others can see the tags which they can load.
create tagCREATE_TAG on the metalake or the owner of the metalake.
get tagAPPLY_TAG on the metalake or tag, the owner of the metalake or the tag.
alter tagMust be the owner of the metalake or the tag.
delete tagMust be the owner of the metalake or the tag.
list objects for tagRequires both permission to get the tag and permission to load metadata objects.
list tags for objectPermission to both list tags Requires both permission to list tags and permission to load metadata objects. load metadata objects is required.
get tag for objectRequires both permission to get the tag and permission to load metadata objects.
associate object tagsRequires both APPLY_TAG permission and permission to load metadata objects.
list policies for objectThe owner of the metalake can see all the policies, others can see the policies which they can load.
create policyCREATE_POLICY on the metalake or the owner of the metalake.
get policyAPPLY_POLICY on the metalake or policy, the owner of the metalake or the policy.
alter policyMust be the owner of the metalake or the policy.
set policyMust be the owner of the metalake or the policy.
delete policyMust be the owner of the metalake or the policy.
list objects for policyRequires both permission to get the policy and permission to load metadata objects.
associate-object-policiesRequires both APPLY_POLICY permission and permission to load metadata objects.
list policies for objectRequires both permission to get the policy and permission to load metadata objects.
get policy for objectRequires both permission to get the policy and permission to load metadata objects.
list job templatesThe owner of the metalake can see all the job templates, others can see the job templates which they can get.
register a job templateREGISTER_JOB_TEMPLATE on the metalake or the owner of the metalake.
get a job templateUSE_JOB_TEMPLATE on the metalake or job template, the owner of the metalake or the job template.
delete a job templateThe owner of the metalake or the job template.
alter a job templateThe owner of the metalake or the job template.
list jobsThe owner of the metalake can see all the jobs, others can see the jobs which they can get.
run a jobThe owner of the metalake , or have both RUN_JOB on the metalake and USE_JOB_TEMPLATE on the job template
get a jobThe owner of the metalake or the job.
cancel a jobThe owner of the metalake or the job.
get credentialIf you can load the metadata object, you can get its credential.