Skip to main content
Version: 1.3.0

Trino Connector Authentication

Introduction

The Gravitino Trino connector supports authenticating to the Gravitino server using the same authentication mechanisms as the Gravitino Java client: Simple, Basic, OAuth2, and Kerberos. Authentication is configured through the Trino connector properties file using the gravitino.client.* prefix.

If gravitino.client.authType is not set, the connector operates in no-authentication mode and connects to the Gravitino server without any credentials.

Simple Authentication

Simple authentication uses a username to authenticate with the Gravitino server.

Configuration in etc/catalog/gravitino.properties:

connector.name=gravitino
gravitino.metalake=metalake
gravitino.uri=http://localhost:8090

# Simple authentication with username
gravitino.client.authType=simple
gravitino.user=admin

Configuration properties:

PropertyDescriptionDefault valueRequiredSince version
gravitino.client.authTypeAuthentication type: simple, basic, oauth2, or kerberos(none)No1.3.0
gravitino.userUsername for simple authentication(none)No (uses system user if not specified)1.3.0

Basic Authentication

Basic authentication uses HTTP Basic credentials against the Gravitino built-in IDP. The Gravitino server must have Basic authentication enabled. See How to authenticate for server-side setup.

Configuration in etc/catalog/gravitino.properties:

connector.name=gravitino
gravitino.metalake=metalake
gravitino.uri=http://localhost:8090

# Basic authentication with built-in IDP
gravitino.client.authType=basic
gravitino.client.basic.username=admin
gravitino.client.basic.password=YourSecureGravitinoPassword

Configuration properties:

PropertyDescriptionDefault valueRequiredSince version
gravitino.client.authTypeAuthentication type: simple, basic, oauth2, or kerberos(none)Yes (to enable Basic)1.3.0
gravitino.client.basic.usernameBuilt-in IDP username(none)Yes if authType is basic1.3.0
gravitino.client.basic.passwordBuilt-in IDP password(none)Yes if authType is basic1.3.0

OAuth2 Authentication

OAuth2 authentication uses OAuth 2.0 tokens to authenticate with the Gravitino server.

Configuration in etc/catalog/gravitino.properties:

connector.name=gravitino
gravitino.metalake=metalake
gravitino.uri=http://localhost:8090

# OAuth2 authentication
gravitino.client.authType=oauth2
gravitino.client.oauth2.serverUri=http://oauth-server:8080
gravitino.client.oauth2.credential=client_id:client_secret
gravitino.client.oauth2.path=oauth2/token
gravitino.client.oauth2.scope=gravitino

Configuration properties:

PropertyDescriptionDefault valueRequiredSince version
gravitino.client.authTypeAuthentication type: simple, basic, oauth2, or kerberos(none)Yes (to enable OAuth2)1.3.0
gravitino.client.oauth2.serverUriOAuth2 server URI(none)Yes if authType is oauth21.3.0
gravitino.client.oauth2.credentialOAuth2 credentials in format client_id:client_secret(none)Yes if authType is oauth21.3.0
gravitino.client.oauth2.pathOAuth2 token endpoint path(none)Yes if authType is oauth21.3.0
gravitino.client.oauth2.scopeOAuth2 scope(none)Yes if authType is oauth21.3.0

Kerberos Authentication

Kerberos authentication uses Kerberos tickets to authenticate with the Gravitino server.

Configuration in etc/catalog/gravitino.properties:

connector.name=gravitino
gravitino.metalake=metalake
gravitino.uri=http://localhost:8090

# Kerberos authentication with keytab
gravitino.client.authType=kerberos
gravitino.client.kerberos.principal=user@REALM
gravitino.client.kerberos.keytabFilePath=/path/to/user.keytab

Configuration properties:

PropertyDescriptionDefault valueRequiredSince version
gravitino.client.authTypeAuthentication type: simple, basic, oauth2, or kerberos(none)Yes (to enable Kerberos)1.3.0
gravitino.client.kerberos.principalKerberos principal(none)Yes if authType is kerberos1.3.0
gravitino.client.kerberos.keytabFilePathPath to keytab file(none)No (uses ticket cache if not specified)1.3.0

Example: Connecting to OAuth-Protected Gravitino Server

This example shows how to configure the Trino connector to connect to a Gravitino server protected by OAuth authentication.

1. Configure Gravitino server with OAuth (in conf/gravitino.conf):

gravitino.authenticators=oauth
gravitino.authenticator.oauth.serviceAudience=gravitino
gravitino.authenticator.oauth.defaultSignKey=<your-signing-key>
gravitino.authenticator.oauth.tokenPath=/oauth2/token
gravitino.authenticator.oauth.serverUri=http://localhost:8177

2. Configure Trino connector (in etc/catalog/gravitino.properties):

connector.name=gravitino
gravitino.metalake=my_metalake
gravitino.uri=http://localhost:8090

# OAuth2 authentication
gravitino.client.authType=oauth2
gravitino.client.oauth2.serverUri=http://localhost:8177
gravitino.client.oauth2.credential=test:test
gravitino.client.oauth2.path=oauth2/token
gravitino.client.oauth2.scope=test

3. Verify the connection:

SHOW CATALOGS;

Session Credential Forwarding

Setting gravitino.client.session.forwardUser=true with authType=simple creates a dedicated Gravitino client per Trino session user, so each user is visible in the Gravitino audit log instead of the shared gravitino.user.

Configuration:

connector.name=gravitino
gravitino.metalake=metalake
gravitino.uri=http://localhost:8090

gravitino.client.authType=simple
gravitino.client.session.forwardUser=true

Configuration properties:

PropertyDescriptionDefault valueRequiredSince version
gravitino.client.session.forwardUserWhen true with authType=simple, forwards the Trino session user to Gravitino per-queryfalseNo1.3.0
gravitino.client.session.cache.maxSizeMaximum number of per-user sessions to keep in the cache500No1.3.0
gravitino.client.session.cache.expireAfterAccessSecondsSeconds before an idle per-user session is evicted from the cache3600No1.3.0

Notes

  • The Gravitino server must be configured with the corresponding authentication mechanism enabled.
  • For OAuth2 authentication, ensure the OAuth2 server is accessible from the Trino coordinator and workers.
  • For Kerberos authentication, ensure the Kerberos configuration is properly set up on all Trino nodes.
  • Authentication configuration is passed through the gravitino.client.* prefix to the underlying Gravitino Java client.

See Also